我們通過一些簡單的例子來演示Deployment
的創建、查看、更新、刪除等操作,以期快速地掌握Deployment
的用法。
首先我們先將以下配置保存到名為deployment.yaml
的文件中。
apiVersion:apps/v1kind:Deploymentmetadata:name:nginx-deploymentlabels:app:nginxspec:replicas:3selector:matchLabels:app:nginxtemplate:metadata:labels:app:nginxspec:containers:-name:nginximage:nginx:1.19.0
該份配置將創建一個名為nginx-deployment
的Deployment
資源對象,根據spec.replicas
中的信息可知,它期望有3個Pod副本。
接下來使用kubectl create
命令將該配置提交給kube-apiserver
,如下所示:
[root@ecs-d8b6manifests]#kubectlcreate-fdeployment.yamldeployment.apps/nginx-deploymentcreated
根據命令行輸出內容可知,名為nginx-deployment
的Deployment
已創建完成。
當創建一個Deployment
資源對象時,Deployment
控制器不會直接創建Pod,而是通過創建ReplicaSet
來間接創建Pod。
查看新創建的Deployment
資源:
[root@ecs-d8b6manifests]#kubectlgetdeploymentNAMEREADYUP-TO-DATEAVAILABLEAGEnginx-deployment3/33390s
命令行輸出中各字段含義如下:
NAME:Deployment
資源名稱,同配置中的metadata.name
;
READY:<已處于Reday狀態的Pod數量>/<期望的Pod數量>;
UP-TO-DATE:處于最新狀態的Pod數量;
AVAILABLE:可用的Pod數量;
AGE:應用運行時間,也是資源自創建至今經過的時間。
此處READY
和AVAILABLE
有一些細微的區別,當Pod
中指定的容器全部運行起來后,就可以認定該Pod
為READY
,所以READY
含義更傾向于Running
,而AVAILABLE
要求會更嚴格一些,只有當Pod
處于READY
狀態且持續一段時間后才可被認定為AVAILABLE
,其含義更傾向于可用
的數量。
UP-TO-DATE
表示運行最新配置的Pod數量,當修改Deployment
配置中Pod模版時,新版的Pod會被創建且短期內會與舊版的Pod并存,UP-TO-DATE
正是表示已創建的新版Pod數量。
接著查看ReplicaSet:
[root@ecs-d8b6manifests]#kubectlgetreplicasetNAMEDESIREDCURRENTREADYAGEnginx-deployment-6fd78f555b333104s
由Deployment
創建的ReplicaSet
名稱由Deployment
的名稱和一個隨機字符串組成。
接著查看最終生成的Pod:
[root@ecs-d8b6manifests]#kubectlgetpodsNAMEREADYSTATUSRESTARTSAGEnginx-deployment-6fd78f555b-clf9w1/1Running0110snginx-deployment-6fd78f555b-vlvp61/1Running0110snginx-deployment-6fd78f555b-wjslg1/1Running0110s
這些Pod都是由ReplicaSet
自動創建出來的,其名稱由ReplicaSet
名稱和一個隨機字符串組成。
由于Deployment
控制器通過ReplicaSet
來創建并管理Pod,當修改Deployment
配置中的spec.replicas
時,Deployment
控制器相應地也會修改Replicaset
中spec.replicas
值,最終由Replicaset
控制器來調整Pod的副本數,該部分功能我們已經在介紹ReplicaSet
時演示過,此處不再演示。
我們在此演示一種Deployment
相較于ReplicaSet
更高階的功能,即應用版本的升降級。當前應用使用的nginx鏡像版本為1.19.0
,我們希望把該版本降為1.18.0
。
通過以下命令,將spec.template.spec.containers.image
值由nginx:1.19.0
改為nginx:1.18.0
:
[root@ecs-d8b6manifests]#kubectleditdeploymentsnginx-deployment
然后再次查看Deployment
、ReplicaSet
和Pod
:
[root@ecs-d8b6manifests]#kubectlgetdeploymentNAMEREADYUP-TO-DATEAVAILABLEAGEnginx-deployment3/33333m[root@ecs-d8b6manifests]#kubectlgetreplicasetNAMEDESIREDCURRENTREADYAGEnginx-deployment-6fd78f555b00033mnginx-deployment-7df9bc6ff533332s[root@ecs-d8b6manifests]#kubectlgetpodsNAMEREADYSTATUSRESTARTSAGEnginx-deployment-7df9bc6ff5-4rz8l1/1Running040snginx-deployment-7df9bc6ff5-tmxwl1/1Running044snginx-deployment-7df9bc6ff5-vmdzp1/1Running042s
可以看到,之前的ReplicaSet
(nginx-deployment-6fd78f555b)副本數已被修改為0,新的ReplicaSet
(nginx-deployment-7df9bc6ff5)被創建了出來,進而創建了新的Pod。新的Pod中運行的容器鏡像版本就是我們修改后的容器鏡像版本,讀者可以自行驗證。
當刪除Deployment
資源時,由Deployment
控制器創建的ReplicaSet
也會被刪除,因此由ReplicaSet
創建的Pod也會被刪除。
[root@ecs-d8b6manifests]#kubectldeletedeploymentnginx-deploymentdeployment.apps"nginx-deployment"deleted[root@ecs-d8b6manifests]#kubectlgetreplicasetNoresourcesfoundindefaultnamespace.[root@ecs-d8b6manifests]#kubectlgetpodsNoresourcesfoundindefaultnamespace.
以上就是如何理解Deployment的操作,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注本站行業資訊頻道。
本文由 貴州做網站公司 整理發布,部分圖文來源于互聯網,如有侵權,請聯系我們刪除,謝謝!
c語言中正確的字符常量是用一對單引號將一個字符括起表示合法的字符常量。例如‘a’。數值包括整型、浮點型。整型可用十進制,八進制,十六進制。八進制前面要加0,后面...
2022年天津專場考試原定于3月19日舉行,受疫情影響確定延期,但目前延期后的考試時間推遲。 符合報名條件的考生,須在規定時間登錄招考資訊網(www.zha...
:喜歡聽,樂意看。指很受歡迎?!巴卣官Y料”喜聞樂見:[ xǐ wén lè jiàn ]詳細解釋1. 【解釋】:喜歡聽,樂意看。指很受歡迎。2. 【示例】:這是...
1、賈君鵬事件發生的原因是:2009年7月16日,網友在百度貼吧魔獸世界吧發表的一個名為賈君鵬你媽媽喊你回家吃飯的帖子。2、賈君鵬事件發生經過是:在帖子發布以后,短短五六個小時內被390617名網友瀏覽。3、引來超過1.7萬條回復。(資料圖片)4、賈君鵬事件發生的結果是:這件事情被網友稱為網絡奇跡。5、賈君鵬你媽媽喊你回家吃飯也迅速的成為了網絡流行語。6、擴展資料:《賈君鵬你媽媽喊你回家吃飯》一帖...
資產托管是什么意思?資產托管是指擁有資產所有權的企業、單位,通過簽訂契約合同的形式將資產有償托管給專業的托管公司,由托管公司進行綜合的資產調劑,并最終實現資產變現的一種經營方式。托管經營模式存在的內在原因有哪些?1、雙方的風險偏好不同。二者考慮未來收益的角度不同,集團公司(或者大股東)沒有向社會公眾公開企業財務信息的要求,自身經營情況復雜,對風險相對不敏感,屬于風險中性群體,在未來經營條件存在不確...
隨著人們消費觀念的改變,各種的消費貸款或者信用卡充斥到每個人的生活中,宣傳的賣點也是各具特色的,有的說看電影優惠,有的說購物打折,有的是酒店打折,適合不同的人群的,比如說酒店打折適合經常出去旅游或者出差的人,黑卡這個詞語,估計很多人都聽說過是身份的象征,是財富的代名詞,那么環球黑卡是騙子嗎?最近還是很火的,為此小編給大家介紹一下。環球黑卡欺詐是真的么?1、環球黑卡(BLACK MAGIC)是杭州冒...