China Azure中部署Kubernetes(K8S)集羣

 

目前China Azure還不支持容器服務(ACS),使用名稱「az acs create --orchestrator-type Kubernetes -g zymtest -n kubertest001 --generate-ssh-keys」嘗試建立,會提示以下報錯:node

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的方法,僅供你們參考:linux

 

1.部署一臺Linux虛擬機,以下以Ubuntu16.04爲例進行說明  git

 

2.須要在該VM上安裝Azure CLI 2.0github

 

3.下載並安裝 Azure 容器服務引擎(acs-engine)  【建議在Ubuntu 16.04 中使用acs-engine 0.8.0進行部署,該系統版本是通過測試的較穩定版本】docker

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)json

#設置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.生成模板api

a.下載一個Kubernetes的示例集羣模板:wget https://raw.githubusercontent.com/Azure/acs-engine/master/examples/kubernetes.jsonapp

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模板ssh

#確認使用的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

相關文章
相關標籤/搜索