(已淘汰) 部署適用於 Linux 容器的 Kubernetes 叢集

提示

如需本快速入門使用Azure Kubernetes Service的更新版本,請參閱快速入門:部署Azure Kubernetes Service (AKS) 叢集

警告

Azure Container Service (ACS) 即將淘汰。 ACS 不會再新增任何新的特性或功能。 所有 API、入口網站體驗、CLI 命令和文件均會標示為已淘汰。

自 2017 年引進 Azure Kubernetes Service (AKS) 起,即將其用於簡化 Kubernetes 的管理、部署及作業。 若您使用 Kubernetes 協調器,請於 2020 年 1 月 31 日前遷移至 AKS。 若要開始使用,請參閱遷移至 Azure Kubernetes Service

如需詳細資訊,請參閱 Azure.com 上的 Azure Container Service 淘汰通知

在本快速入門中,會使用 Azure CLI 部署 Kubernetes 叢集。 接著,在叢集上部署和執行多容器應用程式,其中包含 Web 前端和 Redis 執行個體。 完成後,即可透過網際網路來存取應用程式。

本文件中使用的範例應用程式是以 Python 撰寫。 這裡詳述的概念和步驟可用來將任何容器映像部署到 Kubernetes 叢集中。 GitHub 在 上可取得此專案相關的程式碼、Dockerfile 和預先建立之 Kubernetes 資訊清單檔案。

瀏覽至 Azure 投票的影像

本快速入門假設讀者已了解 Kubernetes 的基本概念,如需 Kubernetes 的詳細資訊,請參閱 Kubernetes 文件

如果您沒有 Azure 訂用帳戶,請在開始前建立免費帳戶

使用 Azure Cloud Shell

Azure Cloud Shell 是裝載於 Azure 中的互動式殼層環境,可在瀏覽器中使用。 您可以使用 Bash 或 PowerShell 搭配 Cloud Shell,與 Azure 服務共同使用。 Azure Cloud Shell 已預先安裝一些命令,可讓您執行本文提到的程式碼,而不必在本機環境上安裝任何工具。

要啟動 Azure Cloud Shell:

選項 範例/連結
選取程式碼區塊右上角的 [試試看]。 選取 [試用] 並不會自動將程式碼複製到 Cloud Shell 中。 Azure Cloud Shell 的試試看範例
請前往 https://shell.azure.com,或選取 [啟動 Cloud Shell] 按鈕,在瀏覽器中開啟 Cloud Shell。 在新視窗中啟動 Cloud Shell
選取 Azure 入口網站右上方功能表列上的 [Cloud Shell] 按鈕。 Azure 入口網站中的 [Cloud Shell] 按鈕

若要在 Azure Cloud Shell 中執行本文中的程式碼:

  1. 啟動 Cloud Shell。

  2. 選取程式碼區塊上的 [複製] 按鈕,複製程式碼。

  3. 在 Windows 和 Linux 上選取 Ctrl+Shift+V;或在 macOS 上選取 Cmd+Shift+V,將程式碼貼到 Cloud Shell 工作階段中。

  4. 選取 Enter 鍵執行程式碼。

如果您選擇在本機安裝和使用 CLI,本快速入門會要求您執行 Azure CLI 2.0.4 版或更新版本。 執行 az --version 以尋找版本。 如果您需要安裝或升級,請參閱安裝 Azure CLI

建立資源群組

使用 az group create 命令來建立資源群組。 Azure 資源群組是部署及管理 Azure 資源所在的邏輯群組。

下列範例會在 westeurope 位置建立名為 myResourceGroup 的資源群組。

az group create --name myResourceGroup --location westeurope

輸出:

{
  "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup",
  "location": "westeurope",
  "managedBy": null,
  "name": "myResourceGroup",
  "properties": {
    "provisioningState": "Succeeded"
  },
  "tags": null
}

建立 Kubernetes 叢集

使用 az acs create 命令,在 Azure Container Service 中建立 Kubernetes 叢集。 下列範例會建立名為 myK8sCluster 的叢集,其中包含一個 Linux 主要節點和三個 Linux 代理程式節點。

az acs create --orchestrator-type kubernetes --resource-group myResourceGroup --name myK8sCluster --generate-ssh-keys

在有限試用之類的某些情況下,Azure 訂用帳戶只擁有 Azure 資源的有限存取權。 如果部署因可用核心受限而失敗,請將 --agent-count 1 加入 az acs create 命令來減少預設代理程式的數量。

幾分鐘之後,此命令就會完成,並以 json 格式傳回叢集的相關資訊。

連線至叢集

若要管理 Kubernetes 叢集,請使用 Kubernetes 命令列用戶端:kubectl

如果您是使用 Azure Cloud Shell,則已安裝 kubectl。 如果您想要在本機進行安裝,可以使用 az acs kubernetes install-cli 命令。

若要設定 kubectl 來連線到 Kubernetes 叢集,請執行 az acs kubernetes get-credentials 命令。 此步驟會下載憑證並設定 Kubernetes CLI 以供使用。

az acs kubernetes get-credentials --resource-group=myResourceGroup --name=myK8sCluster

若要驗證針對您叢集的連線,請使用 kubectl get 命令來傳回叢集節點的清單。

kubectl get nodes

輸出:

NAME                    STATUS                     AGE       VERSION
k8s-agent-14ad53a1-0    Ready                      10m       v1.6.6
k8s-agent-14ad53a1-1    Ready                      10m       v1.6.6
k8s-agent-14ad53a1-2    Ready                      10m       v1.6.6
k8s-master-14ad53a1-0   Ready,SchedulingDisabled   10m       v1.6.6

執行應用程式

Kubernetes 資訊清單檔會定義所需的叢集狀態,包括哪些容器映像應在執行中。 例如,資訊清單可用來建立執行 Azure 投票應用程式所需的所有物件。

建立名為 azure-vote.yml 的檔案,並複製到下列 YAML。 如果您在 Azure Cloud Shell 中作業,可以使用 vi 或 Nano 建立這個檔案,猶如使用虛擬或實體系統。

apiVersion: apps/v1beta1
kind: Deployment
metadata:
  name: azure-vote-back
spec:
  replicas: 1
  template:
    metadata:
      labels:
        app: azure-vote-back
    spec:
      containers:
      - name: azure-vote-back
        image: redis
        ports:
        - containerPort: 6379
          name: redis
---
apiVersion: v1
kind: Service
metadata:
  name: azure-vote-back
spec:
  ports:
  - port: 6379
  selector:
    app: azure-vote-back
---
apiVersion: apps/v1beta1
kind: Deployment
metadata:
  name: azure-vote-front
spec:
  replicas: 1
  template:
    metadata:
      labels:
        app: azure-vote-front
    spec:
      containers:
      - name: azure-vote-front
        image: microsoft/azure-vote-front:v1
        ports:
        - containerPort: 80
        env:
        - name: REDIS
          value: "azure-vote-back"
---
apiVersion: v1
kind: Service
metadata:
  name: azure-vote-front
spec:
  type: LoadBalancer
  ports:
  - port: 80
  selector:
    app: azure-vote-front

使用 kubectl create 命令來執行應用程式。

kubectl create -f azure-vote.yml

輸出:

deployment "azure-vote-back" created
service "azure-vote-back" created
deployment "azure-vote-front" created
service "azure-vote-front" created

測試應用程式

執行應用程式時會建立 Kubernetes 服務,此服務會向網際網路公開前端應用程式。 此程序需要數分鐘的時間完成。

若要監視進度,請使用 kubectl get service 命令搭配 --watch 引數。

kubectl get service azure-vote-front --watch

一開始,azure-vote-front 服務的 EXTERNAL-IP 會顯示為 pending。 當 EXTERNAL-IP 位址從 pending 變成一個 IP 位址之後,請使用 CTRL-C 來停止 kubectl 監看式流程。

azure-vote-front   10.0.34.242   <pending>     80:30676/TCP   7s
azure-vote-front   10.0.34.242   52.179.23.131   80:30676/TCP   2m

您現在可以瀏覽至外部 IP 位址來查看 Azure 投票應用程式。

瀏覽至 Azure 投票的影像

刪除叢集

若不再需要叢集,您可以使用 az group delete 命令來移除資源群組、容器服務和所有相關資源。

az group delete --name myResourceGroup --yes --no-wait

取得程式碼

在本快速入門中,已使用預先建立的容器映像來建立 Kubernetes 部署。 相關的應用程式程式碼、Dockerfile 和 Kubernetes 資訊清單檔案,都可以在 GitHub 上取得。

https://github.com/Azure-Samples/azure-voting-app-redis

後續步驟

在本快速入門中,您已部署 Kubernetes 叢集,並將多容器應用程式部署到此叢集。

若要深入了解 Azure Container Service,並逐步完成部署範例的完整程式碼,請繼續 Kubernetes 叢集教學課程。