kubernetes-StatefulSet

关于StatefulSet

  • 匹配Pod name(网络标识)的模式为:(statefulSet名称)-序号,比如上面个的示例:web-0,web-1,web-2

  • StatefulSet为每个Pod副本创建了一个DNS域名,这个域名的格式为: $(podname).(headless server
    name),也就是意味着服务间通过Pod域名通信而非Pod IP,因为当Pod所在Node发生故障时,Pod会漂移到其它Node上,Pod IP会发生变化,但是Pod域名不会有变化
    例如:在这里插入图片描述
    在这里插入图片描述

进入volume-test中,ping web-1.nginx(statefulSet的svc名字),能ping通.删除web-1后重新生成Pod web-1,进入volume-test中再次ping web-1.nginx仍能ping通.
在这里插入图片描述

  • StatefulSet使用Headless服务来控制Pod的域名,这个域名的FQDN为:(servicename).(namespace).svc.cluster.local,其中,"cluster.local"指的是集群的域名keyi.
    使用dig -t -A nginx.default.svc.cluster.local @10.244.0.24(core-dns的IP)
    获得core-dns的IP:在这里插入图片描述
    显示对应关系:
    在这里插入图片描述

  • 根据volumeClaimTemplates,为每个pod创建一个PVC,PVC的命名规则匹配模式:(volumeClaimTemplates.name)-比如上面的volumeMounts.name=www,Pod name=web-[0-2],因此创建出来的PVC是www-web0,www-web1,www-web2

  • 删除Pod不会删除其PVC,手动删除PVC将会自动删除pv

StatefulSet的启停顺序

  • 有序部署:部署StatefulSet时,如果有多个Pod副本,它们会被顺序的创建(从0-N-1)并且,在下一个Pod运行之前所有之前的Pod必须都是Running和Ready状态.
  • 有序删除:当Pod被删除时,它们被终止的顺序都是N-1到0
  • 有序扩展:当Pod执行扩展操作时,与部署一样,他前面的Pod必须都处于Running和Ready状态.

StatefulSet使用场景

  • 稳定的持久化存储,即Pod重新调度后还是能访问到相同的持久化数据,基于PVC实现.
  • 稳定的网络标识符,即Pod重新调度后其PodName和HostName不变.
  • 有序部署,有序扩展,基于init Containers来实现.
  • 有序收缩

删除PV和PVC

1.kubectl delete -f statefulset.yaml
2.kubectl delete pvc --all
3.进入节点(node1) 删除/nfs目录下的所有文件
pv即可用了.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值