每天5分钟玩转Kubernetes | Rolling Update实践

文章详细描述了在Kubernetes环境中,如何从httpd:2.2.31版本更新到httpd:2.2.32的过程,涉及到Deployment、ReplicaSet和Pod的动态管理。当更新配置并重新应用时,旧ReplicaSet的Pod被新ReplicaSet的Pod替换,这一过程可以通过调整maxSurge和maxUnavailable参数来控制Pod的替换策略。
摘要由CSDN通过智能技术生成

书籍来源: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特性一起讨论。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值