Kubernetes 与POD一起自动创建服务

Kubernetes 与POD一起自动创建服务,kubernetes,Kubernetes,我有一个Kubernetes场景,我需要部署3个Redis服务器吊舱,每个吊舱都需要公开一个ClusterIP服务。有点像 再聚类1->RedisPod1 重新聚类2->RedisPod2 重新聚类P3->RedisPod3 我有如下的部署计划,但正如您所看到的,它是手动创建ClusterIP服务,并将其中的一个绑定到所有POD 有没有办法设置一个部署计划,这样它就可以用POD创建相同数量的服务 我检查了一下,但无法确定是否已经存在某些内容 apiVersion: extensions/v1be

我有一个Kubernetes场景,我需要部署3个Redis服务器吊舱,每个吊舱都需要公开一个ClusterIP服务。有点像

再聚类1->RedisPod1 重新聚类2->RedisPod2 重新聚类P3->RedisPod3 我有如下的部署计划,但正如您所看到的,它是手动创建ClusterIP服务,并将其中的一个绑定到所有POD

有没有办法设置一个部署计划,这样它就可以用POD创建相同数量的服务

我检查了一下,但无法确定是否已经存在某些内容

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: redisharedis
spec:
  replicas: 3
  template:
    metadata:
      labels:
        app: redisharedis
    spec:
      containers:
        - name: redisharedis
          image: aozdemir/redisharedis:v6
          resources:
            limits:
              cpu: "1"
              memory: "800Mi"
            requests:
              cpu: "0.1"
              memory: "200Mi"
          ports:
            - containerPort: 6379


---
apiVersion: v1
kind: Service
metadata:
  name: redisharedis-service
  labels:
    name: redisharedis-service
spec:
  ports:
    - port: 6379
      targetPort: 6379
      protocol: TCP
  selector:
    app: redisharedis
  type: ClusterIP

如果您将redis集群部署为Statefulset而不是部署,则可以实现这一点。在Kubernetes 1.9+中,StatefulSet会自动将Pod名称作为标签添加到每个Pod上,因此您可以按如下方式启用每个Pod的服务:

apiVersion: apps/v1beta2
kind: StatefulSet
metadata:
  annotations:
    service-per-pod-label: "statefulset.kubernetes.io/pod-name"
    service-per-pod-ports: "80:8080"
您需要在kubernetes集群中安装MetaController,以便为每个pod安装一个服务。有关详细说明,请参阅以下链接:


如果您将redis集群部署为Statefulset而不是部署,则可以实现这一点。在Kubernetes 1.9+中,StatefulSet会自动将Pod名称作为标签添加到每个Pod上,因此您可以按如下方式启用每个Pod的服务:

apiVersion: apps/v1beta2
kind: StatefulSet
metadata:
  annotations:
    service-per-pod-label: "statefulset.kubernetes.io/pod-name"
    service-per-pod-ports: "80:8080"
您需要在kubernetes集群中安装MetaController,以便为每个pod安装一个服务。有关详细说明,请参阅以下链接: