首页 > 解决方案 > 如何在 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 从外部访问它们。

标签: kubernetesmediawikikubernetes-pod

解决方案


如果您想在 Kubernetes 集群上部署某个软件的多个实例,最好检查一下是否有它的helm图表。在您的情况下,答案是肯定的 - Mediawiki 有一个稳定的掌舵图

创建多个实例就像创建多个版本一样简单,例如:

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

要使用 Helm,您必须将其安装在本地机器和 k8s 集群上 - 遵循快速入门指南就足够了。


推荐阅读