k8s 核心功能 - 每天5分鍾玩轉 Docker 容器技術(116)


本節帶領大家快速體驗 k8s 的核心功能:應用部署、訪問、Scale Up/Down 以及滾動更新。

部署應用

執行命令:

kubectl run kubernetes-bootcamp \
--image=docker.io/jocatalin/kubernetes-bootcamp:v1 \
--port=8080

這里我們通過 kubectl run 部署了一個應用,命名為 kubernetes-bootcamp

Docker 鏡像通過 --image 指定。

--port 設置應用對外服務的端口。

575.png

這里 deployment 是 Kubernetes 的術語,可以理解為應用。

Kubernetes 還有一個重要術語 Pod

Pod 是容器的集合,通常會將緊密相關的一組容器放到一個 Pod 中,同一個 Pod 中的所有容器共享 IP 地址和 Port 空間,也就是說它們在一個 network namespace 中。

Pod 是 Kubernetes 調度的最小單位,同一 Pod 中的容器始終被一起調度。

運行 kubectl get pods 查看當前的 Pod。

576.png
 

kubernetes-bootcamp-390780338-q9p1t 就是應用的 Pod。

訪問應用

默認情況下,所有 Pod 只能在集群內部訪問。對於上面這個例子,要訪問應用只能直接訪問容器的 8080 端口。為了能夠從外部訪問應用,我們需要將容器的 8080 端口映射到節點的端口。

執行如下命令:

kubectl expose deployment/kubernetes-bootcamp \
--type="NodePort" \
--port 8080

577.png

執行命令 kubectl get services 可以查看應用被映射到節點的哪個端口。

578.png

這里有兩個 service,可以將 service 暫時理解為端口映射,后面我們會詳細討論。

kubernetes 是默認的 service,暫時不用考慮。kubernetes-bootcamp 是我們應用的 service,8080 端口已經映射到 host01 的 32320 端口,端口號是隨機分配的,可以執行如下命令訪問應用:

curl host01:32320

579.png

Scale 應用

默認情況下應用只會運行一個副本,可以通過 kubectl get deployments查看副本數。

580.png

執行如下命令將副本數增加到 3 個:

kubectl scale deployments/kubernetes-bootcamp --replicas=3

581.png

通過 kubectl get pods 也可以看到當前 Pod 也增加到 3 個。

582.png

通過 curl 訪問應用,可以看到每次請求發送到不同的 Pod,三個副本輪詢處理,這樣就實現了負載均衡。

583.png

要 scale down 也很方便,執行命令:

kubectl scale deployments/kubernetes-bootcamp --replicas=2

584.png

其中一個副本被刪除了。

滾動更新

當前應用使用的 image 版本為 v1,執行如下命令將其升級到 v2:

kubectl set image deployments/kubernetes-bootcamp kubernetes-bootcamp=jocatalin/kubernetes-bootcamp:v2

585.png

通過 kubectl get pods 可以觀察滾動更新的過程:v1 的 Pod 被逐個刪除,同時啟動了新的 v2 Pod。更新完成后訪問新版本應用。

586.png

如果要回退到 v1 版本也很容易,執行 kubectl rollout undo 命令:

kubectl rollout undo deployments/kubernetes-bootcamp

587.png

驗證版本已經回退到 v1。

588.png

至此,我們已經通過官網的交互式教程快速體驗了 Kubernetes 的功能和使用方法。教程其余章節將詳細討論 Kubernetes 的架構、典型的部署方法、容器編排能力、網絡方案、監控方案,幫助大家全面掌握 Kubernetes 的核心技能。

書籍:

1.《每天5分鍾玩轉Docker容器技術》
https://item.jd.com/16936307278.html


2.《每天5分鍾玩轉OpenStack》
https://item.jd.com/12086376.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM