书籍来源:cloudman《每天5分钟玩转Kubernetes》
一边学习一边整理老师的课程内容及试验笔记,并与大家分享,侵权即删,谢谢支持!
附上汇总贴:每天5分钟玩转Kubernetes | 汇总_COCOgsta的博客-CSDN博客
下面我们部署三副本应用,初始镜像为httpd:2.2.31,然后将其更新到httpd:2.2.32。
httpd:2.2.31的配置文件如下所示。
[root@k8s-master ~]# cat httpd.yml
apiVersion: apps/v1
kind: Deployment
metadata:
name: httpd
spec:
replicas: 3
selector:
matchLabels:
app: httpd
template:
metadata:
labels:
app: httpd
spec:
containers:
- name: httpd
image: httpd:2.2.31
ports:
- containerPort: 80
[root@k8s-master ~]#
通过kubectl apply部署,如图所示。
部署过程如下:
(1)创建Deployment httpd。
(2)创建ReplicaSet httpd-745bddc8fb。
(3)创建三个Pod。
(4)当前镜像为httpd:2.2.31。
将配置文件中的httpd:2.2.31替换为httpd:2.2.32,再次执行kubectl apply,如图所示。
我们发现了如下变化:
(1)Deployment httpd的镜像更新为httpd:2.2.32。
(2)新创建了ReplicaSet httpd-55d897fbfc ,镜像为 httpd:2.2.32,并且管理了三个新的Pod。
(3)之前的ReplicaSet httpd-745bddc8fb里面已经没有任何Pod。
结论是:ReplicaSet httpd-745bddc8fb的三个httpd:2.2.31 Pod已经被ReplicaSet httpd-55d897fbfc 的三个httpd:2.2.32 Pod替换了。
具体过程可以通过kubectl describe deployment httpd查看,如图所示。
每次只更新替换一个Pod:
(1)ReplicaSet httpd-55d897fbfc增加一个Pod,总数为1。
(2)ReplicaSet httpd-745bddc8fb减少一个Pod,总数为2。
(3)ReplicaSet httpd-55d897fbfc增加一个Pod,总数为2。
(4)ReplicaSet httpd-745bddc8fb减少一个Pod,总数为1。
(5)ReplicaSet httpd-55d897fbfc增加一个Pod,总数为3。
(6)ReplicaSet httpd-745bddc8fb减少一个Pod,总数为0。
每次替换的Pod数量是可以定制的。Kubernetes提供了两个参数maxSurge和maxUnavailable来精细控制Pod的替换数量,我们将在后面结合Health Check特性一起讨论。