有状态 高级设置升级方式 StatefulSet的另外一个差异点就是升级方式和Deployment不同,(升级方式需要点开工作负载的高级设置): 1、删除升级:如果设置StatefulSet的升级方式为删除升级,那么我们全量替换升级StatefulSet时,全量替换更新的内容在我们重新部署Pods前是不会生效的。 2、滚动升级(不推荐这种升级方式):如果设置StatefulSet的升级方式为滚动升级,那么我们全量替换升级StatefulSet时,k8s会自动帮我们删除重建StatefulSet的每一个Pod,此时有一个可选的参数Partition。一般建议不设置Partition。 以下场景可以设置Partition:执行预发布 执行金丝雀更新 执行按阶段的更新。 Partition含义:只有序号大于或等于partition值时, Pod 将被删除重建,即序号小于partition值,Pod会维持原状不更新。 partition默认值为0,意味着所有的Pod都会被删除重建(序号的含义:假设StatefulSet有3个副本,即对应三个Pod,那么StatefulSet的这三个Pod会依次命名为0, 1, 2号,这里的编号即是序号)。 序号小于partition的Pod不会被升级,即使手动删除该Pod,重新创建出来的也是旧版本的Pod。 服务名称 强烈建议创建有状态工作负载的同时创建Headless服务,同时创建有状态工作负载和服务时可以忽略这个参数 。这个参数仅对于分开创建有状态工作负载和服务的用户有效 如果分开创建有状态工作负载和服务,那么请务必设置这个参数,并且后续创建服务时,服务名称必须和这个参数保持一致。