创建 ACK 集群
首先从阿里云控制台进入【容器服务】
点击右上角的【创建 Kubernetes 集群】
选择【标准托管集群】
按需求进行配置即可
重要事项!
VPC 网络不要选错,因为一旦选择不可修改,只能重建集群。
强烈建议勾选【公网访问】。因为如果不勾选,就再也无法从公网访问集群(除非重建集群)。这将导致包括 CloudShell 在内的服务都不可用。
如果出于安全的考虑,确实不需要公网访问,也建议勾选【公网访问】,之后在自动创建的负载均衡中,停止对公网暴露的监听项,日后有需要还可以随时开启。
系统推荐选项强烈建议全部勾选,如果此时不勾,以后再开启会非常麻烦。
安装 Rancher
安装 Rancher 可以从以下方式二选一:
新建一台专用于 Rancher 的 ECS 来安装,可参考这篇文章
使用集群刚刚创建的 Worker 节点来安装
然后在要安装 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 集群
进入 Rancher,点击【Add Cluster】
选择【Import existing cluster】
然后你将看到如下图的页面,只需将最后一行命令复制,然后在 kubectl 中执行即可。
执行 kubectl
由于创建集群时,勾选了【公网访问】,所以只需要在 CloudShell 中执行就可以。
但是注意,由于刚刚设置的 Rancher Server URL 为内网地址,所以生成的导入命令是这样的:
10.0.148.20 是我的内网地址,CloudShell 无法访问,所以需要将命令中的这个地址改为公网地址。但通过公网地址访问上述 YAML 时,其中的 ServerURL 也会变成公网。(如此 Worker 节点就是通过公网 IP 来连接 Rancher 了)
但我们希望 Worker 节点通过内网 IP 来连接 RancherServer(速度更快且不需要流量),所以需要做以下处理。
1.先将 YAML 下载到 CloudShell 本地:
2.然后在 CloudShell 中,将文件中的公网 IP 替换为局域网 IP。
3.然后手工导入:
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
使用阿里云集群的优势
在此之前,我们团队一直是使用 ECS 自建集群。在一番评估之后,最终迁移到了阿里云的托管集群,主要考虑到以下几个优势。
与 Pod 网络互通
托管集群,VPC 网络与 Pod 网络是互通的。这意味着,在 ECS 机器里即可 ping 通 Pod IP。如此,只需要在 ECS 主机上,搭建一个 VPN,我们在连入 VPC 网络的同时,也连入了 Pod 网络。这对于开发调试而言,十分方便。此外,还可以使用阿里云的付费 VPN 网关功能,配置更简单。
扩容方便,且支持自动扩缩容
集群的自动伸缩,和容器的 HPA 功能,可以让集群和应用根据实际使用情况,自动进行扩容和缩容。这极大的解放了运维人员,节假日再也不需要为了扩容紧张值班了!
便捷使用云盘、NAS、OSS 作为 StorageClass
可直接使用云盘作为 PVC,这极大方便了 IO 性能敏感的应用(例如 DB)。OSS 则可作为存储成本非常低廉的方式,并且可以极大缩减我们管理 OSS 文件的成本。
自动接入阿里云日志系统
只需要在界面上进行简单地配置,就可以便捷的将容器日志接入阿里云日志系统。方便事后搜索、查看、分析日志,再也不需要担心日志把硬盘内存占满了。
评论