Azure容器中建立Kubernetes群集
像Kubernetes這樣的容器編排工具,對于容器化應用的管理至關重要。本文將分步講解在微軟Azure上建立Kubernetes集群。
盡管容器讓開發人員建立和部署新應用變得更加容易,但是在開發和生產中運行容器卻截然不同。現代,生產級別的應用程序都需要擴展以滿足不斷膨脹的需求,而且其支撐的基礎架構也要對單個組件故障具有恢復性。這樣,大多數公有云提供商提供了可以容納生產環境的容器服務,例如Microsoft的Azure Container Service。
通過Azure Container Service,可以構建使用Docker容器支持預配置的VM群集。使用這一集群,你可以選擇開源容器編排工具——Docker Swarm、DC/OS或Kubernetes來管理并擴展容器化應用。這些編排工具確保了容器所提供的服可以在集群中的多個節點之間進行負載平衡,并且可以水平擴展以滿足需求峰值。
2014年,谷歌開發并開源的Kubernetes已經變得越來越流行。該平臺已經成為生產環境中管理容器化應用的標準
為什么Kubernetes引領容器編排包
Kubernetes有一個蓬勃發展的開源貢獻者社區。該項目是GitHub最活躍的項目之一,擁有超過12,000個貢獻者,近50,000個貢獻者和23,000個明星產品。Kubernetes社區在Stack Overflow和Slack上也非常活躍,新用戶可以提出問題并利用社區的專業知識。
除了大量的支持者之外,Kubernetes可以在任何地方運行。因為它是一個開放源項目,組織可以在自己的私有云或公有云的虛擬機上運行它。而現在,通過谷歌和微軟的容器服務,Kubernetes集群作為服務已經可用,企業不必再擔心供應商鎖定問題。一旦公司決定使用Kubernetes,它可以將生產應用移動到任何私有云或公有云。
Azure Container Service構建Kubernetes逐步講解
Azure Container Service和它所支持的Kubernetes還相對較新。因此,在Azure Container Service上構建Kubernetes集群需要幾步。先讓我們看看當前的流程,然而探討如何部署、擴展Docker容器便能的服務。
步驟1:安裝Azure CLI 2.0
你可以使用Azure門戶作為一個圖形接口,來構建Azure Container Service集群。在門戶中單擊“新建(New)”,搜索Azure Container Service,然而創建一個新資源。這讓你可以下載Azure Resource Manager模板,來構建新的Azure Container Service集群。但是,為此,要首先創建一個Secure Socket Shell(SSH)密鑰對和Azure Active Directory(AD)服務主體。微軟已經很好地記錄了這個過程,但它仍然涉及到一系列的步驟。
另外,使用Azure命令行界面(CLI)更容易創建集群。使用單個命令,可以創建集群,以及生成SSH密鑰和所需的Azure AD服務主體。 Azure CLI可以跨平臺,用戶可以 在Windows、Mac 和Linux上使用它。
驟2:創建 Azure Container Service集群
安裝Azure CLI后,你只可以創建 這一集群。在下面,你將看到我自己構建的命令。注意,這是個單個命令,以 \ 區分每一行:
- az acs create --name kubecluster \
- --dns-prefix k8scluster2017 \
- --resource-group ACSRG \
- --orchestrator-type kubernetes \
- --generate-ssh-keys \
你可以看到我使用“az acs create”命令創建了Azure Container Service集群。你需要提供唯一的DNS前綴和資源組名稱。首先,創建一個空資源組,使用--resource-group參數作為新組的名稱。
5到10分鐘后,你將得到帶有一個Kubernetes主虛擬機和三個代理節點虛擬機的集群。這一代理是那些為運行在集群上的服務托管容器的虛擬機。
步驟3:在 Azure Container Service集群加載服務
為了管理集群,使用“z acs kubernetes install-cli”命令安裝Kubernetes CLI。
然后,你可以使用“kubectl”命令管理Kubernetes集群,這之中包括多個選項,如瀏覽當前節點和部署第一個服務。首先,使用“kubectl get nodes”命令瀏覽集群中的節點。(如圖1)
圖1 使用 kubectl瀏覽節點
在圖1中,我們有3個托管服務的代理節點,還有一個控制集群的主節點。
為了在集群中加載一個新服務,你可以從大量的容器鏡像進行選擇,當然,你還可以使用“kubectl run nginx --image nginx ”命令創建 nginix服務。這將加載一個新的容器,帶有即將運行在一個代理節點上的nginx鏡像。
創建了這一服務后,你就可以以公共方式訪問它。這樣,通過Azure Load Balance顯示這一服務,
創建該服務后,你可以啟用它的公開訪問。為此,請使用以下命令通過Azure Load Balancer公開服務,該負載平衡器將作為Azure Container Service部署的一部分來創建:
kubectl expose deployments nginx --port=80 --type=LoadBalancer
步驟4:通過網絡UI擴展服務
除了命令行工具外,你可以訪問Kubernetes網絡UI管理和擴展服務。使用“kubectl proxy”命令創建 為Kubernetes主節點創建一個代理。
現在,你可以在本地打開一個網絡瀏覽器,并查看網頁 http://localhost:8001/u。你應該看如圖2這樣的網絡控制臺。
圖2 Kubernetes網絡控制臺
左側,在“工作負載”下,單擊“部署”。 你會看到一個類似圖3的屏幕。
圖3 Kubernetes部署
注意,圖3中的部署在單個pod上運行了我們的nginx服務。Kubernetes中的pod是在Azure中作為虛擬機運行的代理節點。
為了手動擴展該服務并添加額外的節點,單擊服務名稱右側的下拉列表,然后單擊查看/編輯YAML。“replicas”屬性當前應設置為1.您可以將此字段編輯為2或3來手動擴展服務。完成后單擊“更新”(圖4)。
圖4.擴展Kubernetes
此時,你可以導航回“部署”,以查看多個現在支持nginx服務的pod(圖5)。
圖5 擴展后Kubernetes的部署
Kubernetes已經獲得了最成熟的,也是最復雜的容器編排引擎之一的聲譽。雖然管理員必須采取若干個步驟在Azure容器服務上設置Kubernetes集群,但它比從頭開始構建一個更容易。