目前China Azure還不支持容器服務(ACS),使用名稱“az acs create --orchestrator-type Kubernetes -g zymtest -n kubertest001 --generate-ssh-keys”嘗試創建,會提示如下報錯:
C:\Users\Administrator>az acs create --orchestrator-type Kubernetes -g zymtest -n kubertest001 --generate-ssh-keys Created SSH key files: C:\Users\Administrator\.ssh\id_rsa,C:\Users\Administrator\.ssh\id_rsa.pub Deployment failed. Correlation ID: df080d87-80c7-4b89-9f19-42eaf87d5a3c. {00.0000% - Starting .. "error": { "code": "InvalidResourceNamespace", "message": "The resource namespace 'Microsoft.ContainerService' is invalid." } }
可以采用類似本地部署K8S的方法在Azure平台部署Kubernete,如下為筆者整理的在Azure VM中部署K8S的方法,僅供大家參考:
1.部署一台Linux虛擬機,如下以Ubuntu16.04為例進行說明
2.需要在該VM上安裝Azure CLI 2.0
3.下載並安裝 Azure 容器服務引擎(acs-engine) 【建議在Ubuntu 16.04 中使用acs-engine 0.8.0進行部署,該系統版本是經過測試的較穩定版本】
wget https://github.com/Azure/acs-engine/releases/download/v0.8.0/acs-engine-v0.8.0-linux-amd64.tar.gz tar zxvf acs-engine-v0.8.0-linux-amd64.tar.gz cd acs-engine-v0.8.0-linux-amd64/
4.創建資源組並獲取服務主體身份(service principal)
#設置China Azure環境 az cloud set -n AzureChinaCloud #隨后輸入賬戶密碼 az login -u "***@***.partner.onmschina.cn" #設置即將操作資源的訂閱,該處填寫的為訂閱ID az account set --subscription "******" #創建資源組 az group create -n hlmrgk8sssd02 -l chinanorth #創建服務主體並將其權限賦予特定的資源組,該資源組將用戶創建K8S的所有Azure資源,以下生成的appId是后面“kubernetes.json”模板中的ClientID,password為Secret az ad sp create-for-rbac --role="Contributor" --scopes="/subscriptions/******/resourceGroups/hlmrgk8sssd02" { "appId": "******", "displayName": "azure-cli-2017-11-27-02-24-31", "name": "http://azure-cli-2017-11-27-02-24-31", "password": "******", "tenant": "******" }
5.生成模板
a.下載一個Kubernetes的示例集群模板:wget https://raw.githubusercontent.com/Azure/acs-engine/master/examples/kubernetes.json
b.編輯下載的模板,以下帶有注釋行信息需要進行添加或根據實際情況進行修改:
{ "apiVersion": "vlabs", "location": "chinanorth", #指定K8S集群節點機器的部署問題,China Azure中的可選項為“chinanorth”或“chinaeast” "properties": { "orchestratorProfile": { "orchestratorType": "Kubernetes", "orchestratorRelease": "1.6" }, "masterProfile": { "count": 1, #master節點機器的默認數量 "dnsPrefix": "hlmnk8s03", #master節點機器的DNS名稱前綴,同時也是_output目錄下生成新目錄的名稱 "vmSize": "Standard_DS2" #master節點機器的尺寸大小 }, "agentPoolProfiles": [ { "name": "agentpool3", "count": 2, #agent節點機器的默認數量 "vmSize": "Standard_DS2_v2", #agent節點機器的尺寸大小 "availabilityProfile": "AvailabilitySet" } ], "linuxProfile": { "adminUsername": "hlmstone", #節點機器的登陸用戶名 "ssh": { "publicKeys": [ { "keyData": "ssh-rsa ******" #連接節點機器的ssh公鑰 } ] } }, "servicePrincipalProfile": { "clientId": "******", #創建服務主體時生產的“appId” "secret": "******" #創建服務主體時生產的“password” } } }
c.生成Azure模板
#確認使用的acs-engine版本是正確的,我們使用的為v0.8.0 ./acs-engine version Version: v0.8.0 GitCommit: 79572455 GitTreeState: clean #生產Azure模板,執行完成后你會發現一個 _output 目錄,其中包括 ARM 模板以及 Kubernetes 的證書,配置文件等。 ./acs-engine generate kubernetes.json INFO[0000] Generating assets into _output/hlmnk8s03... cd _output/hlmnk8s03/ ls apimodel.json apiserver.crt apiserver.key azuredeploy.json azuredeploy.parameters.json ca.crt ca.key client.crt client.key kubeconfig kubectlClient.crt kubectlClient.key
d.編輯修改部分模板參數信息,切換到模板目錄_output/yourprefix,編輯azuredeploy.parameters.json。替換其中部分值如下:
【在筆者測試階段,為了在Azure中國區部署成功,部分模板參數需要做調整,在后續的開發中,這部分配置可能會被修正】
cd _output/hlmnk8s03/ vi azuredeploy.parameters.json #修改“kubernetesHyperkubeSpec” 的值為:crproxy.trafficmanager.net:6000/google_containers/hyperkube-amd64:v1.6.11 #修改“dockerEngineDownloadRepo” 的值為:https://mirror.kaiyuanshe.cn/docker-engine/apt/repo #修改“kubernetesTillerSpec” 的值為:crproxy.trafficmanager.net:6000/kubernetes-helm/tiller:v2.6.1
6.部署Kubernetes集群,該過程大約需要20分鍾左右,其中包括創建Azure資源如VNET,負載均衡,自定義路由,虛擬機,存儲賬號等,並配置虛擬機中kubernetes各組件和服務
az group deployment create --resource-group hlmrgk8sssd02 --template-file azuredeploy.json --parameters azuredeploy.parameters.json
7.使用Kubectl工具,設置kubeconfig配置文件,並查看集群節點狀態
a.如果沒有安裝Kubectl工具,可以運行以下命令進行安裝
curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl chmod +x ./kubectl sudo mv ./kubectl /usr/local/bin
b.設置kubeconfig配置文件,並查看集群節點狀態
export KUBECONFIG=kubeconfig/kubeconfig.chinaeast.json
kubectl get nodes
參考鏈接:
https://school.azure.cn/blog/429
https://docs.azure.cn/en-us/articles/azure-operations-guide/virtual-machines/linux/aog-virtual-machines-linux-container-service-deploy-kubernetes-via-acs-engine