zoukankan      html  css  js  c++  java
  • China Azure中部署Kubernetes(K8S)集群

    目前China Azure还不支持容器服务(ACS),使用名称“az acs create --orchestrator-type Kubernetes -g zymtest -n kubertest001 --generate-ssh-keys”尝试创建,会提示如下报错:

    C:UsersAdministrator>az acs create --orchestrator-type Kubernetes -g zymtest -n kubertest001 --generate-ssh-keys
    
    Created SSH key files: C:UsersAdministrator.sshid_rsa,C:UsersAdministrator.sshid_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

  • 相关阅读:
    HDU 2196 Computer
    HDU 1520 Anniversary party
    POJ 1217 FOUR QUARTERS
    POJ 2184 Cow Exhibition
    HDU 2639 Bone Collector II
    POJ 3181 Dollar Dayz
    POJ 1787 Charlie's Change
    POJ 2063 Investment
    HDU 1114 Piggy-Bank
    Lca hdu 2874 Connections between cities
  • 原文地址:https://www.cnblogs.com/stonehe/p/7904452.html
Copyright © 2011-2022 走看看