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

你可能感兴趣的:(学习笔记,kubernetes,docker,java)