Kubernetes----ReplicaSet控制器
生活随笔
收集整理的這篇文章主要介紹了
Kubernetes----ReplicaSet控制器
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
【原文鏈接】
一、ReplicaSet控制器簡介
1.1 ReplicaSet控制器簡介
ReplicaSet控制器的主要作用是保證一定數量的pod能能夠正常運行,它會持續監聽這些pod的運行狀態,一旦pod發生故障,就會重啟或重建,同時它還支持對pod數量的擴縮容和版本鏡像的升級
1.2 ReplicaSet控制資源清單文件
apiVersion: apps/v1 # 版本號 kind: ReplicaSet # 類型 metadata: # 元數據name: # rs名稱namespace: # 所屬命名空間labels: # 標簽controller: rs spec: # 性情描述replicas: 3 # 副本數量selector: # 選擇器,通過它指定該控制器管理哪些podmatchLabels: # label匹配規則app: nginx-podmatchExpressions: # Expression匹配規則- {key: app, operator: In, values: [nginx-pod]}template: # 模板,當副本數量不足時,會根據下面的額模板創建pod副本metadata:labels:app: nginx-podspec:containers:- name: nginximage: nginx:1.17.1ports:- containerPort:80這里面spec中的常用的幾個參數含義:
- replicas:指定部分數量,其實就是當前rs創建出來的pod的數量,默認為1
- selector:選擇器,它的作用是建立pod控制器和pod之間的關聯關系,采用的Label Selector機制,在pod模板上 定義label,在控制器上定義選擇器,就可以表明當前控制器能管理哪些pod了
- template:模板,就是當前控制器創建pod所使用的模板,里面其實就是pod的定義
二、ReplicaSet實例演示
2.1 ReplicaSet控制器創建
編輯replicaset.yaml文件,內容如下:
apiVersion: v1 kind: Namespace metadata:name: dev---apiVersion: apps/v1 kind: ReplicaSet metadata:name: pc-replicasetnamespace: dev spec:replicas: 3selector:matchLabels:app: nginx-podtemplate:metadata:labels:app: nginx-podspec:containers:- name: nginximage: nginx:1.17.1使用如下命令創建資源
[root@master pod_controller]# kubectl apply -f replicaset.yaml namespace/dev created replicaset.apps/pc-replicaset created [root@master pod_controller]#通過如下命令可以查詢到創建結果
[root@master pod_controller]# kubectl get rs,pod -n dev -o wide NAME DESIRED CURRENT READY AGE CONTAINERS IMAGES SELECTOR replicaset.apps/pc-replicaset 3 3 3 2m57s nginx nginx:1.17.1 app=nginx-podNAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES pod/pc-replicaset-74djl 1/1 Running 0 2m57s 10.244.2.50 node2 <none> <none> pod/pc-replicaset-m5tmz 1/1 Running 0 2m57s 10.244.1.23 node1 <none> <none> pod/pc-replicaset-wlvcm 1/1 Running 0 2m57s 10.244.1.24 node1 <none> <none> [root@master pod_controller]#2.2 ReplicaSet實現擴縮容
2.2.1 通過修改配置文件方式實現
編輯replicaset.yaml文件,將replicas值設置為6個,如下
apiVersion: v1 kind: Namespace metadata:name: dev---apiVersion: apps/v1 kind: ReplicaSet metadata:name: pc-replicasetnamespace: dev spec:replicas: 6selector:matchLabels:app: nginx-podtemplate:metadata:labels:app: nginx-podspec:containers:- name: nginximage: nginx:1.17.1然后通過如下命令使配置生效
[root@master pod_controller]# kubectl apply -f replicaset.yaml namespace/dev unchanged replicaset.apps/pc-replicaset configured [root@master pod_controller]#通過如下命令可以查看到配置已經生效
[root@master pod_controller]# kubectl get rs,pod -n dev NAME DESIRED CURRENT READY AGE replicaset.apps/pc-replicaset 6 6 6 8m43sNAME READY STATUS RESTARTS AGE pod/pc-replicaset-2bcwc 1/1 Running 0 39s pod/pc-replicaset-74djl 1/1 Running 0 8m43s pod/pc-replicaset-7744x 1/1 Running 0 39s pod/pc-replicaset-7rqz2 1/1 Running 0 39s pod/pc-replicaset-m5tmz 1/1 Running 0 8m43s pod/pc-replicaset-wlvcm 1/1 Running 0 8m43s [root@master pod_controller]#2.2.2 通過命令的方式擴縮容
如下,通過如下命令將pod數量縮小到2個
[root@master pod_controller]# kubectl scale rs pc-replicaset --replicas=2 -n dev replicaset.apps/pc-replicaset scaled [root@master pod_controller]#然后使用如下命令查詢,可以發現縮容已經完成
[root@master pod_controller]# kubectl get rs,pod -n dev NAME DESIRED CURRENT READY AGE replicaset.apps/pc-replicaset 2 2 2 11mNAME READY STATUS RESTARTS AGE pod/pc-replicaset-m5tmz 1/1 Running 0 11m pod/pc-replicaset-wlvcm 1/1 Running 0 11m [root@master pod_controller]#2.3 ReplicaSet實現鏡像版本的升降級
2.3.1 通過修改配置文件的方式升級鏡像版本
編輯yaml文件,修改鏡像版本為1.17.3,如下:
apiVersion: v1 kind: Namespace metadata:name: dev---apiVersion: apps/v1 kind: ReplicaSet metadata:name: pc-replicasetnamespace: dev spec:replicas: 2selector:matchLabels:app: nginx-podtemplate:metadata:labels:app: nginx-podspec:containers:- name: nginximage: nginx:1.17.3然后使用如下命令使配置生效
[root@master pod_controller]# kubectl apply -f replicaset.yaml namespace/dev unchanged replicaset.apps/pc-replicaset configured [root@master pod_controller]#通過如下命令,可以發現鏡像版本已經升級
[root@master pod_controller]# kubectl get rs,pod -n dev -o wide NAME DESIRED CURRENT READY AGE CONTAINERS IMAGES SELECTOR replicaset.apps/pc-replicaset 2 2 2 15m nginx nginx:1.17.3 app=nginx-podNAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES pod/pc-replicaset-m5tmz 1/1 Running 0 15m 10.244.1.23 node1 <none> <none> pod/pc-replicaset-wlvcm 1/1 Running 0 15m 10.244.1.24 node1 <none> <none> [root@master pod_controller]#2.3.2 通過命令的方式對鏡像版本升降級
使用如下命令,將鏡像版本再降到1.17.1
[root@master pod_controller]# kubectl set image rs pc-replicaset nginx=nginx:1.17.1 -n dev replicaset.apps/pc-replicaset image updated [root@master pod_controller]#通過如下命令查詢,可以發現已經生效
[root@master pod_controller]# kubectl get rs,pod -n dev -o wide NAME DESIRED CURRENT READY AGE CONTAINERS IMAGES SELECTOR replicaset.apps/pc-replicaset 2 2 2 17m nginx nginx:1.17.1 app=nginx-podNAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES pod/pc-replicaset-m5tmz 1/1 Running 0 17m 10.244.1.23 node1 <none> <none> pod/pc-replicaset-wlvcm 1/1 Running 0 17m 10.244.1.24 node1 <none> <none> [root@master pod_controller]#2.4 刪除ReplicaSet
2.4.1 命令行方式刪除ReplicaSet以及Pod
使用如下命令刪除,在刪除ReplicaSet前,會先把pod數量調整為0,等所有pod都刪除后,再刪除ReplicaSet
kubectl delete rs pc-replicaset -n dev2.4.2 僅刪除ReplicaSet,保留Pod
使用如下命令即可
kubectl delete rs pc-replicaset -n dev --cascade=false2.4.3 使用yaml文件刪除
使用如下命令(推薦)
kubectl delete -f replicaset.yaml總結
以上是生活随笔為你收集整理的Kubernetes----ReplicaSet控制器的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 音频单元组件服务参考(Audio Uni
- 下一篇: level 1与level 2的区别