Azure 部署K8S

Posted stonehe

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Azure 部署K8S相关的知识,希望对你有一定的参考价值。

 

在"China Azure中部署Kubernetes(K8S)集群"一文中,我们使用的ACS Version及Kubernete Version版本都比较低,ACS Version为0.8.0,Kubernete Version为1.6。随着ACS版本及Kubernete版本的不断跟新,我们会尽可能的采用新的version部署我们的集群服务。本文将使用 ACS Version为0.18.8,Kubernete Version为1.10.4 进行部署,同时Kubernetes.json的配置文件也加入了多个限制条件,详情操作见下:

1.查看Ubuntu 机器Version

[email protected]:~# lsb_release -a
No LSB modules are available.
Distributor ID:    Ubuntu
Description:    Ubuntu 16.04.5 LTS
Release:    16.04
Codename:    xenial

 

2.在该Ubuntu机器上安装CLI 2.0

[email protected]:~# az

     /    /      _____   _ _  ___ _
   / /   |_  / | | | __/ _
  / ____   / /| |_| | | |  __/
 /_/    \\_/___|\\__,_|_|  \\___|


Welcome to the cool new Azure CLI!

Use `az --version` to display the current version.
Here are the base commands:

 

3.下载并安装 Azure 容器服务引擎(acs-engine) 

wget https://github.com/Azure/acs-engine/releases/download/v0.18.8/acs-engine-v0.18.8-linux-amd64.tar.gz

tar zxvf acs-engine-v0.18.8-linux-amd64.tar.gz

cd acs-engine-v0.18.8-linux-amd64/

[email protected]:~/acs-engine-v0.18.8-linux-amd64# ./acs-engine version
Version: v0.18.8
GitCommit: 71d88da
GitTreeState: clean

 

4.创建资源组并获取服务主体身份(service principal)

[email protected]:~# az cloud set -n AzureChinaCloud
[email protected]:~# az login -u "***@***.onmschina.cn"
Password: 
[
  {
    "cloudName": "AzureChinaCloud",
    "id": "***",
    "isDefault": true,
    "name": "He Liming (anitay)",
    "state": "Enabled",
    "tenantId": "***",
    "user": {
      "name": "***",
      "type": "user"
    }
  }
]
[email protected]:~# az account set --subscription  "***"
[email protected]:~# az group create -n hlmk8srgt1 -l chinanorth
{
  "id": "***",
  "location": "chinanorth",
  "managedBy": null,
  "name": "hlmk8srgt1",
  "properties": {
    "provisioningState": "Succeeded"
  },
  "tags": null
}
[email protected]:~# az ad sp create-for-rbac --role="Contributor" --scopes="***"
Retrying role assignment creation: 1/36
Retrying role assignment creation: 2/36
Retrying role assignment creation: 3/36
Retrying role assignment creation: 4/36
Retrying role assignment creation: 5/36
Retrying role assignment creation: 6/36
{
  "appId": "***",
  "displayName": "azure-cli-2018-09-18-07-49-05",
  "name": "http://azure-cli-2018-09-18-07-49-05",
  "password": "***",
  "tenant": "***"
}

备注:记录appId及password的值以备后续使用

 

5.创建一个kubernets.json模板文件

{
   "apiVersion": "vlabs",
   "location": "chinanorth",
   "properties" :   {  
      "orchestratorProfile" : {  
         "orchestratorType" : "Kubernetes",
         "kubernetesConfig" : {
            "schedulerConfig" : {  
               "--profiling" : "false"
            },
            "enableRbac":false,       
            "apiServerConfig" : {  
               "--audit-log-path" : "/var/log/audit.log",              
               "--audit-log-maxage": "30",
               "--audit-log-maxsize": "100",
               "--audit-log-maxbackup": "10",
               "--anonymous-auth":"false",
               "--profiling":"false"
            },
           "addons": [  
               {  
                 "name":"tiller",
                 "enabled":false
               },
               {  
                "name":"kubernetes-dashboard",
                  "enabled":false
               },
               {  
                  "name":"cluster-autoscaler",
                  "config":                  {  
                     "maxNodes":"10",
                     "minNodes":"2"
                  },
                  "enabled":true
               }
            ],
            "dnsServiceIP" : "10.2.0.240",
            "networkPolicy": "calico",
            "kubeletConfig" :  {  
              "--make-iptables-util-chains":"true",
               "--allow-privileged":"false",
               "--keep-terminated-pod-volumes":"false",
               "--read-only-port": "0",
               "--event-qps": "0", 
               "--cadvisor-port": "0"
            },
            "serviceCidr": "10.2.0.0/24",
            "controllerManagerConfig": {  
               "--terminated-pod-gc-threshold": "5000",
               "--profiling":"false"
            }
          },             
         "orchestratorVersion": "1.10.4"
      },
      "agentPoolProfiles": [  
         {  
            "storageProfile": "ManagedDisks",
            "name": "macsetupdeve",
            "count": 2,
            "osType": "Linux",
            "vnetSubnetId": "/subscriptions/***/resourceGroups/hlmk8st1/providers/Microsoft.Network/virtualNetworks/hlmk8svnet/subnets/default",
            "vmSize": "Standard_A2_v2",
            "availabilityProfile": "VirtualMachineScaleSets"
         }
      ],
      "servicePrincipalProfile": {  
         "clientId": "***",
         "secret": "***"
      },
      "linuxProfile": {  
         "adminUsername": "stone",
         "ssh": {  
            "publicKeys": [  
               {  
                  "keyData": "ssh-rsa *** [email protected]"
               }
            ]
         }
      },
      "masterProfile": {  
         "firstConsecutiveStaticIP": "10.2.0.100",
         "storageProfile": "ManagedDisks",
         "count": 1,
         "dnsPrefix": "hlmk8s-mstr000",
         "vnetSubnetId": "/subscriptions/***/resourceGroups/hlmk8st1/providers/Microsoft.Network/virtualNetworks/hlmk8svnet/subnets/default",
         "vmSize": "Standard_A2_v2"
      }
   }
}

备注:
clientId为之前记录的appId; secret为之前记录的password; keyData为登陆机器所需的公钥(需要使用ssh-keygen命令生成)

 

6.生成Azure模板文件

[email protected]:~/acs-engine-v0.18.8-linux-amd64# ./acs-engine generate kubernetes.json
INFO[0000] Generating assets into _output/hlmk8s-mstr001... 
[email protected]:~/acs-engine-v0.18.8-linux-amd64# ls
acs-engine  kubernetes.json  kubernetes.json.bak  kubernetes.json.bak1  kubernetes.json.bak2  LICENSE  _output  README.md  translations
[email protected]:~/acs-engine-v0.18.8-linux-amd64# cd _output/
[email protected]:~/acs-engine-v0.18.8-linux-amd64/_output# ls
hlmk8s-mstr000  hlmk8s-mstr001
[email protected]:~/acs-engine-v0.18.8-linux-amd64/_output# cd hlmk8s-mstr001/
[email protected]:~/acs-engine-v0.18.8-linux-amd64/_output/hlmk8s-mstr001# ls
apimodel.json  apiserver.key     azuredeploy.parameters.json  ca.key      client.key      etcdclient.key  etcdpeer0.key   etcdserver.key  kubectlClient.crt
apiserver.crt  azuredeploy.json  ca.crt                       client.crt  etcdclient.crt  etcdpeer0.crt   etcdserver.crt  kubeconfig      kubectlClient.key

 

7.部署Kubernetes集群,该过程大约需要20分钟左右

备注:使用较新的ACS生成的"azuredeploy.parameters.json"文件,不需要修改URL,直接就可以运行

[email protected]:~/acs-engine-v0.18.8-linux-amd64/_output/hlmk8s-mstr001# az group deployment create -g hlmrgk8stest02_deploy --resource-group hlmk8srgt1 --template-file azuredeploy.json --parameters azuredeploy.parameters.json

 

以上是关于Azure 部署K8S的主要内容,如果未能解决你的问题,请参考以下文章

Azure DevOps 中 Dapr项目自动部署流程实践

ML.NET机器学习API容器化与Azure DevOps实践:持续集成与k8s持续部署

kubespray安装高可用k8s集群

ASP.NET Core在Azure Kubernetes Service中的部署和管理

Azure 机器人微软Azure Bot 编辑器系列 : 机器人/用户提问回答模式,机器人从API获取响应并组织答案 (The Bot Framework Composer tutorial(代码片段

k8s的项目部署