k8s之Replication Controller

在这里插入图片描述

前言

应用托管在Kubernetes之后,Kubernetes需要保证应用能够持续运行,这是RC的工作内容,它会确保任何时间Kubernetes中都有指定数量的Pod在运行。在此基础上,RC还提供了一些更高级的特性,比如滚动升级、升级回滚等。

创建一个rc

vi  nginx-rc.yaml
apiVersion: v1
kind: ReplicationController
metadata:
  name: myweb
spec:
  replicas: 2
  selector:
    app: myweb
  template:
    metadata:
      labels:
        app: myweb
    spec:
      containers:
      - name: myweb
        image: 192.168.56.121:5000/nginx:1.13
        ports:
        - containerPort: 80

kubectl create  -f nginx-rc.yaml

RC与Pod的关联——Label

[root@k8s-master rc]# kubectl get all -o wide
NAME       DESIRED   CURRENT   READY     AGE       CONTAINER(S)   IMAGE(S)                    SELECTOR
rc/myweb   2         2         2         5m        myweb          10.0.0.11:5000/nginx:1.13   app=myweb

NAME             READY     STATUS    RESTARTS   AGE       IP            NODE
po/myweb-4pt06   1/1       Running   0          5m        172.16.48.2   k8s-node1
po/myweb-pw40f   1/1       Running   0          5m        172.16.78.3   k8s-master

rc的滚动升级

滚动升级是一种平滑过渡的升级方式,通过逐步替换的策略,保证整体系统的稳定,在初始升级的时候就可以及时发现、调整问题,以保证问题影响度不会扩大。Kubernetes中滚动升级的命令如下:
$ kubectl rolling-update myweb -f nginx-rc2.yaml --update-period=10s
  升级开始后,首先依据提供的定义文件创建V2版本的RC,然后每隔10s(--update-period=10s)逐步的增加V2版本的Pod副本数,逐步减少V1版本Pod的副本数。升级完成之后,删除V1版本的RC,保留V2版本的RC,及实现滚动升级。

  升级过程中,发生了错误中途退出时,可以选择继续升级。Kubernetes能够智能的判断升级中断之前的状态,然后紧接着继续执行升级。当然,也可以进行回退,命令如下:
$ kubectl rolling-update myweb myweb2 --update-period=10s --rollback

猜你喜欢

转载自blog.csdn.net/qq_37362891/article/details/110452594