Kubernetes - 4.5 Workload - StatefulSet
什么是StatefulSet?
StatefulSet表示一组具有唯一持久身份标识和稳定主机名的有状态Pod,无论Pod在哪一个Node上运行,身份标识及持久化的数据其都会保留。一般用于持久化存储、固定网络标记、有序部署、有伸缩等场景。
什么是有状态应用?
有状态应用是将数据或应用程序状态持久化到关联的存储中,例如MySQL、Kafka、Zookeeper等应用场景,需要对其进行唯一持久身份的标识及数据的永久保存到存储中。
StatefulSet操作
像Deployment一样StatefulSet管理基于相同容器规范的Pod。但唯一不同的是StatefulSet为其每个Pod维护一个标识身份,StatefulSet需要Headless Service来负责Pod的网络身份。每个Pod具有一个存储类及存储声明,无论Pod被调度到哪一个节点,相关的存储挂载将伴随Pod。在删除Pod或者Stateful时,不会删除掉关联的PersistentVolume及PersistentVolumes。
通过yaml资源定义清单创建
apiVersion: v1 kind: Service metadata: name: nginx labels: app: nginx spec: ports: - port: 80 clusterIP: None selector: app: nginx --- apiVersion: apps/v1 kind: StatefulSet metadata: name: web spec: selector: matchLabels: app: nginx serviceName: "nginx" replicas: 3 template: metadata: labels: app: nginx spec: terminationGracePeriodSeconds: 10 containers: - name: nginx image: nginx:1.16 volumeMounts: - name: www mountPath: /usr/share/nginx/html volumeClaimTemplates: - metadata: name: www spec: accessModes: [ "ReadWriteOnce" ] resources: requests: storage: 1Gi
查看StatefulSet列表kubectl get statefulset
查看StatefulSet描述信息kubectl describe statefulset
StatefulSet更新策略
通过指定 spec: updateStrategy
中定义的更新策略来确定如何处理更新。
OnDelete: 当手动删除旧的Pod时新的Pod才会被自动被创建。 RollingUpdate: 默认的更新策略。旧的Pod自动被删除,新的Pod也自动创建。
分区
通过指定 .spec.updateStrategy.rollingUpdate.partition
中定义的来对 RollingUpdate 更新策略进行分区,如果指定了分区,则当 StatefulSet 的 .spec.template 更新时,具有大于或等于分区序数的所有 Pod 将被更新。具有小于分区的序数的所有 Pod 将不会被更新,即使删除它们也将被重新创建。
如果 StatefulSet 的 .spec.updateStrategy.rollingUpdate.partition 大于其 .spec.replicas,则其 .spec.template 的更新将不会传播到 Pod。一般情况下不需要使用分区,在金丝雀、预发布等场景下是比较有用的。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
k8s拉取私库镜像
创建阿里云私有Registry 参考阿里云官方文档,仓库名称:express-apppull地址:registry.cn-hangzhou.aliyuncs.com/neibo/express-app 将镜像推送到Registry docker login --username=内博科技 registry.cn-hangzhou.aliyuncs.com docker tag [ImageId] registry.cn-hangzhou.aliyuncs.com/neibo/express-app:[镜像版本号] docker push registry.cn-hangzhou.aliyuncs.com/neibo/express-app:[镜像版本号] 备注:即修改镜像名称和tag同镜像仓库一致 从Registry中拉取镜像 docker login --username=内博科技 registry.cn-hangzhou.aliyuncs.com docker pull registry.cn-hangzhou.aliyuncs.com/neibo/express-app:v1 编...
- 下一篇
Kubernetes - 4.6 Workload - DaemonSet
什么是DaemonSet? DaemonSet是部署在所有节点上用于在集群存储、日志收集、性能监控等场景。Pod的生命周期跟随节点,保证集群内的每一个(或者一些)节点都运行一组相同功能的Pod。在新的Kubernetes节点加入时,将会在节点上自动新增一个Pod,在节点移除后Pod也进行回收。 DaemonSet操作 DaemonSet使用Pod模板,此模板包含适用于其Pod的规范。Pod规范确定每个Pod的内容:应在其容器内运行的应用、应装载的卷、其标签和选择器等。 apiVersion: apps/v1 kind: DaemonSet metadata: name: nginx spec: selector: matchLabels: name: nginx template: metadata: labels: name: nginx spec: containers: - name: nginx image: nginx:1.16 查看StatefulSet列表kubectl get daemonset查看StatefulSet描述信息kubectl describe daem...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
-
Docker使用Oracle官方镜像安装(12C,18C,19C)
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS8编译安装MySQL8.0.19
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
推荐阅读
最新文章
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS6,CentOS7官方镜像安装Oracle11G
- SpringBoot2整合Redis,开启缓存,提高访问速度
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- Hadoop3单机部署,实现最简伪集群
- MySQL8.0.19开启GTID主从同步CentOS8
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果