Kubernetes进阶实战读书笔记:StatefulSet控制器(资源升级)

摘要:
一、滚动更新1、将myapp控制器下的pod资源镜像升级为:"ikubernetes/myapp:v6"[root@master~]#kubectlsetimagestsmyappmyapp=ikubernetes/myapp:v6statefulset.apps/myappimageupdated2、实时监控更新操作过程[root@masterchapter9]#kubectlgetpods-l

一、滚动更新

1、将myapp控制器下的pod资源镜像升级为:"ikubernetes/myapp:v6"

[root@master ~]# kubectl set image sts myapp myapp=ikubernetes/myapp:v6
statefulset.apps/myapp image updated

2、实时监控更新操作过程

[root@master chapter9]# kubectl get pods -l app=myapp-pod -w
NAME READY STATUS RESTARTS AGE
myapp-0 1/1 Running 0 39s
myapp-1 1/1 Running 0 36s
myapp-2 1/1 Running 0 34s
myapp-2 1/1 Terminating 0 38s
myapp-2 0/1 Terminating 0 40s
myapp-2 0/1 Terminating 0 49s
myapp-2 0/1 Terminating 0 49s
myapp-2 0/1 Pending 0 0s
myapp-2 0/1 Pending 0 0s
myapp-2 0/1 ContainerCreating 0 0s
myapp-2 1/1 Running 0 2s
myapp-1 1/1 Terminating 0 53s
myapp-1 0/1 Terminating 0 55s
myapp-1 0/1 Terminating 0 56s
myapp-1 0/1 Terminating 0 56s
myapp-1 0/1 Pending 0 0s
myapp-1 0/1 Pending 0 0s
myapp-1 0/1 ContainerCreating 0 0s
myapp-1 1/1 Running 0 2s
myapp-0 1/1 Terminating 0 61s
myapp-0 0/1 Terminating 0 62s
myapp-0 0/1 Terminating 0 63s
myapp-0 0/1 Terminating 0 63s
myapp-0 0/1 Pending 0 0s
myapp-0 0/1 Pending 0 0s
myapp-0 0/1 ContainerCreating 0 0s
myapp-0 1/1 Running 0 3s

3、验证更新是否生效

[root@master ~]# for i in 0 1 2; do kubectl get po myapp-$i --template '{{range $i,$c := .spec.containers}}{{$c.image}}{{end}}';echo; done
ikubernetes/myapp:v6
ikubernetes/myapp:v6
ikubernetes/myapp:v6

另外、用户也可使用""命令跟踪statefulset资源滚动更新过程中的状态信息

二、暂存更新操作

1、暂存更新

[root@master ~]# kubectl patch statefulset myapp -p '{"spec":{"updateStrategy":{"rollingUpdate":{"partition":3}}}}'
statefulset.apps/myapp patched

2、而后、更新myapp控制器的pod资源镜像版本更新为:"ikubernetes/myapp:v7"

[root@master ~]# kubectl set image sts myapp myapp=ikubernetes/myapp:v7
statefulset.apps/myapp image updated

3、接着检测各POD资源的镜像文件版本信息、可以发现其版本并为发生改变

[root@master ~]# for i in 0 1 2; do kubectl get po myapp-$i --template '{{range $i,$c := .spec.containers}}{{$c.image}}{{end}}';echo; done
ikubernetes/myapp:v6
ikubernetes/myapp:v6
ikubernetes/myapp:v6

删除了pod对象myapp-1、随后待其重建操作启动后、再获取与其相关的镜像信息、结果依然显示了旧的版本

[root@master ~]# kubectl delete pod myapp-1
pod "myapp-1" deleted
[root@master ~]# kubectl get pods myapp-1 -o custom-columns=NAME:metadata.name,IMAGE:spec.containers[0].image
NAME IMAGE
myapp-1 ikubernetes/myapp:v6

由此可见、暂存状态的更新操作对所有的pod资源均不产生影响

三、金丝雀部署

1、更新分区myapp-2 的镜像为:"ikubernetes/myapp:v7"

[root@master ~]# kubectl patch statefulset myapp -p '{"spec":{"updateStrategy":{"rollingUpdate":{"partition":2}}}}'
statefulset.apps/myapp patched

2、验证版本是否生效

[root@master ~]# kubectl get pods -l app=myapp-pod -o custom-columns=NAME:metadata.name,IMAGE:spec.containers[0].image
NAME IMAGE
myapp-0 ikubernetes/myapp:v6
myapp-1 ikubernetes/myapp:v6
myapp-2 ikubernetes/myapp:v7

免责声明:文章转载自《Kubernetes进阶实战读书笔记:StatefulSet控制器(资源升级)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇【刷水】之USACO2008资格赛(Bzoj1599-1603)【Vue入门】利用VueCli搭建基本框架--在Home页实现上左右基本布局(五)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Kubernetes监控etcd集群(自带metrics接口)

Kubernetes用operator部署prometheus上面采用Kubernetes部署prometheus 我们可以使用prometheus来监控自带metrics接口的应用。 etcd是Kubernetes的数据库,自带接口,我们可以用etcd作为实例来看看怎么操作。 一、监控etcd集群 1.1、查看接口信息 二进制和kubeadm安装方式...

使用kubeadm部署K8S v1.17.0集群

环境信息 操作系统:CentOS Linux release 7.7.1908 (Core) docker:19.03.8 kubernetes:v1.17.0 集群信息 hostname IP k8s-master 192.168.87.10 k8s-node01 192.168.87.11 一、准备工作(所有节点执行) 1.1、...

arm64平台 Kubernetes 及 Harbor 离线部署方案

前言 随着国产化浪潮的兴起,部分企业及部门开始采用国产服务器,使用国产操作系统。本文针对国产服务器(长城)及国产操作系统(麒麟)实现离线部署 Kubernetes,相关离线程序包、配置文件、安装说明文档将在文中给出。 安装的组件如下: 程序包 版本 docker-ce 19.03.14 kubeadm、kubelet、kubectl v1.1...

保姆级教程!手把手教你使用Longhorn管理云原生分布式SQL数据库!

作者简介 Jimmy Guerrero,在开发者关系团队和开源社区拥有20多年的经验。他目前领导YugabyteDB的社区和市场团队。 本文来自Rancher Labs Longhorn是Kubernetes的云原生分布式块存储,易于部署和升级,100%开源且持久,由业界采用最为广泛的Kubernetes管理平台创建者Rancher Labs推出,并于...

K8S从入门到放弃系列-(3)部署etcd集群

摘要:etcd 是k8s集群最重要的组件,用来存储k8s的所有服务信息, etcd 挂了,集群就挂了,我们这里把etcd部署在master三台节点上做高可用,etcd集群采用raft算法选举Leader, 由于Raft算法在做决策时需要多数节点的投票,所以etcd一般部署集群推荐奇数个节点,推荐的数量为3、5或者7个节点构成一个集群。 官方地址 https...

在本地运行Kubernetes的3种主流方式

作者简介 Chris Tozzi,曾担任记者和Linux管理员。对开源技术、敏捷基础架构以及网络问题兴趣浓厚。目前担任高级内容编辑,并且是Fixate IO的DevOps分析师。 原文链接: https://searchitoperations.techtarget.com/answer/Evaluate-3-ways-to-run-Kubernetes...