隨着容器的火爆,各家雲廠商都推出自己的kubernetes服務,Azure平台上提供的托管kubernetes服務為AKS(Azure Kubernetes Service)。AKS服務本身免費,用戶只需為使用的Node虛機付費,master節點由Azure自動創建和維護,用戶也無需為master節點付費。下面是一張架構圖示:
本篇文章主要帶領大家創建一遍AKS集群,一方面方便了解AKS是什么,另一方面為之后的深入介紹做環境准備。
文章主要分為兩部分:
(1)AzurePortal、CLI創建集群演示;
(2)SSH登錄到AKS Node節點。
(1)AzurePortal、CLI創建集群演示
登錄portal.azure.com,搜索Kubernetes Service,選擇訂閱,資源組,為自己的Cluster命名,DNS name prefix指的是一個用於連接K8S API server的DNS前綴,service principal可以創建一個新的或者指定一個已有的,Azure中的服務本身也是一項需要驗證的身份,因為這項服務用到了平台的資源,因此每項服務都需要一個service principal作為身份認證,具體可以參考https://docs.microsoft.com/zh-cn/azure/role-based-access-control/overview中的說明。初次實驗,我們先都按照默認配置來,網絡以及其他部分會慢慢在后面的文章添加,按照提示輸入相關字段后點擊創建,等待完成。創建過程中可能會發現,AKS node 選機型的時候默認是一組相同配置的機型,比如你選的是Standard DS2 v2,node count 為3,那么后台就會創建3台DSv2 VM,一組一樣的為一個node pool,AKS當然也支持管理多組不同配置的node pool(節點池),這部分可以參考同事的一篇文章:https://mp.weixin.qq.com/s/Z1Wyuhi4wQ75DCoh5PjjGQ。
創建完集群后,你會發現你的資源組中多了兩個而不是一個資源組,這是因為每創建一個AKS集群都會產生兩個資源組,一個是你剛創建的那個,記錄集群的信息,另一個是自動創建的第二個資源組,MC_myResourceGroup_myAKSCluster_location格式命令,里面有集群所有節點的VM,存儲,網絡信息:
CLI命令創建的話,需要 CLI version 2.0.50以上,為了方便后面的操作,建議直接升級到最新版本,用戶可以用 az --verison 查看下當前版本,如果是windows用戶,可以按照https://docs.microsoft.com/en-us/cli/azure/install-azure-cli-windows?view=azure-cli-latest 操作,macOS 按照https://docs.microsoft.com/en-us/cli/azure/install-azure-cli-macos?view=azure-cli-latest,windows用戶如果是WSL(Windows Subsystem for Linux (WSL))的更新,建議參照https://docs.microsoft.com/en-us/cli/azure/install-azure-cli-apt?view=azure-cli-latest 去一步一步手動更新。
更新完成后我們嘗試在中國北2區域創建一個集群,當然還是熟悉的套路,創建資源組,命令的具體參數可以參考https://docs.microsoft.com/en-us/azure/aks/kubernetes-walkthrough,涉及的參數名稱也是一目了然,可以跟着鏈接的介紹直接走一遍。
(2)SSH登錄到AKS Node節點
SSH登錄node是想重點介紹的,因為作為一個托管的kubernetes平台服務,AKS集群中的master和node都不提供公有IP地址供直接登錄,但是用戶不可避免要登錄到node上去查看比如一些pod信息,日志,或者troubleshooting,AKS提供的進入node的方式是:使用秘鑰對,在AKS集群中創建一個運行linux鏡像,如debian的pod,通過pod SSH 你要進入的那個node的私有IP去訪問這個node(https://docs.microsoft.com/zh-cn/azure/aks/ssh),具體演示如下:
首先,開始之前你需要生成一個秘鑰對,而后將你的公鑰添加到要登錄的節點中,如下面2個圖片中的命令顯示簡要描述一下這個過程:
a, 將你的AKS集群資源組的信息打包到變量CLUSTER_RESOURCE_GROUP中;
b, 查看這個變量下的node VM信息,記下這個你要登錄的node的名稱;
c, 更新你的公鑰到node中,其中,--ssh-key-value ~/.ssh/id_rsa.pub 這里輸入你本地存放公鑰的路徑信息。
第二步是查看你要登錄的那台node的私有IP,可以用命令查看,也可以在portal上的MC_開頭的資源組里直接查看:比如我要登錄的這台就是10.240.0.6
第三步,
a,先在集群中運行一個debian的容器,這個image創建完成后即啟動bash界面,bash中先安裝SSH客戶端:apt-get update && apt-get install openssh-client -y
b,與此同時打開另一個terminal窗口,kubectl get pods查看在上一步中的pod名稱,然后將你的私鑰拷貝到pod中去:kubectl cp ~/.ssh/id_rsa aks-ssh-554b746bcf-kbwvf:/id_rsa
c,需要的話修改私鑰為只讀,然后回到debian容器中執行ssh -i id_rsa azureuser@node 私有IP, by default 集群中每個node的登陸名都是azureuser。然后就可以登錄到目標node了:
以上就是本篇文章的內容,附上相關參考文章: