China Azure中部署Kubernetes(K8S)集群
目前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": , #master节点机器的默认数量
"dnsPrefix": "hlmnk8s03", #master节点机器的DNS名称前缀,同时也是_output目录下生成新目录的名称
"vmSize": "Standard_DS2" #master节点机器的尺寸大小
},
"agentPoolProfiles": [
{
"name": "agentpool3",
"count": , #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:
GitTreeState: clean #生产Azure模板,执行完成后你会发现一个 _output 目录,其中包括 ARM 模板以及 Kubernetes 的证书,配置文件等。
./acs-engine generate kubernetes.json
INFO[] 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:/google_containers/hyperkube-amd64:v1.6.11
#修改“dockerEngineDownloadRepo” 的值为:https://mirror.kaiyuanshe.cn/docker-engine/apt/repo
#修改“kubernetesTillerSpec” 的值为:crproxy.trafficmanager.net:/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
China Azure中部署Kubernetes(K8S)集群的更多相关文章
- Centos7 安装部署Kubernetes(k8s)集群
目录 一.系统环境 二.前言 三.Kubernetes 3.1 概述 3.2 Kubernetes 组件 3.2.1 控制平面组件 3.2.2 Node组件 四.安装部署Kubernetes集群 4. ...
- 5.基于二进制部署kubernetes(k8s)集群
1 kubernetes组件 1.1 Kubernetes 集群图 官网集群架构图 1.2 组件及功能 1.2.1 控制组件(Control Plane Components) 控制组件对集群做出全局 ...
- Centos 7 部署Kubernetes(K8S)集群
资源链接:https://pan.baidu.com/s/1-PT_QQAf7cTu_znX-S-r9Q 密码:33sr 转发:http://blog.51cto.com/lizhenliang/19 ...
- Istio(二):在Kubernetes(k8s)集群上安装部署istio1.14
目录 一.模块概览 二.系统环境 三.安装istio 3.1 使用 Istioctl 安装 3.2 使用 Istio Operator 安装 3.3 生产部署情况如何? 3.4 平台安装指南 四.Ge ...
- 使用kubectl管理Kubernetes(k8s)集群:常用命令,查看负载,命名空间namespace管理
目录 一.系统环境 二.前言 三.kubectl 3.1 kubectl语法 3.2 kubectl格式化输出 四.kubectl常用命令 五.查看kubernetes集群node节点和pod负载 5 ...
- Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列之集群部署环境规划(一)
0.前言 整体架构目录:ASP.NET Core分布式项目实战-目录 k8s架构目录:Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列目录 一.环境规划 软件 版本 ...
- Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列之自签TLS证书及Etcd集群部署(二)
0.前言 整体架构目录:ASP.NET Core分布式项目实战-目录 k8s架构目录:Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列目录 一.服务器设置 1.把每一 ...
- Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列之flanneld网络介绍及部署(三)
0.前言 整体架构目录:ASP.NET Core分布式项目实战-目录 k8s架构目录:Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列目录 一.flanneld介绍 ...
- Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列之部署master/node节点组件(四)
0.前言 整体架构目录:ASP.NET Core分布式项目实战-目录 k8s架构目录:Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列目录 1.部署master组件 ...
随机推荐
- 前端魔法堂——异常不仅仅是try/catch
前言 编程时我们往往拿到的是业务流程正确的业务说明文档或规范,但实际开发中却布满荆棘和例外情况,而这些例外中包含业务用例的例外,也包含技术上的例外.对于业务用例的例外我们别无它法,必须要求实施人员与 ...
- linux系统下Python虚拟环境的安装和使用
前言:进行python项目开发的时候,由于不同的项目需要使用不同的资源包和相关的配置,因此创建多个python虚拟环境,在虚拟环境下开发就显得很有必要. 安装虚拟环境 步骤: 打开Linux终端(快捷 ...
- OpenWRT (RT5350) 使能两个串口
OpenWRT(RT5350) 默认使能一个串口(uartlite) ,当做console口了,另外一个串口(uartf)与gpio复用. 在查找资料的过程中,发现在新的内核中使用到了设备树(devi ...
- 彻底了解构建 JSON 字符串的三种方式
原创播客,如需转载请注明出处.原文地址:http://www.cnblogs.com/crawl/p/7701856.html 前言:JSON 是轻量级的数据交换格式,很常用,尤其是在使用 Ajax ...
- ios 返回不会自动刷新页面问题
在实际开发过程中,移动端的兼容性问题有很大的坑,安卓可以了ios不行,ios可以了安卓又失效了这样,其中ios的回退操作就是不会自动刷新页面,很烦! 常见的history.back() history ...
- (转)JVM性能调优之生成堆的dump文件
转自:http://blog.csdn.net/lifuxiangcaohui/article/details/37992725 最近因项目存在内存泄漏,故进行大规模的JVM性能调优 , 现把经验做一 ...
- 有关Datatabled的合并,排序和删除重复行的方法
当某些操作需要涉及合并Datatable时,我们应该如何操作呢? 下面是自己总结的一些方法: 当有两表dt1和dt2的时候,使用dt1.Merge(dt2) 可以将表1表2中相同的合并在一起 排序方法 ...
- Entity Framework Core 2.0 使用代码进行自动迁移
一.前言 我们在使用EF进行开发的时候,肯定会遇到将迁移更新到生产数据库这个问题,前面写了一篇文章介绍了Entity Framework Core 2.0的入门使用,这里面介绍了使用命令生成迁移所需的 ...
- ASP.NET MVC 分页
概述:数据比较多的时候,常使用分页.这里使用bootpag.js和PagedList这两个插件实现. 准备JS的引用 1.这个是bootstrap 中pagination的库 2..NET后台ToPa ...
- LeetCode 235. Lowest Common Ancestor of a Binary Search Tree (二叉搜索树最近的共同祖先)
Given a binary search tree (BST), find the lowest common ancestor (LCA) of two given nodes in the BS ...