如何在Kubernetes集群中创建Mediawiki的多个实例

时间:2019-05-10 11:51:57

标签: kubernetes mediawiki kubernetes-pod

我要在我的Kubernetes集群上部署多个Mediawiki实例。 在我的情况下,数据库(MySQL)的YAML部署文件可以正常工作,Mediawiki的部署文件可以按预期部署尽可能多的Pod,但是即使我为此创建了服务,也无法从集群外部访问它们情况。

如果我尝试创建一个MediaWiki pod以及一个从集群外部访问它的服务,它将正常工作。如果我尝试为Mediawiki创建一个与MySQL相等的部署文件,它会创建pod和所需的服务,但是不能从分配给它的externel-IP上访问它。

我的Mediawiki部署文件:

handleClickDialogOpen = userid => {
    this.setState({
        open: true,
        UserID: userid,
      },
      () => console.log(this.state),
    );
  };

这是pod定义文件:

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

这是服务定义文件:

apiVersion: v1
kind: Pod
metadata:
 name: mediawiki-pod
 labels:
  name: mediawiki-pod
  app: mediawiki
spec:
 containers:
 - name: mediawiki
   image: mediawiki
   ports:
   - containerPort: 80

准确的想法应该是我可以在群集上部署Mediawiki的多个实例,并可以使用externel-IP从外部访问它们。

2 个答案:

答案 0 :(得分:0)

如果您想在Kubernetes集群上部署某个软件的多个实例,最好检查一下是否有一个helm图表。 对于您来说,答案是肯定的-有stable helm chart for Mediawiki

创建多个实例与创建多个版本一样容易,例如:

helm install --name wiki1 stable/mediawiki
helm install --name wiki2 stable/mediawiki
helm install --name wiki3 stable/mediawiki

要使用Helm,您必须将其安装在本地计算机和k8s群集上-遵循quick start guide就足够了。

答案 1 :(得分:0)

如果您同时在两种情况下查看kubectl describe service mediawiki-service,我希望您会看到在单容器情况下,有一个Endpoints:列表,其中包含一个IP地址(容器的,但是实施细节),但在部署情况下则为<none>

您的服务仅匹配同时带有nameapp标签的广告连播:

apiVersion: v1
kind: Service
spec:
 selector:
  name: mediawiki-pod
  app: mediawiki

但是您的部署所部署的Pod仅带有app标签:

apiVersion: apps/v1
kind: Deployment
spec:
  template:
    metadata:
      labels:
        app: mediawiki

因此,在该特定点(部署模板中的标签;也可以在顶层添加它们没有影响,但是这一嵌入点很重要),您需要添加第二个标签name: mediawiki-pod