【譯】Hello Kubernetes快速交互實驗手冊


本篇已加入《.NET Core on K8S學習實踐系列文章索引》,可以點擊查看更多容器化技術相關系列文章。

翻譯: Edison Zhou

  

一、基本介紹

  此交互實驗可以讓你不用搭建K8S環境就可以輕松地嘗試管理一個簡單的容器化應用集群,可以學習到以下內容:
  • 部署一個容器化應用到一個集群中
  • 對部署進行伸縮(Scale)
  • 更新容器化應用至一個新版本
  • Debug容器化應用
  此交互實驗主要基於虛擬終端(Virutal Terminal),可以直接在你的Web瀏覽器中運行Minikube,這是一個可以隨處運行K8S的最小化的本地K8S環境,不需要你安裝任何軟件和做任何配置。

二、實驗內容

  1. 創建一個集群
  2. 部署一個應用
  3. 訪問當前應用
  4. 伸縮當前應用
  5. 滾動更新應用

三、具體步驟

創建一個集群

  選中“Create a Cluster"=>"Interactive Tutorial - Creating a Cluster",從這里開始
  
  然后會看到提示和終端的界面,這是一個基於Minikube的K8S終端:
  
  通過在終端中執行 minikube start 來創建一個單節點的K8S集群:
  
  通過執行 kubectl cluster-info 可以查看集群信息:
  

部署一個應用

  這里部署一個示例應用,執行以下命令:
kubectl run kubernetes-bootcamp \
--image=docker.io/jocatalin/kubernetes-bootcamp:v1 \
--port=8080
  這里kubectl run是老版本的命令,即將被廢除,建議使用kubectl create替代。
  
  通過執行kubectl get pods可以看到,當前的kubernetes-bootcamp-7dc9765bf6-dgmz8就是當前應用的Pod。

訪問當前應用

  默認情況下,所有Pod只能在集群內部訪問,想要從外部訪問,就必須映射端口。
kubectl expose deployment/kubernetes-bootcamp \
--type="NodePort"
--port 8080
  可以看到,映射成功:
  
  執行命令 kubectl get services,可以看到應用被映射到了節點的哪個端口:
  
  可以看出,當前應用所處的服務被映射到了32752端口上,這個端口是隨機分配的。因為采用NodePort方式的話,是會在30000-32767區間隨機取一個端口號。
怎么驗證部署的應用是否可以訪問?
curl your-cluster-ip:32725
  效果如下圖所示:
  

伸縮當前應用

  默認情況下,應用只會運行一個副本,可以通過kubectl get deployments來查看:
  
  那么,如果需要增加副本數,可以通過命令kubectl scale來增加,如下圖所示,可以看到現在已經由1個副本增長為了3個副本了:
  
  由於Pod是K8S資源調度的最小單位,因此執行kubectl get pods也可以驗證Pod的數量:
  
  這時,可以通過curl再次訪問應用,便可以看到這些請求都會發往不同的Pod(也不一定完全是每次都會轉發給不同的Pod),因為我們有3個副本會負載均衡:
  
  如果不需要很多的副本來負載均衡,也可以收縮副本數量,比如收縮到2個副本:
kubectl scale deployments/kubernetes-bootcamp --replicas=2
  

滾動更新應用

  當前應用kubernetes-bootcamp所用的image的版本為v1,假設現在有了新版本,可以通過以下命令來將其升級到v2。
kubectl set image deployments/kubernetes-bootcamp \
kubernetes-bootcamp=jocatalin/kubernetes-bootcamp:v2
  從下圖可以看到,更新版本之后原先v1的兩個Pod便已經在被停止,進而創建了兩個新的Pod:
  
  過了幾秒之后,再次查看,原先的兩個v1的Pod已經被刪除:
  
  這時可以通過curl進行驗證,可以發現版本號已經升級為了v2:
  
  這時如果發現v2存在某個百年一遇的大Bug(不容易發現那種),想要快速回退到上個版本v1,可以通過以下命令來快速回退:
kubectl rollout undo deployments/kubernetes-bootcamp
  可以看到回退之后,v2的兩個Pod就被停止了,進而新創建了兩個v1的Pod:
  
  這時如果再進行curl驗證,可以發現版本變為了v1了:
  

四、實驗小結

   這里通過官網的交互實驗教程快速的體驗了一把K8S的基本功能使用,全程通過kubectl來調用的K8S API,相信會對完全沒接觸K8S的童鞋有幫助。

參考資料

   K8S指導手冊https://kubernetes.io/docs/tutorials
   每天5分鍾玩轉K8Shttps://item.jd.com/12329528.html

 


免責聲明!

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



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