手把手教你从零开始搭建阿里云ACK集群和Rancher环境
以下文章来源于TypeScript全栈开发 ,作者k8w
Rancher 已支持阿里云Kubernetes容器服务(ACK),用户可以通过Rancher UI和API创建并升级ACK集群。本文将介绍,如何从零开始创建一个ACK集群,并安装Rancher,然后对它们进行管理。
创建ACK集群
1. 首先从阿里云控制台进入【容器服务】
2. 点击右上角的【创建Kubernetes集群】
3. 选择【标准托管集群】
4. 按需求进行配置即可
重要事项!
1. VPC网络不要选错,因为一旦选择不可修改,只能重建集群。
2. 强烈建议勾选【公网访问】。因为如果不勾选,就再也无法从公网访问集群(除非重建集群)。这将导致包括CloudShell在内的服务都不可用。
3. 如果出于安全的考虑,确实不需要公网访问,也建议勾选【公网访问】,之后在自动创建的负载均衡中,停止对公网暴露的监听项,日后有需要还可以随时开启。
4. 系统推荐选项强烈建议全部勾选,如果此时不勾,以后再开启会非常麻烦。
安装Rancher
安装Rancher可以从以下方式二选一:
新建一台专用于Rancher的ECS来安装,可参考这篇文章
使用集群刚刚创建的Worker节点来安装
然后在要安装Rancher的服务器上执行以下脚本:
sudo docker run -d --restart=unless-stopped \
-p 9999:443 \
-v /var/lib/rancher:/var/lib/rancher \
--name rancher-server \
rancher/rancher
如果你的Rancher Server需要从外网访问,则需要对外网暴露Rancher服务。
具体操作可以从以下方式二选一:
给所在的ECS绑定公网EIP,同时设置阿里云安全组策略(开放 9999端口)
使用阿里云SLB
配置Rancher
Rancher可以导入ACK集群的前提条件是,集群的Worker节点必须可以访问Rancher Server。不仅可以通过公网访问,也可以通过内网访问Rancher Server。
达到这一前提条件取决于Rancher第一次启动时,你设置的Rancher Server URL。
请务必确保Worker节点到此URL的网络是连通的。
该地址与你在网页浏览器中访问Rancher的地址,没有必然的关联。Worker节点将以此处填写的地址连接Rancher,但你依然使用公网域名/IP在浏览器中来访问Rancher。
在Rancher中导入ACK集群
1. 进入Rancher,点击【Add Cluster】
2. 选择【Import existing cluster】
3. 然后你将看到如下图的页面,只需将最后一行命令复制,然后在kubectl中执行即可。
执行kubectl
由于创建集群时,勾选了【公网访问】,所以只需要在CloudShell中执行就可以。
但是注意,由于刚刚设置的Rancher Server URL为内网地址,所以生成的导入命令是这样的:
curl --insecure -sfL https://10.0.148.20:9999/v3/import/8fq8pd9tlbmms5cv84wbvl6xcsdtddr8lhvwxm6f5vmtph56xd52jt.yaml | kubectl apply -f -
10.0.148.20 是我的内网地址,CloudShell无法访问,所以需要将命令中的这个地址改为公网地址。但通过公网地址访问上述YAML时,其中的ServerURL也会变成公网。(如此Worker节点就是通过公网IP来连接Rancher了)
但我们希望Worker节点通过内网IP来连接RancherServer(速度更快且不需要流量),所以需要做以下处理。
1.先将YAML下载到CloudShell本地:
curl --insecure -sfL https://公网IP:9999/v3/import/8fq8pd9tlbmms5cv84wbvl6xcsdtddr8lhvwxm6f5vmtph56xd52jt.yaml > rancher.yaml
2.然后在CloudShell中,将文件中的公网IP替换为局域网IP。
3.然后手工导入:
kubectl apply -f rancher.yaml
4.回到Rancher,可以看到刚刚创建的集群,Etcd和Nodes状态已经正常。
但Controller Manager和Scheduler的状态始终为不正常。经过与阿里云客服确认,由于我们创建的是ACK托管版集群,集群的Master节点并不可见,所以实际是获取不到Controller Manager和Scheduler的状态,所以此处实际没有问题,可以忽略。
之后,就可以正常使用Rancher了。
创建静态PVC和动态StorageClass
使用阿里云云盘作静态PVC
https://help.aliyun.com/document_detail/86612.html?spm=a2c4g.11186623.6.669.76ce43ce8PfQ0v
使用云盘做PVC有最小容量限制(普通5G,高效20G)
NAS作动态StorageClass
https://help.aliyun.com/document_detail/88940.html?spm=a2c4g.11186623.6.668.5dfe3269cBGI5X#h2-url-3
安装插件的YAML,有一处错误会导致部署不成功,删除即可
使用阿里云OSS做静态PVC
https://help.aliyun.com/document_detail/86543.html?spm=a2c4g.11186623.6.672.39916b80bTWatb
使用阿里云集群的优势
在此之前,我们团队一直是使用ECS自建集群。在一番评估之后,最终迁移到了阿里云的托管集群,主要考虑到以下几个优势。
与Pod网络互通
托管集群,VPC网络与Pod网络是互通的。这意味着,在ECS机器里即可ping通Pod IP。如此,只需要在ECS主机上,搭建一个VPN,我们在连入VPC网络的同时,也连入了Pod网络。这对于开发调试而言,十分方便。此外,还可以使用阿里云的付费VPN网关功能,配置更简单。
扩容方便,且支持自动扩缩容
集群的自动伸缩,和容器的HPA功能,可以让集群和应用根据实际使用情况,自动进行扩容和缩容。这极大的解放了运维人员,节假日再也不需要为了扩容紧张值班了!
便捷使用云盘、NAS、OSS作为StorageClass
可直接使用云盘作为PVC,这极大方便了IO性能敏感的应用(例如DB)。OSS则可作为存储成本非常低廉的方式,并且可以极大缩减我们管理OSS文件的成本。
自动接入阿里云日志系统
只需要在界面上进行简单地配置,就可以便捷的将容器日志接入阿里云日志系统。方便事后搜索、查看、分析日志,再也不需要担心日志把硬盘内存占满了。
推荐阅读
Rancher Labs中国团队招聘架构师啦!坐标北上深,年薪30-50万上不封顶!我们等的那个人,会是你吗?(点击下方图片,查看详情!)
About Rancher Labs
Rancher Labs由CloudStack之父梁胜创建。旗舰产品Rancher是一个开源的企业级Kubernetes管理平台,实现了Kubernetes集群在混合云+本地数据中心的集中部署与管理。Rancher一向因操作体验的直观、极简备受用户青睐,被Forrester评为2018年全球容器管理平台领导厂商,被Gartner评为2018年全球最酷的云基础设施供应商。
目前Rancher在全球拥有超过一亿的下载量,并拥有包括中国人寿、华为、中国平安、兴业银行、民生银行、平安证券、海航科技、厦门航空、上汽集团、海尔、米其林、丰田、本田、中船重工、中联重科、迪斯尼、IBM、Cisco、Nvidia、辉瑞制药、西门子、CCTV、中国联通等全球著名企业在内的共25000家企业客户。