Azure Managed Kubernetes (AKS) 簡介

Azure 容器服務 (AKS) 是 Microsoft Azure 最近發布的一個託管的 Kubernetes 服務(預覽版),它獨立於現有的 Azure Container Service (ACS)。藉助 AKS 用戶無需具備容器業務流程的專業知識就可以快速、輕鬆的部署和管理容器化的應用程序。AKS 支持自動升級和自動故障修復,按需自動擴展或縮放資源池,消除了用戶管理和維護 Kubernetes 集群的負擔。並且集群管理本身是免費的,Azure 只收取容器底層的虛擬機的費用。

ACS 是 Microsoft Azure 在2015年推出的容器服務,支持 Kubernetes、DCOS 以及 Dockers Swarm 等多種容器編排工具。並且 ACS 的核心功能是開源的,用戶可以通過github.com/Azure/acs-en來查看和下載使用。

由於目前 AKS 還在預覽版,現階段建議用戶還是繼續使用 ACS 來管理容器應用程序。

使用方法

以下文檔假設用戶已經安裝好了Azure CLI ,如未安裝可以參考這裡操作。

在創建 AKS 集群之前,首先需要開啟容器服務

# Enable AKSnaz provider register -n Microsoft.ContainerServicen

然後創建一個資源組(Resource Group)用來管理所有相關資源

# Create Resource Groupnaz group create --name group1 --location centralusn

接下來就可以創建 AKS 集群了

# Create aksnaz aks create --resource-group group1 --name myK8sCluster --node-count 3 --generate-ssh-keysn

稍等一會,集群創建好後安裝並配置 kubectl

# Install kubectlnaz aks install-clinn# Configure kubectlnaz aks get-credentials --resource-group=group1 --name=myK8sClustern

運行容器應用

創建一個 azure-vote.yaml文件,內容為

apiVersion: apps/v1beta1nkind: Deploymentnmetadata:n name: azure-vote-backnspec:n replicas: 1n template:n metadata:n labels:n app: azure-vote-backn spec:n containers:n - name: azure-vote-backn image: redisn ports:n - containerPort: 6379n name: redisn---napiVersion: v1nkind: Servicenmetadata:n name: azure-vote-backnspec:n ports:n - port: 6379n selector:n app: azure-vote-backn---napiVersion: apps/v1beta1nkind: Deploymentnmetadata:n name: azure-vote-frontnspec:n replicas: 1n template:n metadata:n labels:n app: azure-vote-frontn spec:n containers:n - name: azure-vote-frontn image: microsoft/azure-vote-front:redis-v1n ports:n - containerPort: 80n env:n - name: REDISn value: "azure-vote-back"n---napiVersion: v1nkind: Servicenmetadata:n name: azure-vote-frontnspec:n type: LoadBalancern ports:n - port: 80n selector:n app: azure-vote-frontn

然後執行下面的命令創建和訪問該vote示例應用:

# 創建部署nkubectl create -f azure-vote.yamlnn# 查詢 vote 前端應用的公網IP,需要稍等一下,然後就可以通過獲得的公網IP來訪問了nkubectl get service azure-vote-front --watchnn# 還可以配置 Pod 的自動擴展nkubectl autoscale deployment azure-vote-front --cpu-percent=50 --min=3 --max=10n

高級功能

訪問 Dashboard

# Create dashboardnaz aks browse --resource-group group1 --name myK8SClustern

手動擴展或收縮集群

az aks scale --resource-group=group1 --name=myK8SCluster --agent-count 5n

升級集群

# 查詢當前集群的版本以及可升級的版本naz aks get-versions --name myK8sCluster --resource-group group1 --output tablenn# 升級到 1.8.1 版本naz aks upgrade --name myK8sCluster --resource-group group1 --kubernetes-version 1.8.1n

當然也可以使用其他 Kubernetes 社區提供的工具和服務,比如使用 Helm 部署 Nginx Ingress 控制器

helm init --client-onlynhelm install stable/nginx-ingressn

當集群不在使用時,可以刪除集群

az group delete --name group1 --yes --no-waitn

下圖動態展示了一個部署 v1.7.7 版本集群並升級到 v1.8.1 的過程:

Azure Container Registry

在 AKS 預覽版發布的同時,Azure 還同時發布了 Azure Container Registry(ACR)服務,用於託管用戶的私有鏡像。

# Create ACRnaz acr create --resource-group myResourceGroup --name <acrName> --sku Basic --admin-enabled truenn# Loginnaz acr login --name <acrName>nn# Tag the image.naz acr list --resource-group myResourceGroup --query "[].{acrLoginServer:loginServer}" --output tablendocker tag azure-vote-front <acrLoginServer>/azure-vote-front:redis-v1nn# push imagendocker push <acrLoginServer>/azure-vote-front:redis-v1nn# List images.naz acr repository list --name <acrName> --output tablen

結語

AKS 的發布也一度讓很多 ACS 的老用戶感到迷惑,但 ACS 肯定還會繼續支持下去,並且當前來看,ACS 要比 AKS 穩定的多(ACS是穩定版,而AKS只是預覽版)。

為此,Brendan Burns 和 Gabe Monroy 還將在本周五 9:00 (PT時間,北京時間周六早上 1:00)舉行一個 Reddit AMA 活動,解釋和回答用於關於 AKS 的疑問。歡迎參加。

推薦閱讀:

如何評價谷歌為擴大全球雲服務計劃鋪設三條海底光纜?
Windows Phone死後,UWP還有未來嗎?
世紀互聯運營的國內版Windows Azure相比國內雲廠商到底有何競爭優勢?
Azure Container Instance (ACI)

TAG:Kubernetes | Azure | cloudnative |