我有一个Kubernetes场景,我将需要部署3个Redis服务器(荚),并且每个服务器都必须具有ClusterIP服务。像这样的东西
我有如下的部署计划,但是您可以看到它正在手动创建ClusterIP服务,并将其中的一个绑定到所有pod。
是否有任何方法可以设置部署计划,它将与Pods创建相同数量的服务?
我检查了deployments和replica sets,但无法确定是否已经存在某些东西。
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
答案 0 :(得分:2)
如果您将Redis集群部署为KEEP FIRST/LAST
而不是Statefulset
,则可以这样做。在Kubernetes 1.9+中,StatefulSet自动在其每个Pod上添加Pod名称作为标签,因此您可以像这样启用Service-Per-Pod:
deployment
您需要在kubernetes集群中安装apiVersion: apps/v1beta2
kind: StatefulSet
metadata:
annotations:
service-per-pod-label: "statefulset.kubernetes.io/pod-name"
service-per-pod-ports: "80:8080"
才能为每个Pod安装一项服务。请参考以下链接以获取详细说明:
https://github.com/GoogleCloudPlatform/metacontroller/tree/master/examples/service-per-pod