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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏运维小白

18.12 keepalived + LVS

Keepalived+LVS DR 完整架构需要两台服务器(角色为dir)分别安装keepalived软件,目的是实现高可用,但keepalived本身也有负载...

2558
来自专栏python3

startssl免费https证书申请

HTTP与HTTPS有什么区别? HTTP协议传输的数据都是未加密的,也就是明文的,因此使用HTTP协议传输隐私信息非常不安全,为了保证这些隐私数据能加密传输,...

1353
来自专栏鬼谷君

Linux 双网卡绑定

1294
来自专栏性能与架构

高性能集群软件Keepalived

image.png Keepalived是一款优秀的实现高可用的软件,它运行在LVS之上,它的主要功能是实现真实机的故障隔离及负载均衡器间的失败切换 Keepa...

3238
来自专栏Linux运维学习之路

Nginx+keepalived实现高可用

环境: [root@db02 ~]# uname -a Linux db02 2.6.32-696.el6.x86_64 #1 SMP Tue Mar 21 1...

1866
来自专栏会跳舞的机器人

Nginx+Keepalived实现高可用Web负载均衡

通过之前的一篇文章Nginx+Tomcat实现负载均衡我们已经能通过Nginx来实现Tomcat应用的负载均衡,但是单个的Nginx会存在单点隐患,如果Ngin...

871
来自专栏cmazxiaoma的架构师之路

FastDFS蛋疼的集群和负载均衡(十六)之LVS+Keepalived主备模式

1402
来自专栏散尽浮华

Keepalived使用梳理

keepalived介绍 keepalived观察其名可知,保持存活,在网络里面就是保持在线了,也就是所谓的高可用或热备,它集群管理中保证集群高可用的一个服务软...

4256
来自专栏容器云生态

keepalived+haproxy构建高可用负载均衡集群

Keepalived+haproxy构建web高可用负载均衡系统 本章将使用keepalived做为高可用集群调度用户请求,并且检测haproxy负载均衡器...

3127
来自专栏行者悟空

通过Keepalived实现NginxHA高可用

1232

扫码关注云+社区