有状态的控制器有以下几个特点
稳定,独特的网络标识符。 稳定,持久的存储。 有序,优雅的部署和扩展。 有序的自动滚动更新。
使用限制
StatefulSet是1.9之前的beta资源,在1.5之前的任何Kubernetes版本中都没有。 给定Pod的存储必须由PV根据请求进行配置storage class,或者由管理员预先配置。 删除和/或缩放StatefulSet将不会删除与StatefulSet关联的卷。这样做是为了确保数据安全,这通常比自动清除所有相关的StatefulSet资源更有价值。 StatefulSets目前要求HEADLESS负责Pod的网络身份。您有责任创建此服务。 删除StatefulSet时,StatefulSets不提供对pod终止的任何保证。要在StatefulSet中实现pod的有序和正常终止,可以在删除之前将StatefulSet缩减为0
组件
名为nginx的无头服务用于控制网络域。 StatefulSet,名为web,有一个Spec,表明nginx容器的3个副本将在唯一的Pod中启动。 该volumeClaimTemplates将使用提供稳定的存储PersistentVolumes由PersistentVolume置备供应。
下面我们来简单创建一个redis的state服务(未作主从配置)
创建PV(使用nfs方式或者local)这里使用nfs方式
[root@nlp-node1 3]# yum install nfs-utils rpcbind -y 已加载插件:fastestmirror Loading mirror speeds from cached hostfile * base: mirrors.aliyun.com * extras: mirrors.huaweicloud.com * updates: mirrors.huaweicloud.com 软件包 1:nfs-utils-1.3.0-0.61.el7.x86_64 已安装并且是最新版本 软件包 rpcbind-0.2.0-47.el7.x86_64 已安装并且是最新版本 无须任何处理 --------------------------------------------------- [root@nlp-node1 3]# vim /etc/exports [root@nlp-node1 3]# cat /etc/exports /kube_pv *(rw,sync,all_squash) [root@nlp-node1 3]# systemctl start nfs.service rpcbind.service [root@nlp-node1 3]# mkdir -pv /kube_pv mkdir: 已创建目录 "/kube_pv" [root@nlp-node1 3]# chown nfsnobody /kube_pv -R