首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >StatefulSet Pods子集的Kubernetes服务

StatefulSet Pods子集的Kubernetes服务
EN

Stack Overflow用户
提问于 2021-06-24 23:29:17
回答 3查看 711关注 0票数 5

我有一个有三个豆荚的StatefulSet。第一个角色被分配给主角色,其余角色有一个读副本角色。

代码语言:javascript
复制
redis-0 (master)
redis-1 (replica)
redis-2 (replica)

如何创建一个只与redis-1redis-2匹配的Kubernetes服务?基本上,我想要的服务,只指向作为复制品的豆荚?

从逻辑上讲,我想要的是选择STS中的每一个吊舱,除了第一个。伪码:

代码语言:javascript
复制
selector: app=redis-sts && statefulset.kubernetes.io/pod-name!=redis-0

另外,选择所有相关的吊舱也是可行的。同样在psuedocode中:

代码语言:javascript
复制
selector: statefulset.kubernetes.io/pod-name=redis-1 || statefulset.kubernetes.io/pod-name=redis-2

这里是相关的YAML,定义了选择器和服务。全YAML

代码语言:javascript
复制
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:
# ...
EN

回答 3

Stack Overflow用户

发布于 2021-06-25 02:47:10

您可以使用redis状态集的豆荚名称标签来创建服务,以访问特定的读取副本荚。

代码语言:javascript
复制
apiVersion: v1
kind: Service
metadata:
  name: redis-1
spec:
  type: LoadBalancer
  externalTrafficPolicy: Local
  selector:
    statefulset.kubernetes.io/pod-name: redis-1
  ports:
  - protocol: TCP
    port: 6379
    targetPort: 6379

然后使用豆荚的服务名称来访问特定的吊舱。

externalTrafficPolicy:本地只将流量代理到具有pod实例的节点。

票数 5
EN

Stack Overflow用户

发布于 2021-06-25 04:38:57

1.21中的服务v1 API不支持基于较新“集”LabelSelector (matchLabelsmatchExpressions)

您可以将一个控制器可应用标签写入有状态集,然后满足服务选择器的简单相等逻辑。可能已经有Redis操作符在做这种事情了。

这个有状态集标签问题的一个想法是使用具有pod写访问权限的initContainer添加标签。

票数 1
EN

Stack Overflow用户

发布于 2021-06-25 07:23:03

我建议不要依赖Kubernetes服务,就像你的主荚被杀死或重新启动一样,read副本可以随时在redis集群中得到更改。

https://github.com/harsh4870/Redis-Rejson-HA-Helm-Chart

下面是舵图,它部署Redis,就像1、主2读取副本一样,但使用sentinel

您的节点或python代码必须访问Redis的服务,作为回报,redis哨兵将为您提供Mater和从副本的所有IP地址。

使用该IP,您可以随时根据需要连接到读取副本和主服务器。

如果您的集群重新启动或POD重新启动,主读取副本可能会随着时间的推移而改变。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68123751

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档