在 Azure 中部署 Kubernetes 容器集群
在這個快速入門教程中,我們使用 Azure CLI 創建一個 Kubernetes 集群,然後在集群上部署運行由 Web 前端和 Redis 實例組成的多容器應用程序。一旦部署完成,應用程序可以通過互聯網訪問。
這個快速入門教程假設你已經基本了解了 Kubernetes 的概念,有關 Kubernetes 的詳細信息,請參閱 Kubernetes 文檔。
如果您沒有 Azure 賬號,請在開始之前創建一個免費帳戶。
登錄 Azure 雲控制台
Azure 雲控制台是一個免費的 Bash shell,你可以直接在 Azure 網站上運行。它已經在你的賬戶中預先配置好了, 單擊 Azure 門戶右上角菜單上的 「Cloud Shell」 按鈕;
該按鈕會啟動一個互動式 shell,您可以使用它來運行本教程中的所有操作步驟。
此快速入門教程所用的 Azure CLI 的版本最低要求為 2.0.4。如果您選擇在本地安裝和使用 CLI 工具,請運行 az --version
來檢查已安裝的版本。 如果您需要安裝或升級請參閱安裝 Azure CLI 2.0 。
創建一個資源組
使用 az group create 命令創建一個資源組,一個 Azure 資源組是指 Azure 資源部署和管理的邏輯組。
以下示例在 eastus 區域中創建名為 myResourceGroup 的資源組。
az group create --name myResourceGroup --location eastus
輸出:
{
"id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup",
"location": "eastus",
"managedBy": null,
"name": "myResourceGroup",
"properties": {
"provisioningState": "Succeeded"
},
"tags": null
}
創建一個 Kubernetes 集群
使用 az acs create 命令在 Azure 容器服務中創建 Kubernetes 集群。 以下示例使用一個 Linux 主節點和三個 Linux 代理節點創建一個名為 myK8sCluster 的集群。
az acs create --orchestrator-type=kubernetes --resource-group myResourceGroup --name=myK8sCluster --generate-ssh-keys
幾分鐘後,命令將完成並返回有關該集群的 json 格式的信息。
連接到 Kubernetes 集群
要管理 Kubernetes 群集,可以使用 Kubernetes 命令行工具 kubectl。
如果您使用 Azure CloudShell ,則已經安裝了 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 Vote 應用程序所需的所有對象。
創建一個名為 azure-vote.yaml
,將下面的內容拷貝到 YAML 中。
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:redis-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.yaml
輸出:
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 Vote 這個應用了。
刪除集群
當不再需要集群時,可以使用 az group delete 命令刪除資源組,容器服務和所有相關資源。
az group delete --name myResourceGroup --yes --no-wait
獲取示例代碼
在這個快速入門教程中,預先創建的容器鏡像已被用於部署 Kubernetes 。相關應用程序代碼 Dockerfile 和 Kubernetes 清單文件可在 GitHub 中獲得。Github 倉庫地址是 https://github.com/Azure-Samples/azure-voting-app-redis
下一步
在這個快速入門教程中,您部署了一個 Kubernetes 集群,並部署了一個多容器應用程序。
要了解有關 Azure 容器服務的更多信息,走完一個完整的從代碼到部署的全流程,請繼續閱讀 Kubernetes 集群教程。
作者:neilpeterson,mmacy 譯者:rieonke 校對:wxy
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive