? ? ? ? replicaset副本控制器,簡稱:rs控制器;
? ? ? ? 用法:與rc控制器“幾乎”相同;
? ? ? ? 能力:可以指定pod的副本始終存活,相比于rc控制器;支持標簽匹配,也支持標簽表達式
????????注意:不論是rc還是rs資源,都是通過“標簽”驚醒匹配pod的,如果有同樣的標簽,則算作一個副本;
一、rs控制器資源的管理
1,基于標簽-創(chuàng)建rs資源
· 編輯rs資源清單
[root@k8s231 rs]# cat rs.yaml?
apiVersion: apps/v1
kind: ReplicaSet
metadata:
? name: rs01
spec:?
? #控制pod副本的數(shù)量(k8s系統(tǒng)集群中,匹配到標簽的數(shù)量)
? replicas: 9
? #選擇需要創(chuàng)建副本的pod的標簽
? selector:
? ? #聲明基于標簽匹配pod(這里就是與rc控制器的區(qū)別,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;"]
· 創(chuàng)建rs資源
[root@k8s231 rs]# kubectl apply -f rs.yaml
· 查看是否創(chuàng)建成功
2,基于標簽表達式創(chuàng)建rs資源
· 編輯rs資源清單(標簽表達式-Exists)
[root@k8s231 rs]# cat rs.yaml?
apiVersion: apps/v1
kind: ReplicaSet
metadata:
? name: rs01
spec:?
? #控制pod副本的數(shù)量(k8s系統(tǒng)集群中,匹配到標簽的數(shù)量)
? replicas: 9
? #選擇需要創(chuàng)建副本的pod的標簽
? selector:
? ? #1,聲明基于標簽匹配pod(這里就是與rc控制器的區(qū)別,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副本的數(shù)量(k8s系統(tǒng)集群中,匹配到標簽的數(shù)量)
? replicas: 9
? #選擇需要創(chuàng)建副本的pod的標簽
? selector:
? ? #1,聲明基于標簽匹配pod(這里就是與rc控制器的區(qū)別,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,創(chuàng)建rs與pod資源(v2版本)
· 編輯資源清單
[root@k8s231 rs]# cat rs.yaml?
apiVersion: apps/v1
kind: ReplicaSet
metadata:
? name: rs01
spec:?
? #控制pod副本的數(shù)量(k8s系統(tǒng)集群中,匹配到標簽的數(shù)量)
? replicas: 9
? #選擇需要創(chuàng)建副本的pod的標簽
? selector:
? ? #1,聲明基于標簽匹配pod(這里就是與rc控制器的區(qū)別,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;"]
· 創(chuàng)建資源
[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執(zhí)行清單
[root@k8s231 rs]# kubectl apply -f rs.yaml?
· 刪除現(xiàn)有rs啟動的pod
[root@k8s231 rs]# kubectl delete pods --all
· 再次查看,全變成v1版本
文章來源:http://www.zghlxwxcb.cn/news/detail-831765.html
注意,也可以一個一個pod刪除,就等于逐漸的一個一個pod進行升級和回滾,也叫金絲雀發(fā)布,在rs資源中,我們先不細講,等到deployments資源時,會詳細講這個發(fā)布機制;文章來源地址http://www.zghlxwxcb.cn/news/detail-831765.html
到了這里,關于14-k8s控制器資源-rs控制器replicasets的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!