千家信息网

Kubernetes服务中StatefulSets有什么用

发表于:2024-11-22 作者:千家信息网编辑
千家信息网最后更新 2024年11月22日,小编给大家分享一下Kubernetes服务中StatefulSets有什么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
千家信息网最后更新 2024年11月22日Kubernetes服务中StatefulSets有什么用

小编给大家分享一下Kubernetes服务中StatefulSets有什么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

StatefulSets在v1.5时还是个beta特性,它取代了v1.4的PetSets特性。PetSets的用户可以参考v1.5的升级指导,将正在运行的PeetSets升级到StatefulSets。
  StatefulSet是一个给Pod提供唯一标志的控制器,它可以保证部署和扩展的顺序。

使用StatefulSet

  当应用有以下任意要求时,StatefulSet的价值就体现出来了。
   ● 稳定的、唯一的网络标识。
   ● 稳定的、持久化的存储。
   ● 有序的、优雅的部署和扩展。
   ● 有序的、优雅的删除和停止。
  上面提到的点中,在Pod调度时,稳定性和持久化是同一个意思。如果一个应用不需要任何稳定的标识或顺序的部署、删除和扩展,那么你应该使用提供无状态备份的控制器来部署你的应用。诸如Deployment或者ReplicaSet可能更适合你的无状态服务需求。

限制

   ● StatefulSet还是beta版本,Kubernetes v1.5之前不可用。
   ● 和所有的alpha/beta资源一样,可以将--runtime-config选项传递给apiserver,来禁止StatefulSet。
   ● 给定Pod的存储必须是:基于请求存储等级(Storage Class)的PersistentVolume Provisioner,或者是由管理员预先配置。
   ● 删除和(或)减少StatefulSet副本,不会删除StatefulSet相关的卷。这样做是为了保证数据安全,比自动的清除StatefulSet相关资源更有价值。    ● 当前StatefulSet需要Headless服务来负责Pod的网络一致性。你需要创建该服务。
   ● 当前,更新已经存在的StatefulSet需要手动执行。

组件

  下面的示例演示了StatefulSet的组件。
   ● 一个Headless服务,名为nginx,用来控制网络域。
   ● StatefulSet,名为web,在同一个Pod中起3个nginx容器的副本。
   ● volumeClaimTemplates使用PV供应商的PV来提供稳定的存储。

---apiVersion: v1kind: Servicemetadata:  name: nginx  labels:    app: nginxspec:  ports:  - port: 80    name: web  clusterIP: None  selector:    app: nginx---apiVersion: apps/v1beta1kind: StatefulSetmetadata:  name: webspec:  serviceName: "nginx"  replicas: 3  template:    metadata:      labels:        app: nginx    spec:      terminationGracePeriodSeconds: 10      containers:      - name: nginx        image: gcr.io/google_containers/nginx-slim:0.8        ports:        - containerPort: 80          name: web        volumeMounts:        - name: www          mountPath: /usr/share/nginx/html  volumeClaimTemplates:  - metadata:      name: www      annotations:        volume.beta.kubernetes.io/storage-class: anything    spec:      accessModes: [ "ReadWriteOnce" ]      resources:        requests:          storage: 1Gi

Pod一致性

  StatefulSet Pod有着唯一的一致性,该一致性包含次序(启动和停止次序)、稳定的网络一致性,和稳定的网络。该一致性和Pod紧密相关,无论Pod被调度到哪个node节点上。

次序索引

  对于有N个副本的StatefulSet,StatefulSet的每个Pod都被分配了一个数字序号,序号在[0,N)的范围内,并且在Set中是唯一的。

稳定的网络ID

  StatefulSet中每个Pod都从StatefulSet的名称和Pod的序号派生其主机名。组成的hostname的模式为$(statefulset名称)-$(序号)。上面的例子会创建名为web-0,web-1,web-2。StatefulSet可以以使用Headless服务来控制Pod的域,这个域使用的格式为:$(service name).$(namespace).svc.cluster.local,其中,"cluster.local"指的是集群域。Pod被创建后,每个Pod都会得到一个匹配的DNS子域,格式为$(podname).$(governing service domain),其中的"governing service"是在StatefulSet中通过serviceName字段来定义的。
  这里有几个示例,可以展示StatefulSet的Pod的DNS组成。

Cluster DomainService (ns/name)StatefulSet (ns/name)StatefulSet DomainPod DNSPod Hostname
cluster.localdefault/nginxdefault/webnginx.default.svc.cluster.localweb-{0..N-1}.nginx.default.svc.cluster.localweb-{0..N-1}
cluster.localfoo/nginxfoo/webnginx.foo.svc.cluster.localweb-{0..N-1}.nginx.foo.svc.cluster.localweb-{0..N-1}
kube.localfoo/nginxfoo/webnginx.foo.svc.kube.localweb-{0..N-1}.nginx.foo.svc.kube.localweb-{0..N-1}
  注意:除非另外的配置,集群域就会被设置为cluster.local




稳定的存储

  Kubernetes为每个VolumeClaimTemplate创建一个PV。在上面的nginx例子中,每个Pod会得到一个PV,该PV的存储等级(storagee class)为anything,大小为1Gb。当Pod被调度到其他node节点上时,volumeMounts会重新映射对应的PVC。注意,当Pod或者StatefulSet被删除时,对应的PV和PVC不会被删除,这个删除操作必须手动来执行。

部署和扩展

   ● 对于拥有N个拷贝的StatefulSet,当部署Pod时,它们会被顺序地创建(从0到N-1)。
   ● 当Pod被删除时,它们被终止的顺序是从N-1到0。
   ● 当对Pod执行扩展操作时,它前面的Pod必须都处于Running和Ready状态。
   ● 当Pod被终止时,它所有的successors都必须被完全地关闭。
  不应该将StatefulSet的pod.Spec.TerminationGracePeriodSeconds值设置为0,因为该操作不安全,强烈不建议使用。若需要更深层次的解释,请参考强制删除StatefulSet Pod。
  当创建了上面的nginx示例后,会按顺序部署三个Pod,名字依次为web-0、web-1和web-2。web--1在web-0变为Running and Ready之后才会再部署,同理,web-2也会等web-1变为Running and Ready状态后才部署。如果在web-1变为Running and Ready之后,但web-2还没有启动之前,此时web-0运行失败了,那么直到web-0再次成功启动并变为Running and Ready之前,web-2都不会启动。
  如果用户希望改变上面例子中Pod的个数,比如修改replicas=1,那么web-2首先被终止。直到web-2完全被关闭和删除后,web-1才会被终止。如果在web-2被终止和完全关闭后,但web-1还没有被终止之前,此时web-0运行出错了,那么直到web-0再次变为Running and Ready状态之后,web-1才会被终止。

以上是"Kubernetes服务中StatefulSets有什么用"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

服务 一致 一致性 网络 存储 状态 顺序 序号 面的 控制 例子 副本 次序 示例 篇文章 参考 应用 调度 运行 有序 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 口碑好戴尔服务器成交价 redis数据库 扩展 学网络运维与网络安全怎么样 服务器文件夹上面有把锁怎么去掉 佛山河南县app软件开发 政府网站网络安全检查 奉化安卓软件开发项目 网络安全 检查 通知 基于ios的软件开发 网络安全2020年手抄报 刚毕业想学软件开发可以吗 江苏国焱互联网科技有限公司电话 oracle数据库查询所有员工 下列哪个国家的网络安全 护苗网络安全主题班会课件 维控科技和工业互联网 河南诚至网络技术有限公司 远程桌面如何修改服务器id 投资模拟器软件开发资格证图 做化工软件开发的学校 淘宝云服务器怎么登录 聚鼎网络技术有限公司 网络安全法立法目的 陈复仁友基网络技术有限公司 科技部工业互联网专项 计算机网络技术专业书籍百科 武汉服务器托管 无锡联想服务器维修点电话热线 中国国家的网络安全 网络安全检查情况统计表
0