本篇文章給大家分享的是有關(guān)如何理解Deployment的操作,小編覺得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
創(chuàng)新互聯(lián)建站是一家以成都網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計(jì)、品牌設(shè)計(jì)、軟件運(yùn)維、網(wǎng)站推廣、小程序App開發(fā)等移動(dòng)開發(fā)為一體互聯(lián)網(wǎng)公司。已累計(jì)為成都高空作業(yè)車租賃等眾行業(yè)中小客戶提供優(yōu)質(zhì)的互聯(lián)網(wǎng)建站和軟件開發(fā)服務(wù)。
我們通過一些簡單的例子來演示Deployment
的創(chuàng)建、查看、更新、刪除等操作,以期快速地掌握Deployment
的用法。
首先我們先將以下配置保存到名為deployment.yaml
的文件中。
apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment labels: app: nginx spec: replicas: 3 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:1.19.0
該份配置將創(chuàng)建一個(gè)名為nginx-deployment
的Deployment
資源對(duì)象,根據(jù)spec.replicas
中的信息可知,它期望有3個(gè)Pod副本。
接下來使用kubectl create
命令將該配置提交給kube-apiserver
,如下所示:
[root@ecs-d8b6 manifests]# kubectl create -f deployment.yaml deployment.apps/nginx-deployment created
根據(jù)命令行輸出內(nèi)容可知,名為nginx-deployment
的Deployment
已創(chuàng)建完成。
當(dāng)創(chuàng)建一個(gè)Deployment
資源對(duì)象時(shí),Deployment
控制器不會(huì)直接創(chuàng)建Pod,而是通過創(chuàng)建ReplicaSet
來間接創(chuàng)建Pod。
查看新創(chuàng)建的Deployment
資源:
[root@ecs-d8b6 manifests]# kubectl get deployment NAME READY UP-TO-DATE AVAILABLE AGE nginx-deployment 3/3 3 3 90s
命令行輸出中各字段含義如下:
NAME:Deployment
資源名稱,同配置中的metadata.name
;
READY:<已處于Reday狀態(tài)的Pod數(shù)量>/<期望的Pod數(shù)量>;
UP-TO-DATE:處于最新狀態(tài)的Pod數(shù)量;
AVAILABLE:可用的Pod數(shù)量;
AGE:應(yīng)用運(yùn)行時(shí)間,也是資源自創(chuàng)建至今經(jīng)過的時(shí)間。
此處READY
和AVAILABLE
有一些細(xì)微的區(qū)別,當(dāng)Pod
中指定的容器全部運(yùn)行起來后,就可以認(rèn)定該Pod
為READY
,所以READY
含義更傾向于Running
,而AVAILABLE
要求會(huì)更嚴(yán)格一些,只有當(dāng)Pod
處于READY
狀態(tài)且持續(xù)一段時(shí)間后才可被認(rèn)定為AVAILABLE
,其含義更傾向于可用
的數(shù)量。
UP-TO-DATE
表示運(yùn)行最新配置的Pod數(shù)量,當(dāng)修改Deployment
配置中Pod模版時(shí),新版的Pod會(huì)被創(chuàng)建且短期內(nèi)會(huì)與舊版的Pod并存,UP-TO-DATE
正是表示已創(chuàng)建的新版Pod數(shù)量。
接著查看ReplicaSet:
[root@ecs-d8b6 manifests]# kubectl get replicaset NAME DESIRED CURRENT READY AGE nginx-deployment-6fd78f555b 3 3 3 104s
由Deployment
創(chuàng)建的ReplicaSet
名稱由Deployment
的名稱和一個(gè)隨機(jī)字符串組成。
接著查看最終生成的Pod:
[root@ecs-d8b6 manifests]# kubectl get pods NAME READY STATUS RESTARTS AGE nginx-deployment-6fd78f555b-clf9w 1/1 Running 0 110s nginx-deployment-6fd78f555b-vlvp6 1/1 Running 0 110s nginx-deployment-6fd78f555b-wjslg 1/1 Running 0 110s
這些Pod都是由ReplicaSet
自動(dòng)創(chuàng)建出來的,其名稱由ReplicaSet
名稱和一個(gè)隨機(jī)字符串組成。
由于Deployment
控制器通過ReplicaSet
來創(chuàng)建并管理Pod,當(dāng)修改Deployment
配置中的spec.replicas
時(shí),Deployment
控制器相應(yīng)地也會(huì)修改Replicaset
中spec.replicas
值,最終由Replicaset
控制器來調(diào)整Pod的副本數(shù),該部分功能我們已經(jīng)在介紹ReplicaSet
時(shí)演示過,此處不再演示。
我們?cè)诖搜菔疽环NDeployment
相較于ReplicaSet
更高階的功能,即應(yīng)用版本的升降級(jí)。當(dāng)前應(yīng)用使用的nginx鏡像版本為1.19.0
,我們希望把該版本降為1.18.0
。
通過以下命令,將spec.template.spec.containers.image
值由nginx:1.19.0
改為nginx:1.18.0
:
[root@ecs-d8b6 manifests]# kubectl edit deployments nginx-deployment
然后再次查看Deployment
、ReplicaSet
和Pod
:
[root@ecs-d8b6 manifests]# kubectl get deployment NAME READY UP-TO-DATE AVAILABLE AGE nginx-deployment 3/3 3 3 33m [root@ecs-d8b6 manifests]# kubectl get replicaset NAME DESIRED CURRENT READY AGE nginx-deployment-6fd78f555b 0 0 0 33m nginx-deployment-7df9bc6ff5 3 3 3 32s [root@ecs-d8b6 manifests]# kubectl get pods NAME READY STATUS RESTARTS AGE nginx-deployment-7df9bc6ff5-4rz8l 1/1 Running 0 40s nginx-deployment-7df9bc6ff5-tmxwl 1/1 Running 0 44s nginx-deployment-7df9bc6ff5-vmdzp 1/1 Running 0 42s
可以看到,之前的ReplicaSet
(nginx-deployment-6fd78f555b)副本數(shù)已被修改為0,新的ReplicaSet
(nginx-deployment-7df9bc6ff5)被創(chuàng)建了出來,進(jìn)而創(chuàng)建了新的Pod。新的Pod中運(yùn)行的容器鏡像版本就是我們修改后的容器鏡像版本,讀者可以自行驗(yàn)證。
當(dāng)刪除Deployment
資源時(shí),由Deployment
控制器創(chuàng)建的ReplicaSet
也會(huì)被刪除,因此由ReplicaSet
創(chuàng)建的Pod也會(huì)被刪除。
[root@ecs-d8b6 manifests]# kubectl delete deployment nginx-deployment deployment.apps "nginx-deployment" deleted [root@ecs-d8b6 manifests]# kubectl get replicaset No resources found in default namespace. [root@ecs-d8b6 manifests]# kubectl get pods No resources found in default namespace.
以上就是如何理解Deployment的操作,小編相信有部分知識(shí)點(diǎn)可能是我們?nèi)粘9ぷ鲿?huì)見到或用到的。希望你能通過這篇文章學(xué)到更多知識(shí)。更多詳情敬請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。
分享文章:如何理解Deployment的操作
文章路徑:http://bm7419.com/article44/igddee.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供動(dòng)態(tài)網(wǎng)站、商城網(wǎng)站、標(biāo)簽優(yōu)化、手機(jī)網(wǎng)站建設(shè)、面包屑導(dǎo)航、網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)