Docker&Kubernetes ❀ Kubernetes集群Pod控制器 - ReplicaSet(RS)

Posted 无糖可乐没有灵魂

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Docker&Kubernetes ❀ Kubernetes集群Pod控制器 - ReplicaSet(RS)相关的知识,希望对你有一定的参考价值。

文章目录

1、资源配置清单


ReplicaSet的主要作用是保证一定数量的Pod能够正常运行,他会持续监听这些Pod的运行状态,一旦Pod发生故障,就会自动重启或者重建,同时还支持对Pod数量的扩缩以及对Pod镜像的升级;

参数查询方法:

[root@master ~]# kubectl explain rs

参数汇总梳理:

apiVersion: apps/v1             #版本信息
kind: ReplicaSet                #类型
metadata:                       #元数据
  name: 
  namespace:
  labels:
    controller: rs
spec:                           #详细描述
  replicas: 3                   #副本数量,默认为1   
  selector:                     #选择器,在Pod模板内定义标签,控制器定义选择器,选择该标签,即当前控制器可以控制模板创建出的所有Pod
    matchLabels:                #匹配标签规则
      app: nginx-pod
    matchExpressions:           #匹配表达式规则
      - key: "app"
        operator: In 
        values: ["nginx-pod"]
  template:                     #模板,当副本数量不足时,根据下面的配置创建Pod
    metadata:
      labels:                   #Pod标签
        app: nginx-pod
    spec:
      containers:
      - name: nginx
        image: nginx:1.17.1
        ports:
        - containerPort: 80

2、创建ReplicaSet控制器


#创建YAML文件
[root@master ~]# cat pc-replicaset.yaml 
apiVersion: apps/v1             #版本信息
kind: ReplicaSet                #类型
metadata:                       #元数据
  name: pc-replicaset
  namespace: dev
spec:                           #详细描述
  replicas: 3                   #副本数量
  selector:                     #选择器,指定管理那些Pod
    matchLabels:                #匹配标签规则
      app: nginx-pod
  template:                     #模板,当副本数量不足时,根据下面的配置创建Pod
    metadata:
      labels:                   #Pod标签
        app: nginx-pod
    spec:
      containers:
      - name: nginx
        image: nginx:1.17.1
#调用YAML文件
[root@master ~]# kubectl apply -f pc-replicaset.yaml 
replicaset.apps/pc-replicaset created

#查看RS控制器
[root@master ~]# kubectl get rs pc-replicaset -n dev -o wide
NAME            DESIRED   CURRENT   READY   AGE   CONTAINERS   IMAGES         SELECTOR
pc-replicaset   3         3         3       70s   nginx        nginx:1.17.1   app=nginx-pod
# DESIRED:期望副本数量;
# CURRENT:当前副本数量;
# READY:已经准备好提供服务的副本数量;

#查看RS控制器创建的Pod
[root@master ~]# kubectl get pod -n dev
NAME                  READY   STATUS    RESTARTS   AGE
pc-replicaset-8bx4b   1/1     Running   0          109s
pc-replicaset-fnm2h   1/1     Running   0          109s
pc-replicaset-nvv65   1/1     Running   0          109s
# 可以查看到由RS控制器创建好的Pod命名格式为:ReplicaSet_Name-xxxxx(五位随机码)

3、副本扩缩容


修改方式比较多,常用的有:Edit、命令修改、Apply;

3.1 Edit修改

[root@master ~]# kubectl edit rs pc-replicaset -n dev
# 此处Edit编辑YAML文件的修改方法同vi/vim使用方法一致

#编辑完成后确认自动启用YAML文件
[root@master ~]# kubectl edit rs pc-replicaset -n dev
replicaset.apps/pc-replicaset edited

#查看修改后的Pod数量
[root@master ~]# kubectl get pod -n dev
NAME                  READY   STATUS    RESTARTS   AGE
pc-replicaset-8bx4b   1/1     Running   0          9m27s
pc-replicaset-fk86f   1/1     Running   0          42s
pc-replicaset-fnm2h   1/1     Running   0          9m27s
pc-replicaset-mpxkt   1/1     Running   0          42s
pc-replicaset-nvv65   1/1     Running   0          9m27s
pc-replicaset-vkxc9   1/1     Running   0          42s

3.2 命令修改

[root@master ~]# kubectl scale rs pc-replicaset --replicas=2 -n dev
replicaset.apps/pc-replicaset scaled

[root@master ~]# kubectl get pods -n dev
NAME                  READY   STATUS    RESTARTS   AGE
pc-replicaset-8bx4b   1/1     Running   0          13m
pc-replicaset-nvv65   1/1     Running   0          13m

3.3 Apply命令

#使用vim直接修改YAML文件内容,替换需要修改的字段参数
[root@master ~]# vim pc-replicaset.yaml 

#使用apply命令直接替换即可
[root@master ~]# kubectl apply -f pc-replicaset.yaml 
replicaset.apps/pc-replicaset configured

4、镜像升级


升级方式分为两种:Edit、命令修改

4.1 Edit修改

[root@master ~]# kubectl edit rs pc-replicaset -n dev
replicaset.apps/pc-replicaset edited
[root@master ~]# kubectl get rs pc-replicaset -n dev -o wide
NAME            DESIRED   CURRENT   READY   AGE   CONTAINERS   IMAGES         SELECTOR
pc-replicaset   3         3         3       33m   nginx        nginx:1.17.3   app=nginx-pod

4.2 命令修改

[root@master ~]# kubectl set image rs pc-replicaset nginx=nginx:1.17.2 -n dev
replicaset.apps/pc-replicaset image updated
[root@master ~]# kubectl get rs pc-replicaset -n dev -o wide
NAME            DESIRED   CURRENT   READY   AGE   CONTAINERS   IMAGES         SELECTOR
pc-replicaset   3         3         3       37m   nginx        nginx:1.17.2   app=nginx-pod

4.3 Apply

[root@master ~]# cat pc-replicaset.yaml | grep image
        image: nginx:1.17.1
[root@master ~]# kubectl apply -f pc-replicaset.yaml 
replicaset.apps/pc-replicaset configured
[root@master ~]# kubectl get rs pc-replicaset -n dev -o wide
NAME            DESIRED   CURRENT   READY   AGE   CONTAINERS   IMAGES         SELECTOR
pc-replicaset   3         3         3       39m   nginx        nginx:1.17.1   app=nginx-pod

5、删除ReplicaSet控制器


#直接删除
[root@master ~]# kubectl delete -f pc-replicaset.yaml

#删除ReplicaSet控制器不删除Pod
[root@master ~]# kubectl delete rs pc-replicaset -n dev --cascade=false 
warning: --cascade=false is deprecated (boolean value) and can be replaced with --cascade=orphan.
replicaset.apps "pc-replicaset" deleted
[root@master ~]# kubectl get pod -n dev
NAME                  READY   STATUS    RESTARTS   AGE
pc-replicaset-8bx4b   1/1     Running   0          41m
pc-replicaset-dtqcn   1/1     Running   0          22m
pc-replicaset-nvv65   1/1     Running   0          41m

以上是关于Docker&Kubernetes ❀ Kubernetes集群Pod控制器 - ReplicaSet(RS)的主要内容,如果未能解决你的问题,请参考以下文章

Docker&Kubernetes ❀ Kubernetes集群安装部署过程与常见的错误解决方法

Docker&Kubernetes ❀ Kubernetes集群安装部署过程与常见的错误解决方法

Docker&Kubernetes ❀ Kubernetes集群实践与部署笔记知识点梳理

Docker&Kubernetes ❀ Docker 容器技术笔记链接梳理

Docker&Kubernetes ❀ Kubernetes集群Pod控制器 - Job

Docker&Kubernetes ❀ Kubernetes集群Service资源配置清单