kubernetes - 如何在 Kubernetes 集群中创建多个 Mediawiki 实例
问题描述
我即将在我的 Kubernetes 集群上部署多个 Mediawiki 实例。在我的情况下,数据库(MySQL)的 YAML 部署文件按预期工作,Mediawiki 的部署文件部署了预期的尽可能多的 pod,但即使我为此创建服务,我也无法从集群外部访问它们案子。
如果我尝试创建一个单一的 Mediawiki pod 和一个服务来从集群外部访问它,它会正常工作。如果我尝试为 Mediawiki 创建一个与 MySQL 相同的部署文件,它会创建 pod 和所需的服务,但无法从分配给它的外部 IP 访问它。
我的 Mediawiki 部署文件:
apiVersion: v1
kind: Service
metadata:
name: mediawiki-service
labels:
name: mediawiki-service
app: mediawiki
spec:
type: LoadBalancer
ports:
- port: 80
targetPort: 80
selector:
name: mediawiki-pod
app: mediawiki
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: mediawiki
spec:
replicas: 6
selector:
matchLabels:
app: mediawiki
strategy:
type: Recreate
template:
metadata:
labels:
app: mediawiki
spec:
containers:
- image: mediawiki
name: mediawiki
ports:
- containerPort: 80
name: mediawiki
这是 pod 定义文件:
apiVersion: v1
kind: Pod
metadata:
name: mediawiki-pod
labels:
name: mediawiki-pod
app: mediawiki
spec:
containers:
- name: mediawiki
image: mediawiki
ports:
- containerPort: 80
这是服务定义文件:
apiVersion: v1
kind: Service
metadata:
name: mediawiki-service
labels:
name: mediawiki-service
app: mediawiki
spec:
type: LoadBalancer
ports:
- port: 80
targetPort: 80
selector:
name: mediawiki-pod
准确的结果应该是我可以在我的集群上部署多个 Mediawiki 实例,并且可以使用外部 IP 从外部访问它们。
解决方案
如果您想在 Kubernetes 集群上部署某个软件的多个实例,最好检查一下是否有它的helm图表。在您的情况下,答案是肯定的 - Mediawiki 有一个稳定的掌舵图。
创建多个实例就像创建多个版本一样简单,例如:
helm install --name wiki1 stable/mediawiki
helm install --name wiki2 stable/mediawiki
helm install --name wiki3 stable/mediawiki
要使用 Helm,您必须将其安装在本地机器和 k8s 集群上 - 遵循快速入门指南就足够了。
推荐阅读
- python - 抛出异常使用的字符串对象不可调用,django
- hyperledger-fabric - Hyperledger Composer - 查询日期时间参数
- c# - Nancy Self 主机获取所有已连接客户端的 IP 列表
- ruby-on-rails - 如何使用 %20 编码在 Ruby 中形成 URI
- python - 如何使用 python 中的 lambda 函数在通过 S3 连接的 AWS 雅典娜中进行查询
- java - Pentaho 在同一个 jar 中启动一个 java 程序
- .htaccess - htaccess 重写参数
- java - 不显示来自 base64_encode 的图像编码
- c# - 在listview加载xamarin表单之前如何使用活动指示器
- angular - 如果用户登录,Angular 5隐藏导航元素