【发布时间】:2021-09-08 10:05:38
【问题描述】:
我有一个有 3 个 pod 的 StatefulSet。第一个分配给主角色,其余的具有只读副本角色。
redis-0 (master)
redis-1 (replica)
redis-2 (replica)
如何创建仅匹配 pod redis-1 和 redis-2 的 Kubernetes 服务?基本上,我只想为充当副本的 pod 提供服务?
从逻辑上讲,我想要的是选择 STS 中的每个 pod 除了第一个。在伪代码中:
selector: app=redis-sts && statefulset.kubernetes.io/pod-name!=redis-0
或者,选择所有相关的 pod 也是可行的。再次在伪代码中:
selector: statefulset.kubernetes.io/pod-name=redis-1 || statefulset.kubernetes.io/pod-name=redis-2
这里是定义了选择器和服务的相关 YAML。 Full YAML.
apiVersion: v1
kind: Service
metadata:
name: redis-service
spec:
ports:
- port: 6379
clusterIP: None
selector:
app: redis-sts
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: redis
spec:
selector:
matchLabels:
app: redis-sts
serviceName: redis-service
replicas: 3
template:
metadata:
labels:
app: redis-sts
spec:
# ...
【问题讨论】:
标签: kubernetes