目录
无状态服务? RC/RS、Deployment、DaemonSet都是管理无状态的服务,它们所管理的Pod的IP、名字,启停顺序等都是随机的。个体对整体无影响,所有 pod都是共用一个数据卷的,部署的tomcat就是无状态的服务,tomcat被删除,在启动一个新的tomcat,加入到集群即可,跟tomcat的名字无关。
StatefulSet(有状态集)常用于部署有状态的且需要有序启动的应用程序。
StatefulSet主要用于管理有状态应用程序的工作负载API对象,它所管理的 Pod的名称不能随意变化。比如在生产环境中,可以部署ElasticSearch集群、MongoDB集群或者需要持久化的 RabbitMQ集群、MySQL集群、Redis集群、Kafka集群和ZooKeeper集群等。
而StatefulSet创建的Pod一般使用Headless Service(无头服务)进行通信,和普通的Service 的区别在于Headless Service没有 clusterlP,它使用的是Endpoint进行互相通信。
FQDN : Fully Qualified Domain Name Headless一般的格式为: statefulSetName-{0..N-1}.serviceName.namespace.svc.cluster.local。
说明: serviceName为 Headless Service的名字。 0..N-1为Pod所在的序号,从0开始到N-1。 statefulSetName为 StatefulSet,的名字。 namespac