美文网首页
kubernetes-ReplicationController

kubernetes-ReplicationController

作者: 早_wsm | 来源:发表于2020-04-05 16:10 被阅读0次

Replicationcontroller资源简称rc资源

RC资源介绍

保证指定数量的pod始终存活
通过标签选择器来关联pod
可以实现升级与回滚

创建RC资源

创建资源前同样需要yaml文件,先写入一个要使用的yaml文件:

vim nginx-rc.yaml

apiVersion: v1
kind: ReplicationController
metadata:
  name: mynginx
spec:
  replicas: 2
  selector:  ###标签选择器
    app: myweb ###rc根据这个标签识别自己的pod资源,严格控制pod数量
  template:
    metadata:
      labels:
        app: myweb
    spec:
      containers:
      - name: myweb
        image: 10.0.0.11:5000/nginx:latest
        ports:
        - containerPort: 80

创建rc资源

[root@master rc]# kubectl create -f nginx-rc.yaml 
replicationcontroller "mynginx" created
#查看一下rc资源
[root@master rc]# kubectl get rc
NAME      DESIRED   CURRENT   READY     AGE
mynginx   2         2         2         14s
#查看详细信息
[root@master rc]# kubectl get rc -o wide
NAME      DESIRED   CURRENT   READY     AGE       CONTAINER(S)   IMAGE(S)                      SELECTOR
mynginx   2         2         2         53s       myweb          10.0.0.11:5000/nginx:latest   app=myweb
#查看pod资源
[root@master rc]# kubectl get pod -o wide
NAME            READY     STATUS    RESTARTS   AGE       IP            NODE
mynginx-qbc47   1/1       Running   0          1m        172.16.43.3   10.0.0.12
mynginx-z4j5z   1/1       Running   0          1m        172.16.17.2   10.0.0.13
nginx01         1/1       Running   0          36m       172.16.43.2   10.0.0.12

可以看到yaml内要创建俩个不同随机名字的pod已经正常创建,这时我们删除其中一个rc内的pod会自动重新生成一个pod资源进行补位

RC的滚动升级与一件回滚

使用edit可以修改rc内资源

[root@master rc]# kubectl edit rc mynginx 
replicationcontroller "mynginx" edited

这里修改了副本数,直接从2改成了5,然后查看一下pod资源情况

[root@master rc]# kubectl get pod -o wide
NAME            READY     STATUS    RESTARTS   AGE       IP            NODE
mynginx-6ftfv   1/1       Running   0          2m        172.16.43.4   10.0.0.12
mynginx-dl0sl   1/1       Running   0          2m        172.16.17.3   10.0.0.13
mynginx-fbg9r   1/1       Running   0          2m        172.16.17.4   10.0.0.13
mynginx-qbc47   1/1       Running   0          20m       172.16.43.3   10.0.0.12
mynginx-z4j5z   1/1       Running   0          20m       172.16.17.2   10.0.0.13
nginx01         1/1       Running   0          56m       172.16.43.2   10.0.0.12
[root@master rc]# kubectl get rc 
NAME      DESIRED   CURRENT   READY     AGE
mynginx   5         5         5         20m

立马由2个升级为5个了

升级实验

实验前先做好准备
前面启动的所有pod资源都是使用nginx,这里准备升级nginx来达到升级实验的演示

之前使用的nginx镜像是1.13版本的,要达到升级目的需要先下载高版本的镜像


image.png
[root@master ~]# docker images
REPOSITORY                              TAG                 IMAGE ID            CREATED             SIZE
10.0.0.11:5000/busybox                  latest              83aa35aa1c79        3 weeks ago         1.22 MB
busybox                                 latest              83aa35aa1c79        3 weeks ago         1.22 MB
10.0.0.11:5000/nginx                    latest              40960efd7b8f        2 years ago         108 MB
nginx                                   latest              40960efd7b8f        2 years ago         108 MB
registry                                latest              a07e3f32a779        2 years ago         33.3 MB
10.0.0.11:5000/pod-infrastructure       latest              34d3450d733b        3 years ago         205 MB
docker.io/tianyebj/pod-infrastructure   latest              34d3450d733b        3 years ago         205 MB

由于我没有版本的镜像,pull也pull不下来,所以这里我打算直接在标签上做手脚

直接把标签打成要升级的版本号
[root@master ~]# docker tag nginx:latest 10.0.0.11:5000/nginx:1.15
[root@master ~]# docker images
REPOSITORY                              TAG                 IMAGE ID            CREATED             SIZE
10.0.0.11:5000/busybox                  latest              83aa35aa1c79        3 weeks ago         1.22 MB
busybox                                 latest              83aa35aa1c79        3 weeks ago         1.22 MB
10.0.0.11:5000/nginx                    1.15                40960efd7b8f        2 years ago         108 MB
10.0.0.11:5000/nginx                    latest              40960efd7b8f        2 years ago         108 MB
nginx                                   latest              40960efd7b8f        2 years ago         108 MB
registry                                latest              a07e3f32a779        2 years ago         33.3 MB
10.0.0.11:5000/pod-infrastructure       latest              34d3450d733b        3 years ago         205 MB
docker.io/tianyebj/pod-infrastructure   latest              34d3450d733b        3 years ago         205 MB
直接推到仓库中
[root@master ~]# docker push 10.0.0.11:5000/nginx:1.15 
The push refers to a repository [10.0.0.11:5000/nginx]
f4cc3366d6a9: Layer already exists 
bba7659ae2e7: Layer already exists 
cec7521cdf36: Layer already exists 
1.15: digest: sha256:278fefc722ffe1c36f6dd64052758258d441dcdb5e1bbbed0670485af2413c9f size: 948

准备好要升级的nginx版本的yaml文件,注意和旧版本做好区分

vim nginx-rc1.15.yaml

apiVersion: v1
kind: ReplicationController
metadata:
  name: mynginx1 #名字一定不能重复
spec:
  replicas: 5 #数量要和旧版保持一致
  selector:
    app: myweb2  #标签名也不可以重复
  template:
    metadata:
      labels:
        app: myweb2
    spec:
      containers:
      - name: myweb2
        image: 10.0.0.11:5000/nginx:1.15 # 版本名不可以重复
        ports:
        - containerPort: 80

使用命令kubectl rolling-update mynginx -f nginx-rc1.15.yaml --update-period=10s开始升级

命令释解:rolling-update升级命令 + 要升级的rc资源 -f 指定要使用的yaml文件 --update-period=10s 间隔10秒升级一个pod资源

[root@master rc]# kubectl get pod -o wide
NAME             READY     STATUS    RESTARTS   AGE       IP            NODE
mynginx1-5z1jv   1/1       Running   0          3m        172.16.17.4   10.0.0.13
mynginx1-6xtkz   1/1       Running   0          4m        172.16.17.5   10.0.0.13
mynginx1-k5gwp   1/1       Running   0          4m        172.16.43.5   10.0.0.12
mynginx1-v3scb   1/1       Running   0          4m        172.16.17.3   10.0.0.13
mynginx1-wg1j4   1/1       Running   0          4m        172.16.43.4   10.0.0.12
nginx01          1/1       Running   0          1h        172.16.43.2   10.0.0.12

回滚命令kubectl rolling-update mynginx1 -f nginx-rc.yaml --update-period=10s
和升级一个原理,这里不做演示

相关文章

网友评论

      本文标题:kubernetes-ReplicationController

      本文链接:https://www.haomeiwen.com/subject/hfbuphtx.html