K8S点滴

关于sts

  • headless service

    k8s总的来说有五种控制器,deployment statefulset damenset jon cronjob,而statefulset(后称sts)是适用于有状态的服务调度,如常见的分布式服务,elasticsearch、etcd,mysql主从等,会需要有固定的启动顺序,或数据要在固定pod,sts便提供了这样的能力。

    而对于常见的分布式服务配置文件来说,如es,会需要在其中填入节点ip,而pod ip又是会变化的,那么如何解决这个问题呢,如果使用serivice的话,确实可以作为一种域名管理的方式来解决ip变化问题,但是service是通过kube-proxy管理的,访问service会通过kube-proxy的服务均衡最后获得一个可用的节点ip,这样就没办法将所有节点放入配置文件了,解决方法便是使用headless service(无头服务)。

    headless service和普通service的区别是,headless service是clusterIP属性为None的一个service服务,当clusterIP为None时kube-proxy便不会处理而是直接返回一组endpoints,即所有pod的ip,这样就解决了ip变化的问题