RC主要的作用就是用來確保容器應(yīng)用的副本數(shù)始終保持在用戶定義的副本數(shù),即如果容器異常退出,會自動創(chuàng)建新的pod來替代戒努;而如果異常多出來的容器也會自動回收
kubernetes官方建議使用RS替代RC進行部署千扶,RS和RC沒有本質(zhì)的不同,只是名字不一樣秃嗜,并且RS支持集合式的selector
RS示例
apiVersion: extensions/v1beta1
kind: ReplicaSet
metadata:
name: frontend
spec:
replicas: 2
selector: //選擇標簽
matchLabels: //匹配標簽
app: frontend //標簽名
template: //模板
metadata:
labels:
app: frontend
spec:
containers:
- name: nginx
image: nginx
env: //注入環(huán)境變量
- name: GET_HOST_FROM
value: dns
ports:
- containerPort: 80
查看標簽
[root@master yaml]# kubectl get po --show-labels
NAME READY STATUS RESTARTS AGE LABELS
frontend-8csz8 1/1 Running 0 106s app=frontend
frontend-w2twt 1/1 Running 0 106s app=frontend
RS與Deployment的關(guān)聯(lián)
RS與Deployment的關(guān)聯(lián)圖.png
Deployment
Deployment為pod和ReplicaSet提供了一個聲明式定義方法权均,用來替代以前的RC來方便的管理應(yīng)用顿膨。典型的應(yīng)用場景包括;
1,定義Deployment來創(chuàng)建pod和ReplicaSet
2,滾動升級和回滾應(yīng)用
3,擴容和縮容
4,暫停和繼續(xù)Deployment
示例 部署一個nginx應(yīng)用
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 2
selector:
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx
ports:
- containerPort: 80
附加
kubectl create -f deployment.yaml --record
--record可以記錄命令 可以很方便查看revision的變化
擴容
kubectl scale deployment 控制器名 --replicas 10
如果集群支持horizontal pod autoscaling的話叽赊,還可以為deployment設(shè)置自動擴展
kubectl autoscale deployment 控制器名 --min=10 --max=15 --cpu-percent=80
更新
kubectl set image deployment/控制器名 鏡像名=鏡像名:版本號
暫停更新
kubectl rollout pause deployment/控制器名
回滾
kubectl rollout undo deployment/控制器名
查看回滾狀態(tài)
kubectl rollout status deployment/控制器名
指定回滾到某個版本
kubectl rollout undo deployment/控制器名 --to-revision=版本號
在線編輯yaml文件
[root@master yaml]# kubectl edit deployment //應(yīng)用yaml文件
[root@master yaml]# kubectl edit svc/應(yīng)用名 //應(yīng)用svc的yaml文件
查看deployment保存的歷史紀錄
[root@master yaml]# kubectl rollout history deployment 服務(wù)名
deployment.extensions/web
REVISION CHANGE-CAUSE
2 <none>
3 <none>
Deployment更新策略
Deployment可以保證在升級時只有一定數(shù)量的pod是down的恋沃,默認的他會確保至少有比期望的pod數(shù)量上一個是up狀態(tài)(最多一個不可用)
Deployment同時也可以確保只創(chuàng)建出超時期望數(shù)量的一定數(shù)量的Pod,默認的他會確保最多比期望的pod數(shù)量多一個的pod是up狀態(tài)(最多一個surge)