我有一个Kubernetes场景,我将需要部署3个Redis服务器(pod),每个都需要使用ClusterIP服务公开。就像是;
RedisClusterIP1 - > RedisPod1
RedisClusterIP2 - > RedisPod2
RedisClusterIP3 - > RedisPod3
我有如下的部署计划,但正如您所看到的那样,它是手动创建ClusterIP服务,并将其中的一个绑定到所有pod。
有没有办法设置部署计划,那么它将与Pods创建相同数量的服务?
我检查了部署和副本集,但无法确定是否存在某些内容。
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而不是deployment。在Kubernetes 1.9+中,StatefulSet会自动将Pod名称添加为其每个Pod上的标签,因此您可以像这样启用Service-Per-Pod:
apiVersion: apps/v1beta2
kind: StatefulSet
metadata:
annotations:
service-per-pod-label: "statefulset.kubernetes.io/pod-name"
service-per-pod-ports: "80:8080"
您需要MetaController在kubernetes集群中安装以便为每个pod安装一个服务。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。