14-k8s控制器资源-rs控制器replicasets

        replicaset副本控制器,简称:rs控制器;

        用法:与rc控制器“几乎”相同;

        能力:可以指定pod的副本始终存活,相比于rc控制器;支持标签匹配,也支持标签表达式

        注意:不论是rc还是rs资源,都是通过“标签”惊醒匹配pod的,如果有同样的标签,则算作一个副本;

一、rs控制器资源的管理

1,基于标签-创建rs资源

· 编辑rs资源清单

[root@k8s231 rs]# cat rs.yaml 
apiVersion: apps/v1
kind: ReplicaSet
metadata:
  name: rs01
spec: 
  #控制pod副本的数量(k8s系统集群中,匹配到标签的数量)
  replicas: 9
  #选择需要创建副本的pod的标签
  selector:
    #声明基于标签匹配pod(这里就是与rc控制器的区别,rc不需要这个资源)
    matchLabels:
      k8s: xinjizhiwa
  #pod模板,就是编写pod资源
  template:
    metadata:
      name: pod-rs
      labels:
        k8s: xinjizhiwa
    spec:
      containers:
      - name: c1
        image: harbor.xinjizhiwa.com/xinjizhiwa-nginx/nginx:v2
        ports:
        - containerPort: 80
        command: ["nginx","-g","daemon off;"]

· 创建rs资源

[root@k8s231 rs]# kubectl apply -f rs.yaml

· 查看是否创建成功

2,基于标签表达式创建rs资源

· 编辑rs资源清单(标签表达式-Exists)

[root@k8s231 rs]# cat rs.yaml 
apiVersion: apps/v1
kind: ReplicaSet
metadata:
  name: rs01
spec: 
  #控制pod副本的数量(k8s系统集群中,匹配到标签的数量)
  replicas: 9
  #选择需要创建副本的pod的标签
  selector:
    #1,声明基于标签匹配pod(这里就是与rc控制器的区别,rc不需要这个资源)
    #matchLabels:
    #2,基于标签表达式匹配pod
    matchExpressions:
    #指定标签的key值(:左边的)
    - key: k8s
      #指定key和value的关系,4个值可以选择
      #第一个In:只要
      #第二个Notin:只要不..
      #第三个值Exists:只要key匹配成功就行,value可以使任意值;
      #第四个值DoesNotExist:只要不存在指定的key,就算匹配成功;
      operator: Exists


  #pod模板,就是编写pod资源
  template:
    metadata:
      name: pod-rs
      labels:
        k8s: xinjizhiwa
    spec:
      containers:
      - name: c1
        image: harbor.xinjizhiwa.com/xinjizhiwa-nginx/nginx:v2
        ports:
        - containerPort: 80
        command: ["nginx","-g","daemon off;"]
 

· 编辑rs资源清单(标签表达式-In

[root@k8s231 rs]# cat rs.yaml 
apiVersion: apps/v1
kind: ReplicaSet
metadata:
  name: rs01
spec: 
  #控制pod副本的数量(k8s系统集群中,匹配到标签的数量)
  replicas: 9
  #选择需要创建副本的pod的标签
  selector:
    #1,声明基于标签匹配pod(这里就是与rc控制器的区别,rc不需要这个资源)
    #matchLabels:
    #2,基于标签表达式匹配pod
    matchExpressions:
    #指定标签的key值(:左边的)
    - key: k8s
      #指定key和value的关系,4个值可以选择
      #第一个In:只要
      #第二个Notin:只要不..
      #第三个值Exists:只要key匹配成功就行,value可以使任意值;
      #第四个值DoesNotExist:只要不存在指定的key,就算匹配成功;
      operator: In
      #指定value的列表
      values:
      - xinjizhiwa
      - xin

  #pod模板,就是编写pod资源
  template:
    metadata:
      name: pod-rs
      labels:
        k8s: xinjizhiwa
    spec:
      containers:
      - name: c1
        image: harbor.xinjizhiwa.com/xinjizhiwa-nginx/nginx:v2
        ports:
        - containerPort: 80
        command: ["nginx","-g","daemon off;"]

3,查看rs资源

[root@k8s231 rs]# kubectl get rs
NAME   DESIRED   CURRENT   READY   AGE
rs01   9         9         9       3m17s

4,删除rs资源

[root@k8s231 rs]# kubectl delete  rs  rs01

二、rs资源的升级和回滚

1,创建rs与pod资源(v2版本)

· 编辑资源清单

[root@k8s231 rs]# cat rs.yaml 
apiVersion: apps/v1
kind: ReplicaSet
metadata:
  name: rs01
spec: 
  #控制pod副本的数量(k8s系统集群中,匹配到标签的数量)
  replicas: 9
  #选择需要创建副本的pod的标签
  selector:
    #1,声明基于标签匹配pod(这里就是与rc控制器的区别,rc不需要这个资源)
    matchLabels:
      k8s: xinjizhiwa
    #2,基于标签表达式匹配pod
    #matchExpressions:
    #指定标签的key值(:左边的)
    #- key: k8s
      #指定key和value的关系,4个值可以选择
      #第一个In:只要
      #第二个Notin:只要不..
      #第三个值Exists:只要key匹配成功就行,value可以使任意值;
      #第四个值DoesNotExist:只要不存在指定的key,就算匹配成功;
      #operator: Notin
      #指定value的列表
      #values:
      #- xinjizhi
      #- xin

  #pod模板,就是编写pod资源
  template:
    metadata:
      name: pod-rs
      labels:
        k8s: xinjizhiwa
    spec:
      containers:
      - name: c1
        image: harbor.xinjizhiwa.com/xinjizhiwa-nginx/nginx:v2
        ports:
        - containerPort: 80
        command: ["nginx","-g","daemon off;"]

· 创建资源

[root@k8s231 rs]# kubectl apply -f rs.yaml

2,将版本镜像回滚到v1

· 修改资源清单

[root@k8s231 rs]# cat rs.yaml 
apiVersion: apps/v1
kind: ReplicaSet
metadata:
  name: rs01
spec: 
  replicas: 9
  selector:
    matchLabels:
      k8s: xinjizhiwa
  template:
    metadata:
      name: pod-rs
      labels:
        k8s: xinjizhiwa
    spec:
      containers:
      - name: c1

        #这里改成v1,代表回滚上一个镜像
        image: harbor.xinjizhiwa.com/xinjizhiwa-nginx/nginx:v1
        ports:
        - containerPort: 80
        command: ["nginx","-g","daemon off;"]

· 重新apply执行清单

[root@k8s231 rs]# kubectl apply -f rs.yaml 

· 删除现有rs启动的pod

[root@k8s231 rs]# kubectl delete pods --all

· 再次查看,全变成v1版本

注意,也可以一个一个pod删除,就等于逐渐的一个一个pod进行升级和回滚,也叫金丝雀发布,在rs资源中,我们先不细讲,等到deployments资源时,会详细讲这个发布机制;

相关推荐

  1. 9.2.k8s控制器资源(rs控制器replicasets)

    2024-02-17 12:58:02       10 阅读
  2. K8s: 控制器ReplicaSet对象

    2024-02-17 12:58:02       11 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-02-17 12:58:02       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-02-17 12:58:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-02-17 12:58:02       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-02-17 12:58:02       20 阅读

热门阅读

  1. Matplotlib plt.plot数据可视化应用案例

    2024-02-17 12:58:02       30 阅读
  2. nlp中如何数据增强

    2024-02-17 12:58:02       30 阅读
  3. Windows安装minio

    2024-02-17 12:58:02       42 阅读
  4. 【笔记】常用方法

    2024-02-17 12:58:02       30 阅读
  5. Linux组管理和权限管理

    2024-02-17 12:58:02       24 阅读
  6. RPA基础知识学习清单

    2024-02-17 12:58:02       26 阅读
  7. Python中tqdm模块的常用方法和示例

    2024-02-17 12:58:02       39 阅读
  8. docker 编译安装redis脚本

    2024-02-17 12:58:02       22 阅读
  9. RabbitMQ

    RabbitMQ

    2024-02-17 12:58:02      31 阅读