您好,登錄后才能下訂單哦!
本篇文章給大家分享的是有關(guān)如何理解Deployment的操作,小編覺得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
我們通過一些簡(jiǎn)單的例子來演示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)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。