Kubernetes详解(四十五)——statefulset控制器原理

今天继续给大家介绍Linux运维相关知识,本文主要内容是statefulset控制器原理。

一、statefulset简介

在之前的文章中,我们介绍过,Kubernetes集群中的Pod是无状态的,为了满足Pod节点对存储的需求,我们可以为Pod节点挂载一个Volume卷。但是,如果Pod发生故障而以外退出后,尽管Kubernetes集群可以重新启动一个Pod,并且该Pod也会重新申请Volume作为自己的存储空间。但是这并不能保证Pod所申请的新的存储空间是其之前所申请的存储空间,这样之前所存储的数据也就无法继续使用了。
为了解决这一问题,我们需要引入一种持久化有状态的解决方案,这就是Kubernetes集群中的StatefulSet控制器。StatefulSet控制器主要有以下3个特点:
1、稳定的持久化存储。 即Pod在被删除重建后,还能够访问到相同的持久化存储资源。
2、稳定的网络标识。 即Pod在被重新调度后,Pod命和主机名不变,这需要Headless Service(也是一种Service资源,但是相比于ClusterIP而言,没有ClusterIP)实现。
3、有序性。 Pod是有顺序的,Pod在被部署、扩展、收缩、删除和更新时,都会按照顺序严格执行。
一般而言,StatefulSet由以下三个部分组成:
1、Headless Service
Headless Service,即无头服务,用于为Pod资源标识符生成可解析的DNS记录。
2、Volume Chain Templates
Volume Chain Templates,即存储卷申请模板,为Pod资源提供有状态的持久存储。
3、StatefulSet
用于管控Pod资源。

二、headless简介

在StatefulSet架构中,每一个Pod的名称是固定不变的。即使是Pod被删除后重建,也必须保证重建后的Pod与重建前的Pod名称相同。
为了实现Pod名称的不变,我们就必须配置实现一个Headless Service,用于给Pod名称和Pod提供解析。

三、volumeClainTemplate详解

在StatefulSet中,我们要求Pod之间不能使用同一个存储卷。因此,基于Pod模板创建Pod是不合适的,这就需要引入Volume Chain Template。这样在StatefulSet创建Pod后,会自动生成PVC,并绑定PV,从而拥有自己的存储卷。StatefulSet模式如下所示:
在这里插入图片描述
原创不易,转载请说明出处:https://blog.csdn.net/weixin_40228200

猜你喜欢

转载自blog.csdn.net/weixin_40228200/article/details/124486534