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