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

如何在Kubernetes集群中创建Mediawiki的多个实例,kubernetes,mediawiki,kubernetes-pod,Kubernetes,Mediawiki,Kubernetes Pod,我将在Kubernetes集群上部署多个Mediawiki实例。 在我的例子中,用于DB(MySQL)的YAML deploymentfile按预期工作,用于Mediawiki的deploymentfile按预期部署尽可能多的POD,但即使我为这种情况创建了服务,我也无法从集群外部访问它们 如果我尝试创建一个Mediawiki pod和一个从集群外部访问它的服务,它就会正常工作。如果我尝试为Mediawiki创建一个与MySQL相同的deploymentfile,它会创建POD和所需的服务,但无

我将在Kubernetes集群上部署多个Mediawiki实例。 在我的例子中,用于DB(MySQL)的YAML deploymentfile按预期工作,用于Mediawiki的deploymentfile按预期部署尽可能多的POD,但即使我为这种情况创建了服务,我也无法从集群外部访问它们

如果我尝试创建一个Mediawiki pod和一个从集群外部访问它的服务,它就会正常工作。如果我尝试为Mediawiki创建一个与MySQL相同的deploymentfile,它会创建POD和所需的服务,但无法从分配给它的externel 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
这是服务定义文件:

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的多个实例,并可以使用externel IP从外部访问它们。

如果您想在Kubernetes集群上部署某个软件的多个实例,最好查看是否有相关图表。 在你的情况下,答案是肯定的——有一个问题

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

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

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

如果您想在Kubernetes群集上部署某个软件的多个实例,最好查看是否有相关图表。 在你的情况下,答案是肯定的——有一个问题

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

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

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

如果您查看两种情况下的
kubectl Descripte service mediawiki服务
,我希望您会看到在单pod情况下,有一个包含单个IP地址的
端点:
列表(pod是,但这是一个实现细节)但在部署案例中,它说的是

您的服务仅匹配同时具有
名称
应用
标签的POD:

apiVersion: v1
kind: Service
spec:
 selector:
  name: mediawiki-pod
  app: mediawiki
apiVersion: apps/v1
kind: Deployment
spec:
  template:
    metadata:
      labels:
        app: mediawiki
但您的部署部署的POD只有
app
标签:

apiVersion: v1
kind: Service
spec:
 selector:
  name: mediawiki-pod
  app: mediawiki
apiVersion: apps/v1
kind: Deployment
spec:
  template:
    metadata:
      labels:
        app: mediawiki

因此,在该特定点(部署模板中的标签;在顶层添加标签也不会有什么影响,但这个嵌入点很重要)您需要添加第二个标签
name:mediawiki pod

如果您在两种情况下查看
kubectl description service mediawiki service
,我希望您会看到在单pod的情况下,有一个
端点:
列表,其中包含一个IP地址(pod的,但这是一个实现细节)但在部署案例中,它会显示

您的服务仅匹配同时具有
名称
应用
标签的POD:

apiVersion: v1
kind: Service
spec:
 selector:
  name: mediawiki-pod
  app: mediawiki
apiVersion: apps/v1
kind: Deployment
spec:
  template:
    metadata:
      labels:
        app: mediawiki
但您的部署部署的POD只有
app
标签:

apiVersion: v1
kind: Service
spec:
 selector:
  name: mediawiki-pod
  app: mediawiki
apiVersion: apps/v1
kind: Deployment
spec:
  template:
    metadata:
      labels:
        app: mediawiki
因此,在该特定点(部署模板内的标签;同时在顶层添加标签不会有任何影响,但这个嵌入点很重要),您需要添加第二个标签
name:mediawiki pod