查看原文
其他

手把手教你从零开始搭建阿里云ACK集群和Rancher环境

RancherLabs 2019-12-18

以下文章来源于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 管理 AWS EKS 集群

如何统一管理谷歌GKE、AWS EKS和Oracle OKE

管理Kubernetes集群时需要关注的关键指标

Rancher Labs中国团队招聘架构师啦!坐标北上深,年薪30-50万上不封顶!我们等的那个人,会是你吗?(点击下方图片,查看详情!)

About Rancher Labs


Rancher Labs由CloudStack之父梁胜创建。旗舰产品Rancher是一个开源的企业级Kubernetes管理平台,实现了Kubernetes集群在混合云+本地数据中心的集中部署与管理。Rancher一向因操作体验的直观、极简备受用户青睐,被Forrester评为2018年全球容器管理平台领导厂商,被Gartner评为2018年全球最酷的云基础设施供应商。


目前Rancher在全球拥有超过一亿的下载量,并拥有包括中国人寿、华为、中国平安、兴业银行、民生银行、平安证券、海航科技、厦门航空、上汽集团、海尔、米其林、丰田、本田、中船重工、中联重科、迪斯尼、IBM、Cisco、Nvidia、辉瑞制药、西门子、CCTV、中国联通等全球著名企业在内的共25000家企业客户。

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存