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

  • 相关阅读:
    Python-环境配置
    Linux操作系统基
    BZOJ 1572 贪心(priority_queue)
    POJ 3040 贪心
    POJ 3039 搜索??? (逼近)
    POJ 2433 枚举
    BZOJ 1571 DP
    BZOJ 1232 Kruskal
    BZOJ 1231 状压DP
    POJ 2430 状压DP
  • 原文地址:https://www.cnblogs.com/stonehe/p/7904452.html
Copyright © 2011-2022 走看看