k8s入门系列之rc基础篇 – 21运维
通知: .-欢迎从事运维的朋友加QQ群:717973157

k8s入门系列之rc基础篇

K8S 21运维 46浏览

Replication Controller(简称rc)用来管理Pod的副本,保证集群中存在指定数量的Pod副本。集群中副本的数量大于指定数量,则会停止指定数量之外的多余容器数量,反之,则会启动少于指定数量个数的容器,保证数量不变。Replication Controller是实现弹性伸缩、动态扩容和滚动升级的核心。

RC 的主要功能点:
确保pod数量:指定某个服务在Kubernetes中有相应数量的Pod在运行;
确保pod健康:当pod不健康,运行出错或者无法提供服务时,会杀死不健康pod并重新创建,保持pod数量一致;
弹性伸缩:当业务高峰期的时候可以设置扩增pod数量,配合监控就可以做自动伸缩了;
滚动升级:也就是蓝绿发布,当一个pod使用的镜像更新,采用滚动升级模式,RC会自动一个个pod的进行升级,关闭一个pod的同时进行升级,且在原镜像基础上创建一个新pod,当一个pod更新完成再关闭一个旧镜像pod。
1,创建rc
基于yml创建,案例yml文件:

---  
apiVersion: v1  
kind: ReplicationController  
metadata:  
  name: ng-rc
spec:  
  replicas: 2
  selector:  
    app: ng-rc 
  template:   
    metadata:  
      labels:  
        app: ng-rc
    spec:  
      containers:  
      - name: ng-rc 
        image: nginx  
        ports:  
        - containerPort: 80 

kind: ReplicationController #定义这是一个RC
replicas: 2 #定义将创建2个pod
image: nginx #使用nginx镜像
containerPort :80 #容器监听端口号(nginx 默认监听80,如果自定义监听,设置为镜像内监听端口即可)
最简单基础的nginx 就定义好了,启动命令为:

kubectl  create  -f  ng-rc.yml  

创建完成。

2,查看rc
先查看pod:

[[email protected] yaml]# kubectl  get pod -o wide
NAME          READY     STATUS    RESTARTS   AGE       IP           NODE
ng-rc-07h4v   1/1       Running   2          1d        172.40.3.2   10.1.14.16
ng-rc-3j7nr   1/1       Running   0          29s       172.40.7.3   10.1.14.15
swh-ng        1/1       Running   6          1d        172.40.3.4   10.1.14.16

查看rc:

[[email protected] yaml]# kubectl   get rc ng-rc  -o wide
NAME      DESIRED   CURRENT   READY     AGE       CONTAINER(S)   IMAGE(S)   SELECTOR
ng-rc     2         2         2         1d        ng-rc          nginx      app=ng-rc

通过pod和rc可见,基于yml创建的pod以及rc副本都是成功的,rc副本各存在于node1,node2节点。通过get rc 可以看到副本的一些详细信息,比如pod名称,副本数量,镜像名称以及打的标签信息等。

3,弹性伸缩和扩容

案例默认有两个副本,这里我们分别进行弹性伸缩:
增加副本数量:

[[email protected] yaml]# kubectl   scale  rc  ng-rc  --replicas=4
replicationcontroller "ng-rc" scaled
[[email protected] yaml]# kubectl   get rc ng-rc  -o wide         
NAME      DESIRED   CURRENT   READY     AGE       CONTAINER(S)   IMAGE(S)   SELECTOR
ng-rc     4         4         2         1d        ng-rc          nginx      app=ng-rc
[[email protected] yaml]# kubectl  get pod -o wide
NAME          READY     STATUS    RESTARTS   AGE       IP           NODE
ng-rc-07h4v   1/1       Running   2          1d        172.40.3.2   10.1.14.16
ng-rc-3j7nr   1/1       Running   0          4m        172.40.7.3   10.1.14.15
ng-rc-bll4x   1/1       Running   0          8s        172.40.7.2   10.1.14.15
ng-rc-fn856   1/1       Running   0          8s        172.40.3.3   10.1.14.16
swh-ng        1/1       Running   6          1d        172.40.3.4   10.1.14.16

缩减副本数量和上边一样,只不过把副本数量修改即可:

[[email protected] yaml]# kubectl   scale  rc  ng-rc  --replicas=1
replicationcontroller "ng-rc" scaled
[[email protected] yaml]# kubectl  get pod -o wide                       
NAME          READY     STATUS    RESTARTS   AGE       IP           NODE
ng-rc-07h4v   1/1       Running   2          1d        172.40.3.2   10.1.14.16
swh-ng        1/1       Running   6          1d        172.40.3.4   10.1.14.16
[[email protected] yaml]# kubectl   get rc ng-rc  -o wide                
NAME      DESIRED   CURRENT   READY     AGE       CONTAINER(S)   IMAGE(S)   SELECTOR
ng-rc     1         1         1         1d        ng-rc          nginx      app=ng-rc

参考文章:
k8s  配置rc:https://www.cnyunwei.cc/archives/1559
和我一步步部署 kubernetes 集群 :https://github.com/opsnull/follow-me-install-kubernetes-cluster/

转载请注明:21运维 » k8s入门系列之rc基础篇