• Kubernetes学习笔记-StatefulSet:部署有状态的多副本应用(3)20220626


    在StatefulSet中发现伙伴节点
    介绍SRV

    SRV记录用来指向提供指定服务的服务器的主机名和端口号。kubernetes通过一个headless service创建SRV记录指向pod的主机名
    通过DNS实现伙伴彼此发现
    原始的数据存储还不是集群级别的,每个数据存储节点都是完全独立于其它的节点的,他们彼此之间没有通信
    客户端通过kubia-pubilc Service连接你的数据存储服务,并且会达到集群里随机的一个节点。集群可以存储多条数据项,但是客户端当前却不能看到所有的数据项。因为服务把请求随机的送达一个pod,所以若客户端想获取所有pod的数据,必须发送很多次请求,一直到他的请求发送到所有的pod为止。
    可以通过让节点返回所有集群节点数据的方式来改进这个行为。为了达到这个目的,节点需要能找到它所有的伙伴节点,可以使用Statefulset和SRV记录来实现这个功能
    更新StatefulSet
    $kubectl edit statefulset kubia
    StatefulSet如何处理节点失效
    之前讲到kubernetes必须完全保质期:一个有状态的pod在创建它的代替之前已经不再运行。因为一个StatefulSet要保证不会有两个拥有相同标记和存储的pod同时运行,当一个节点似乎失效时,StatefulSet要明确知道一个pod不再运行之前,它不能或不应该创建一个替换的pod
    手动删除pod
    1)正常删除$kubectl delete po kubia-0
    2)强制删除$kubectl delete po kubia-0
    - -force - -grace-period 0
    - 需要同时使用- -force 和- -grace-period 0两个选项
    - 警告:除非你确认节点不再运行或不会再可以访问(永远不会再可以访问)否则不要强制删除有状态的pod


    小结
    给副本pod配置单独的存储
    给一个pod提供稳定的标识
    创建一个StatefulSet,并且配置一个相关的headless控制服务
    扩缩容、更新statefulset
    通过dns发现statefulset的其他成员
    通过其他成员的主机名与之建立连接
    强制删除有状态的pod

  • 相关阅读:
    【八】Linux成神之路
    ASP.NET的WebService跨域CORS问题解决方案
    leetcode做题笔记131. 分割回文串
    RabbitMQ 如何实现延迟队列?
    noip十连测day5-狗
    洛谷-P7910 [CSP-J 2021]-插入排序(详细讲解)
    MFC 使用 Imm 类库实现输入法修改输入模式的技术文档
    使用Redis源码探究字符串的实现
    PDF文件转换为图片
    四、PL/SQL程序控制语句
  • 原文地址:https://blog.csdn.net/wwxsoft/article/details/125468412