用于部署無狀態(tài)的服務(wù),這個(gè)最常用的控制器。可以管理多個(gè)副本的Pod實(shí)現(xiàn)無縫遷移、自動(dòng)擴(kuò)容縮容、自動(dòng)災(zāi)難恢復(fù)、一鍵回滾等功能。
雖然ReplicaSet可以確保在任何給定時(shí)間運(yùn)行的Pod副本達(dá)到指定的數(shù)量,但是Deployment(部署)是一個(gè)更高級(jí)的概念,它管理ReplicaSet并為Pod和ReplicaSet提供聲明性更新以及許多其他有用的功能,所以建議在實(shí)際使用中,使用Deployment代替ReplicaSet。
1、創(chuàng)建一個(gè)deployment 實(shí)例
cat deployment.yml
apiVersion: apps/v1
kind: Deployment
metadata:
name: deployment-nginx
labels:
app: nginx
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
ports:
- containerPort: 80
image: nginx:1.20
在該例中:
- 創(chuàng)建名為?
nginx-deployment
(由?.metadata.name
?字段標(biāo)明)的 Deployment。 -
selector
?字段定義 Deployment 如何查找要管理的 Pods。 在這里,你選擇在 Pod 模板中定義的標(biāo)簽(app: nginx
)。 不過,更復(fù)雜的選擇規(guī)則是也可能的,只要 Pod 模板本身滿足所給規(guī)則即可
運(yùn)行下面命令創(chuàng)建deployment
kubectl apply -f deployment.yml --record
注:--record標(biāo)志可以將執(zhí)行的命令寫入資源注解,每個(gè) Deployment 修訂版本所執(zhí)行過的命令。
2、運(yùn)行 kubectl get deployments 檢查deployment是否創(chuàng)建
kubectl get deployment
NAME READY UP-TO-DATE AVAILABLE AGE
deployment-nginx 3/3 3 3 47m
3、要查看deployment 上線狀態(tài),運(yùn)行 kubectl rollout status deployment/deployment-nginx
kubectl rollout status deployment/deployment-nginx
deployment "deployment-nginx" successfully rolled out
4、要查看 Deployment 創(chuàng)建的 ReplicaSet(rs) ,運(yùn)行 kubectl get rs
kubectl get rs
NAME DESIRED CURRENT READY AGE
deployment-nginx-7cf55fb7bb 3 3 3 31m
5、更新 deployment
- 比如需要更改鏡像
kubectl set image deployment/nginx-deployment nginx=nginx:1.16.1 --record
也可以使用 kubectl edit 的方法實(shí)現(xiàn)
kubectl edit deployment/deployment-nginx
6、回滾deployment
首先檢查deployment 的歷史版本
kubectl rollout history deployment/deployment-nginx
deployments "nginx-deployment"
REVISION CHANGE-CAUSE
1 kubectl apply deployment.yaml --record=true
2 kubectl set image deployment/deployment-nginx nginx=nginx:1.16.1 --record=true
查看歷史版本的詳細(xì)信息
kubectl rollout history deployment/deployment-nginx --revision=2
回滾到之前的版本
kubectl rollout undo deployment/deployment-nginx --to-revision=2
7、縮放deployment
使用一下指令進(jìn)行縮放副本數(shù)量
kubectl scale deployment/deployment-nginx --replicas=5 --recoed
#將名稱為deployment-nginx這個(gè)副本數(shù)量擴(kuò)充為5個(gè)副本,并且記錄修訂版本
比例縮放
? ? ? ? ?RollingUpdate 的 Deployment 支持同時(shí)運(yùn)行應(yīng)用程序的多個(gè)版本。 當(dāng)自動(dòng)縮放器縮放處于上線進(jìn)程(仍在進(jìn)行中或暫停)中的 RollingUpdate Deployment 時(shí), Deployment 控制器會(huì)平衡現(xiàn)有的活躍狀態(tài)的 ReplicaSets(含 Pods 的 ReplicaSets)中的額外副本, 以降低風(fēng)險(xiǎn)。這稱為?比例縮放。
maxSurge(最大增量):除當(dāng)前數(shù)量外還要添加多少個(gè)實(shí)例。
maxUnavailable(最大不可用量):滾動(dòng)更新過程中的不可用實(shí)例數(shù)。
可以運(yùn)行一下命令根據(jù)自身需要更改maxsurge 和maxunavaliable
kubectl edit deployment/deployment-nginx
編輯文件,找到maxsurge和maxunavailable,更改大小
8、暫停、恢復(fù)deployment文章來源:http://www.zghlxwxcb.cn/news/detail-411863.html
你可以在觸發(fā)一個(gè)或多個(gè)更新之前暫停 Deployment,然后再恢復(fù)其執(zhí)行。 這樣做使得你能夠在暫停和恢復(fù)執(zhí)行之間應(yīng)用多個(gè)修補(bǔ)程序,而不會(huì)觸發(fā)不必要的上線操作。文章來源地址http://www.zghlxwxcb.cn/news/detail-411863.html
kubectl rollout pause deployment.v1.apps/nginx-deployment #暫停
kubectl rollout resume deployment.v1.apps/nginx-deployment #恢復(fù)
到了這里,關(guān)于kubernetes之deployment的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!