• YueShi
    2022-08-22 来自北京
    好奇redis的主从,哨兵,cluster都是怎么在sts上实现的,打算抽个时间深入的学习一下。 btw,越学习越能理解到 老师讲的“云原生”的概念了

    作者回复: Redis的主从部署直接用StatefulSet来实现还是很麻烦的,这个可能用operator来做会比较简单。

    
    7
  • 摊牌
    2022-09-01 来自上海
    老师,既然statefulSet对象管理的pod可以直接通过域名指定来访问,那可不可以 不给statefulSet对象创建service

    作者回复: 不行,域名必须通过Service对象才能实现,可以自己试试没有Service对象会怎么样。

    共 3 条评论
    6
  • Bachue Zhou
    2022-11-18 来自北京
    我感觉 statefulset 起到的作用相比于普通的 systemd 差不多,特别是对于数据库这种真正有状态的服务而言,实例运行的节点通常是固定的,因为对硬件的要求要比普通的节点高很多,且在生产环境不可能用任何基于网络的文件系统来存储数据库文件。由于节点固定,所以 ip 也就固定,没必要非用域名来访问,而且现在有些服务本来也实现了服务发现,客户端连接集群的任意实例都可以获取完整集群节点的 ip 就可以直连,改用域名反而不太直接,statefulset 也不能让主从配置或是sharding配置变得更方便。

    作者回复: StatefulSet的功能还是比较弱的,直接用还不是很方便,所以后来才出了operator等等,但StatefulSet无疑是基础。

    
    5
  • Lorry
    2023-02-01 来自北京
    Pod负责服务,Job负责调度, Daemon/Deployment负责无状态部署,StatefulSet负责状态部署, Service负责四层访问(负载均衡、IP分配、域名访问),Ingress负责应用层(7层)访问(路由规则), PVC/PV负责可靠性存储。 K8s提供的解决方案基本就是代表了微服务部署的最佳实践了。

    作者回复: great.

    
    4
  • 摊牌
    2022-09-01 来自上海
    有了 StatefulSet 提供的固定名字和启动顺序,应用还需要怎么做才能实现主从等依赖关系呢? 答:我理解是采用StatefulSet对象管理多个(2n+1)有状态pod的情形下,应该在有状态应用中基于pod的固定名字进行实例通信交互,比如redis集群中节点之间通过Gossip协议进行广播自身的状态信息,从而完成实例之间依赖关系,保证集群的可用性

    作者回复: good

    
    4
  • dao
    2022-09-16 来自北京
    作业: 1. 这个应该具体应用具体设置吧。比如 Redis ,需要给 主、从 实例加载不同的 conf 。以我目前的 kube 知识我不知道如何给不同的副本使用不同的配置文件。我只能使用临时命令实现主从 kubectl exec -it redis-pv-sts-1 -- redis-cli replicaof redis-pv-sts-0.redis-svc 6379 。 2. 若不使用“volumeClaimTemplates”内嵌定义 PVC,那么可能的后果就是,多个副本挂载同一个网络存储设备,这可能会导致数据丢失。

    作者回复: 1. 用StatefulSet实现主从还是比较麻烦的,可以根据hostname,在镜像里编写脚本来启动不同的逻辑。 2.正确。

    
    3
  • 陈斯佳
    2022-12-14 来自上海
    老师 能讲解一下什么是operator吗?

    作者回复: operator比较复杂,可能在我们这个课里不会细讲了。

    
    2
  • rubys_
    2022-10-25 来自上海
    在我的虚拟机上 ping redis-sts-1.redis-svc 失败,一种解决方案是,kubectl get pod -o wide -n kube-system 找到 coredns 的 pod,然后删除那两个 pod,比如 kubectl delete pod coredns-65c54cc984-qlkt9 -n kube-system。等待 k8s 重新创建 coredns 的 pod 就可以 ping 了

    作者回复: 有的时候coredns会有错误,可以删除重启,或者用rollout restart。

    
    2
  • 小宝
    2022-08-23 来自北京
    “访问 StatefulSet 应该使用每个 Pod 的单独域名,形式是“Pod 名. 服务名”,不应该使用 Service 的负载均衡功能。” 请教老师,通常会在StatefulSet上创建一个Headless Service吧,作为pod的负载均衡。

    作者回复: good

    
    2
  • 泽
    2022-12-09 来自上海
    老师 求您个事 ,讲讲helm吧,迫切想学

    作者回复: 我对helm了解不是太深,简单讲讲倒是可以,但可能只是大概的介绍,有时间会写一篇。

    共 4 条评论
    1