kubernetes学习记录(7)——弹性伸缩与滚动升级

弹性伸缩

弹性伸缩是指适应负载变化,以弹性可伸缩的方式提供资源。

Pod的弹性伸缩就是修改Replication Controller的Pod副本数。可以通过Kubectl scale命令实现。

创建Replication Controller

test-rc.yaml

apiVersion: v1
kind: ReplicationController
metadata:
  name: test-rc
spec:
  replicas: 2
  selector:
    app: test
  template:
    metadata:
      labels:
        app: test
    spec:
      containers:
      - name: test
        command:
          - sleep
          - "3600"
        image: 192.168.121.143:5000/busybox
        imagePullPolicy: IfNotPresent
      restartPolicy: Always

创建RC

# kubectl create -f test-rc.yaml 

查看创建出的Pod

# kubectl get pod --selector app=test -o wide

这里写图片描述

扩容Pod的数量到4

# kubectl scale rc test-rc --replicas=4
# kubectl get pod --selector app=test -o wide

这里写图片描述

缩容Pod的数量到1

# kubectl scale rc test-rc --replicas=1
# kubectl get pod --selector app=test -o wide

这里写图片描述

把Pod的数量设为0,即可删除RC关联的所有Pod。

滚动升级

滚动升级采用逐步替换的策略。

通过一个例子进行演示,演示应用从V1版本升到V2版本。

创建V1版本的RC。

my-app-v1-rc.yaml

apiVersion: v1
kind: ReplicationController
metadata:
  name: myapp-v1
spec:
  replicas: 10
  selector:
    app: myapp
    version: v1
  template:
    metadata:
      labels:
        app: myapp
        version: v1
    spec:
      containers:
      - name: myapp
        command:
          - sleep
          - "3600"
        image: 192.168.121.143:5000/busybox:v1
        imagePullPolicy: IfNotPresent
      restartPolicy: Always

创建RC,查看RC和Pod。

# kubectl create -f my-app-v1-rc.yaml
# kubectl get rc myapp-v1 -o wide
# kubectl get pods --selector app=myapp -o wide

这里写图片描述

创建V2版本的RC。

my-app-v2-rc.yaml

apiVersion: v1
kind: ReplicationController
metadata:
  name: myapp-v2
spec:
  replicas: 10
  selector:
    app: myapp
    version: v2
  template:
    metadata:
      labels:
        app: myapp
        version: v2
    spec:
      containers:
      - name: myapp
        command:
          - sleep
          - "3600"
        image: 192.168.121.143:5000/busybox:v2
        imagePullPolicy: IfNotPresent
      restartPolicy: Always

开始滚动升级

# kubectl rolling-update myapp-v1 -f my-app-v2-rc.yaml --update-period=10s

通过–update-period=10s设置每隔10s逐步增加V2版本的RC的Pod副本数量,逐步减少V1版本的RC的Pod副本数量。
升级完成后,删除V1版本的RC,保留V2版本的RC。
这里写图片描述

在升级过程中,可以进行回退。如果升级完成,则不可以使用这条指令进行回退。

# kubectl rolling-update myapp-v1 -f my-app-v2-rc.yaml --update-period=10s --rollback
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值