使用Kubectl部署應用

目錄

使用Kubectl部署應用 api

  • Kubectl部署流程 app

  • 部署一個簡單的Demo網站 網站

 


 

一旦運行了Kubernetes集羣,就能夠在其上部署容器化應用程序。所以在開始以前,咱們須要先確保集羣已經準備就緒,不管是使用Minikube仍是kubeadm建立的集羣。spa

接下來,咱們講述使用Deployment(部署)對象來部署一個簡單網站。code

 

Kubectl部署流程

使用Kubectl的部署流程以下所示:對象

 

 

接下來咱們根據這個流程部署一個簡單的Demo網站。blog

 

部署一個簡單的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已經部署完成。

相關文章
相關標籤/搜索