继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

kubernetes Pod控制器 ReplicaSet

慕神8447489
关注TA
已关注
手记 1259
粉丝 174
获赞 956

ReplicaSet控制器

ReplicationController用来确保容器应用的副本数始终保持在用户定义的副本数,即如果有容器异常退出,会自动创建新的Pod来替代;而如果异常多出来的容器也会自动回收,属于旧版本的控制器,涉及面太复杂.

在新版本的Kubernetes中建议使用ReplicaSet来取代ReplicationController。ReplicaSet跟ReplicationController没有本质的不同,只是名字不一样,并且ReplicaSet支持集合式的selector。

虽然ReplicaSet可以独立使用,但一般还是建议使用 Deployment 来自动管理ReplicaSet,这样就无需担心跟其他机制的不兼容问题(比如ReplicaSet不支持rolling-update但Deployment支持),而且Deployment支持滚动升级及回滚

命令行查看ReplicaSet清单定义规则

kubectl explain replicaSetkubectl explain replicaSet.spec

ReplicaSet资源清单

[root@k8s-master01 learning]# vim replicaSet-demo.yaml apiVersion: apps/v1 #api版本定义kind: ReplicaSet    #定义资源类型为ReplicaSetmetadata:           #元数据定义
  name: rs-demo  namespace: learningspec:               #ReplicaSet的规格定义
  replicas: 2       #定义副本数量为2个
  selector:         #标签选择器,定义匹配pod的标签
    matchLabels:
      app: rs-demo      tag: learn-rs  template:         #pod的模板定义
    metadata:       #pod的元数据定义
      name: rs-demo #自定义pod的名称 
      labels:       #定义pod的标签,和上面保持一致或多余上面
        app: rs-demo        tag: learn-rs    spec:           #pod的规格定义  
      containers:   #容器定义
        - name: rs-demo       #容器名称
          image: nginx:1.10   #容器镜像
          ports:              #暴露端口
            - name: http              containerPort: 80[root@k8s-master01 learning]# kubectl create namespace learningnamespace/learning created

[root@k8s-master01 learning]# kubectl apply -f replicaSet-demo.yaml  replicaset.apps/rs-demo created

ReplicaSet常用命令

查看资源

# 查看现有rs[root@k8s-master01 learning]# kubectl get replicasets.apps  -n learning NAME      DESIRED   CURRENT   READY   AGE
rs-demo   2         2         2       4m44s# 查看详细信息[root@k8s-master01 learning]# kubectl describe replicasets. -n learning  rs-demo Name:         rs-demoNamespace:    learningSelector:     app=rs-demo,tag=learn-rsLabels:       <none>Annotations:  kubectl.kubernetes.io/last-applied-configuration:
                {"apiVersion":"apps/v1","kind":"ReplicaSet","metadata":{"annotations":{},"name":"rs-demo","namespace":"learning"},"spec":{"replicas":5,"se...
Replicas:     5 current / 5 desired
Pods Status:  5 Running / 0 Waiting / 0 Succeeded / 0 Failed
Pod Template:
  Labels:  app=rs-demo
           tag=learn-rs
  Containers:
   rs-demo:
    Image:        nginx:1.11
    Port:         80/TCP
    Host Port:    0/TCP
    Environment:  <none>
    Mounts:       <none>
  Volumes:        <none>
Events:
  Type    Reason            Age   From                   Message
  ----    ------            ----  ----                   -------
  Normal  SuccessfulCreate  22s   replicaset-controller  Created pod: rs-demo-5pd54
  Normal  SuccessfulCreate  22s   replicaset-controller  Created pod: rs-demo-gndz6
  Normal  SuccessfulCreate  22s   replicaset-controller  Created pod: rs-demo-p479c
  Normal  SuccessfulCreate  22s   replicaset-controller  Created pod: rs-demo-bkc28
  Normal  SuccessfulCreate  22s   replicaset-controller  Created pod: rs-demo-x57kj

修改Pod数量

# 修改pod的副本数量# (1) 通过配置文件修改[root@k8s-master01 learning]# sed -i 's/  replicas: 2/  replicas: 5/g' replicaSet-demo.yaml [root@k8s-master01 learning]# kubectl apply -f replicaSet-demo.yaml replicaset.apps/rs-demo configured
[root@k8s-master01 learning]# kubectl get rs -n learning NAME      DESIRED   CURRENT   READY   AGE
rs-demo   5         5         5       7m37s
[root@k8s-master01 learning]# kubectl get pods -n learning NAME            READY   STATUS    RESTARTS   AGE
rs-demo-h29s7   1/1     Running   0          10s
rs-demo-k778n   1/1     Running   0          7m5s
rs-demo-mmvpz   1/1     Running   0          10s
rs-demo-pw9l8   1/1     Running   0          10s
rs-demo-s7q75   1/1     Running   0          7m5s# (2) edit直接编辑修改[root@k8s-master01 learning]# kubectl edit -n learning replicasets.apps rs-demo直接修改replicas字段为想要的pod个数, wq保存退出
[root@k8s-master01 learning]# kubectl -n learning  get replicasets.NAME      DESIRED   CURRENT   READY   AGE
rs-demo   3         3         3       12m

修改镜像版本

# 查看现有的[root@k8s-master01 learning]# kubectl -n learning  get replicasets. -o wideNAME      DESIRED   CURRENT   READY   AGE   CONTAINERS   IMAGES       SELECTOR
rs-demo   3         3         3       13m   rs-demo      nginx:1.10   app=rs-demo,tag=learn-rs# (1) 通过配置文件修改[root@k8s-master01 learning]# sed -i 's/          image: nginx:1.10/          image: nginx:1.11/g' replicaSet-demo.yaml[root@k8s-master01 learning]# kubectl apply -f replicaSet-demo.yaml replicaset.apps/rs-demo configured
[root@k8s-master01 learning]# kubectl -n learning  get replicasets. -o wideNAME      DESIRED   CURRENT   READY   AGE   CONTAINERS   IMAGES       SELECTOR
rs-demo   5         5         5       29m   rs-demo      nginx:1.11   app=rs-demo,tag=learn-rs# (2) edit直接编辑修改[root@k8s-master01 learning]# kubectl edit -n learning replicasets.apps rs-demo直接修改image字段为想要的pod个数, wq保存退出
[root@k8s-master01 learning]# kubectl -n learning  get replicasets. -o wideNAME      DESIRED   CURRENT   READY   AGE   CONTAINERS   IMAGES       SELECTOR
rs-demo   5         5         5       38m   rs-demo      nginx:1.12   app=rs-demo,tag=learn-rs

         

             




作者:baiyongjie
链接:https://www.jianshu.com/p/b2533c6cc3de


打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP