您好,登錄后才能下訂單哦!
這篇“k8s入門之deployment怎么使用”文章的知識點大部分人都不太理解,所以小編給大家總結了以下內容,內容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“k8s入門之deployment怎么使用”文章吧。
我們使用原來的方式創建一個pod
kubectl run mynginx --image=nginx
使用deployment方式創建一個pod
kubectl create deployment mytomcat --image=tomcat:8.5.68
當我們刪除使用kubectl run方式創建的pod時,發現一刪就真的刪掉了
[root@k8s-master ~]# kubectl get pod NAME READY STATUS RESTARTS AGE mynginx 1/1 Running 0 112s mytomcat-6f5f895f4f-7jqlr 1/1 Running 0 47s nfs-client-provisioner-6c8cdddb58-kh655 1/1 Running 8 7d [root@k8s-master ~]# [root@k8s-master ~]# [root@k8s-master ~]# kubectl delete pod mynginx pod "mynginx" deleted [root@k8s-master ~]# kubectl get pod NAME READY STATUS RESTARTS AGE mytomcat-6f5f895f4f-7jqlr 1/1 Running 0 2m4s nfs-client-provisioner-6c8cdddb58-kh655 1/1 Running 8 7d
當我們刪deployment創建的pod時,發現他又會自動幫我們創建一個
[root@k8s-master ~]# kubectl delete pod mytomcat-6f5f895f4f-7jqlr pod "mytomcat-6f5f895f4f-7jqlr" deleted [root@k8s-master ~]# kubectl get pod NAME READY STATUS RESTARTS AGE mytomcat-6f5f895f4f-s4zr7 1/1 Running 0 15s nfs-client-provisioner-6c8cdddb58-kh655 1/1 Running 8 7d
這個刪除可以當成是你node節點宕機的情況,我們把這個稱為k8s的自愈能力
這時候你又確實想刪除怎么辦,我們先試用下面命令查出deployment
[root@k8s-master ~]# kubectl get deploy NAME READY UP-TO-DATE AVAILABLE AGE mytomcat 1/1 1 1 13m nfs-client-provisioner 1/1 1 1 7d
使用刪除deployment命令
[root@k8s-master ~]# kubectl delete deploy mytomcat deployment.apps "mytomcat" deleted
這時候再查看就沒有了
[root@k8s-master ~]# kubectl get pod NAME READY STATUS RESTARTS AGE nfs-client-provisioner-6c8cdddb58-kh655 1/1 Running 8 7d
假設現在業務量上來,我們需要同時針對一個服務部署多個實例,可以使用--replicas,比如我們使用下面3個命令創建3個副本
kubectl create deployment my-dep --image=nginx --replicas=3
可以看到創建了一個deployment,3/3指期望創建3個,3個可用
[root@k8s-master ~]# kubectl get deploy NAME READY UP-TO-DATE AVAILABLE AGE my-dep 3/3 3 3 2m4s nfs-client-provisioner 1/1 1 1 7d
我們可以基于k8s實現手動擴縮容和動態擴縮容(根據系統負載) 手動擴縮容
使用kubectl scale命令
kubectl scale --replicas=5 deployment/my-dep
查看
[root@k8s-master ~]# kubectl get deploy NAME READY UP-TO-DATE AVAILABLE AGE my-dep 3/5 5 3 15m nfs-client-provisioner 1/1 1 1 7d
縮容
[root@k8s-node2 ~]# kubectl scale --replicas=2 deployment/my-dep deployment.apps/my-dep scaled
查看
[root@k8s-node2 ~]# kubectl get deploy NAME READY UP-TO-DATE AVAILABLE AGE my-dep 2/2 2 2 17m nfs-client-provisioner 1/1 1 1 7d
除了使用kubectl scale,還可以使用下面方式
kubectl edit deploy my-dep
這時候會以yaml格式打開,我們編輯這個replicas的值
保存后退出,這時候發現又變成了5份
[root@k8s-node2 ~]# kubectl get deploy NAME READY UP-TO-DATE AVAILABLE AGE my-dep 2/5 5 2 19m nfs-client-provisioner 1/1 1 1 7d
我們看到目前的pod都在這個node1節點
[root@k8s-master ~]# kubectl get pod -owide NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES my-dep-5b7868d854-9ljtd 1/1 Running 0 3m5s 10.244.36.105 k8s-node1 <none> <none> my-dep-5b7868d854-fh6bf 1/1 Running 0 3m5s 10.244.36.96 k8s-node1 <none> <none> my-dep-5b7868d854-l74rf 1/1 Running 0 3m5s 10.244.36.106 k8s-node1 <none> <none> my-dep-5b7868d854-r2dpl 1/1 Running 0 22m 10.244.36.109 k8s-node1 <none> <none> my-dep-5b7868d854-xsqzp 1/1 Running 0 22m 10.244.36.120 k8s-node1 <none> <none> nfs-client-provisioner-6c8cdddb58-kh655 1/1 Running 8 7d 10.244.36.110 k8s-node1 <none> <none>
我們嘗試把node1節點關掉,看下他是否會自動轉移,重新拉起正常運行呢
這時候我們需要等待一段時間,因為node節點掛掉會有一個閾值k8s才能感知
[root@k8s-master ~]# kubectl get pod -owide NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES my-dep-5b7868d854-694hk 1/1 Running 0 6m15s 10.244.169.191 k8s-node2 <none> <none> my-dep-5b7868d854-dq8h8 1/1 Running 0 6m15s 10.244.169.190 k8s-node2 <none> <none> my-dep-5b7868d854-vmlrz 1/1 Running 0 6m15s 10.244.169.151 k8s-node2 <none> <none> nfs-client-provisioner-6c8cdddb58-t7wmd 1/1 Running 0 22m 10.244.169.170 k8s-node2 <none> <none>
我們看下之前部署的my-dep使用了nginx最新版的鏡像
命令如下
kubectl set image deployment/my-dep nginx=nginx:1.16.1 --record //查看滾動狀態 kubectl rollout status deployment/my-dep
可以使用-w看到有一個逐步替換的過程,最后使用了我們指定的1.16.1版本
加入我們發現我們滾動更新的版本有問題,就需要執行版本回退
#歷史記錄 kubectl rollout history deployment/my-dep #查看某個歷史詳情 kubectl rollout history deployment/my-dep --revision=2 #回滾(回到上次) kubectl rollout undo deployment/my-dep #回滾(回到指定版本) kubectl rollout undo deployment/my-dep --to-revision=2
除了Deployment,k8s還有 StatefulSet 、DaemonSet 、Job 等 類型資源。我們都稱為 工作負載。有狀態應用使用 StatefulSet 部署,無狀態應用使用 Deployment 部署。
以上就是關于“k8s入門之deployment怎么使用”這篇文章的內容,相信大家都有了一定的了解,希望小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。