在 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
相關文章
- 在 Azure 上部署 Kubernetes 叢集
- 容器化 | 在 Kubernetes 上部署 RadonDB MySQL 叢集MySql
- 教你在Kubernetes中快速部署ES叢集
- 在kubernetes上部署consul叢集
- 容器化 | 在 KubeSphere 中部署 MySQL 叢集MySql
- 在 Minecraft 中管理 Kubernetes 叢集Raft
- 使用Rancher在Kubernetes上部署EMQ X叢集MQ
- 在 Azure AKS 上部署 EMQX MQTT 伺服器叢集MQQT伺服器
- jmeter 叢集容器化部署JMeter
- Kubernetes — 在 OpenStack 上使用 kubeadm 部署高可用叢集
- 拆除kubeadm部署的Kubernetes 叢集
- Kubernetes部署叢集Mysql服務MySql
- 將 .NET Aspire 部署到 Kubernetes 叢集
- 基於containerd 部署 kubernetes 1.28叢集AI
- 容器化|自建 MySQL 叢集遷移到 KubernetesMySql
- Kubernetes叢集部署史上最詳細(二)Prometheus監控Kubernetes叢集Prometheus
- 部署Kubernetes v1.22.10高可用叢集
- Kubernetes 部署 Nebula 圖資料庫叢集資料庫
- 基於Ubuntu部署企業級kubernetes叢集---k8s叢集容部署UbuntuK8S
- kubeadm部署一主兩從的kubernetes叢集
- 使用 Kubeadm+Containerd 部署一個 Kubernetes 叢集AI
- 使用Minikube部署本地Kubernetes叢集(二十八)
- 利用 Kubeadm部署 Kubernetes 1.13.1 叢集實踐錄
- Kubernetes(k8s)叢集部署(k8s企業級Docker容器集K8SDocker
- 容器化 | 在 K8s 上部署 RadonDB MySQL Operator 和叢集K8SMySql
- 在kubernetes叢集中部署open-falcon
- Kubernetes叢集部署
- 使用Gardener在GoogleCloudPlatform上建立Kubernetes叢集GoCloudUDPPlatform
- Kubernetes(k8s)部署redis-cluster叢集K8SRedis
- Kubernetes實戰:高可用叢集的搭建和部署
- 實踐展示openEuler部署Kubernetes 1.29.4版本叢集
- 在 AWS EKS 上部署 EMQX MQTT 叢集MQQT
- 在Rainbond上部署高可用Apollo叢集AI
- Terraform部署容器服務Swarm叢集及WordPress應用ORMSwarm
- Kubernetes 叢集搭建(上)
- Kubernetes 叢集搭建(下)
- Kubernetes叢集搭建(vagrant)
- kubernetes與web叢集Web