目錄
使用Kubectl部署應用
- Kubectl部署流程
- 部署一個簡單的Demo網站
一旦運作了Kubernetes叢集,就可以在其上部署容器化應用程式。是以在開始之前,我們需要先確定叢集已經準備就緒,無論是使用Minikube還是kubeadm建立的叢集。
接下來,我們講述使用Deployment(部署)對象來部署一個簡單網站。
Kubectl部署流程
使用Kubectl的部署流程如下所示:
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIyZuBnLzcjMxgzNxUTL0QDOwADN0QTMwETOwkTMwITL0QTNwczLclDM5EDMy8CX0QTNwczLcd2bsJ2Lc12bj5ycn9Gbi52YugTMwIzZtl2Lc9CX6MHc0RHaiojIsJye.png)
接下來我們根據這個流程部署一個簡單的Demo網站。
部署一個簡單的Demo網站
這裡,我們可以通過建立Kubernetes Deployment對象來運作應用程式。那麼我們需要編寫一個YAML檔案來定義Deployment對象。
1.編寫Deployment對象的配置檔案
在開始之前,我們需要對Deployment對象的配置有初步的了解。官方介紹文檔如下所示:
https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.15/#deployment-v1-apps
根據官方标準,我們定義了一個簡單的Deployment配置:
apiVersion: apps/v1 #API對象版本,可通過“kubectl api-versions”指令檢視
kind: Deployment #資源類型,區分大小寫,可通過“kubectl api-resources”指令檢視,這裡使用Deployment對象
metadata: #标準的中繼資料
name: demo-deployment #目前Deployment對象名稱,同一個命名空間下必須唯一
spec: #部署規範(目标),Deployment控制器會根據此模闆調整目前Pod到最終的期望狀态
replicas: 5 # Pod數量,這裡指運作5個Pod
selector: #選擇器,其定義了Deployment控制器如何找到要管理的Pod
matchLabels: #比對标簽
app: demo #待比對的标簽鍵值對
template: # Pod模闆定義
metadata: #标準的中繼資料
labels: #Pod标簽
app: demo #定義Pod标簽,由鍵值對組成
spec: #Pod規範
containers: #容器清單,Pod中至少有一個容器
- name: demo #容器名稱
image: microsoft/dotnet-samples:aspnetapp #鏡像位址
ports: #端口清單
- containerPort: 80 #設定容器端口
如上面定義所示,我們定義了一個簡單的部署示例,它将使用建立一個ReplicaSet對象以利用複制控制器建立5個Pod來運作“dotnet-samples”。
2.使用“kubectl create”執行資源建立
YAML檔案準備好了,接下來我們來執行建立:
kubectl create -f deployment-demo.yaml
結合配置,這裡有幾個重點說明一下:
- 如上面配置所示,部署名稱為“demo-deployment”。
- 此部署對象将建立5個複制的Pod,由replicas字段決定。如上圖所示該部署建立了5個Pod。
- selector字段定義了Deployment控制器如何找到要管理的Pod,是以标簽的鍵值對一定不能出錯。
- template字段則定義了Pod模闆,其子字段labels定義了Pod 的标簽,spec字段則定義了容器。
執行建立部署之後,我們可以通過指令“kubectl get Deployment demo-deployment”來檢查部署對象是否已經建立,部署是否已經完成:
如上圖所示,上述字段分别代表:
- READY代表是否已就緒,左側數字表示目前已運作的副本數,右側表示所需的副本數。
- UP-TO-DATE表示已更新已實作預期狀态的副本數。
- AVAILABLE則表示使用者可以使用的應用程式副本數。
- AGE表示應用已運作的時間。
通用的,我們可以運作以下指令來檢視副本集(ReplicaSet)對象:
kubectl get ReplicaSets -lapp=demo
通過上圖可知,我們建立Deployment對象的過程實際上就是生成對應的副本集對象(Replica Set)并完成Pod副本的建立過程。
值得注意的是,副本集的名稱格式為[部署名稱]-[随機字元串]。随機字元串是随機生成的,并使用pod-template-hash作為種子。如何檢視pod-template-hash呢?使用如下指令即可:
kubectl get pods -lapp=demo --show-labels
如上圖所示,5個Pod已經部署完成。
作者:雪雁
出處:http://www.cnblogs.com/codelove/
溝通管道:程式設計交流群<85318032> 産品交流群<897857351>
如果喜歡作者的文章,請關注【麥扣聊技術】訂閱号以便第一時間獲得最新内容。本文版權歸作者和湖南心萊資訊科技有限公司共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接配接,否則保留追究法律責任的權利。
靜聽鳥語花香,漫賞雲卷雲舒。