Kubernetes是非常流行的容器管控技术,为了让Kubernetes可以更深度集成阿里云的计算、存储和网络服务,以提供更佳的性能和网络特性支持,阿里云容器服务团队为Kubernetes提供了基于阿里云服务的CloudProvider插件。
同时,基于阿里云资源编排服务ROS的应用部署能力,阿里云用户可以非常方便的快速部署Kubernetes集群。本文接下来会详细介绍部署过程。
依赖条件
- 需要事先开通访问控制RAM服务,访问https://ram.console.aliyun.com点击开通服务即可
- 本次部署所创建的资源均为按量付费,根据阿里云计费要求,现金账户余额不能少于100元
拓扑结构
部署入口
根据使用场景不同,我们提供开发测试和高可用两种Kubernetes集群部署方案。
开发测试集群 | 高可用集群 |
---|---|
单Master节点 可配置Worker节点数 支持按需扩容、缩容 支持按需启动和销毁集群 |
3个Master节点提供高可用性 可配置Worker节点数 支持按需扩容、缩容 支持按需启动和销毁集群 |
部署到阿里云 | 部署到阿里云 |
部署过程
第一步: 选择部署区域
根据您的实际需要,选择将Kubernetes集群部署到阿里云的那个区域。 确认后点击"下一步"。
第二步: 配置启动参数
- 栈名,所部署的Kubernetes集群属于一个ROS的栈,栈名称在同一个地域不能重复
- 创建超时时间,整个部署过程的超时时间,默认60分钟,无需修改
- 失败回滚,点选失败回滚,如果部署过程中发生不可自动修复性错误,将删除所有已创建资源,反之,已创建资源将被保留,以便问题排查
- Master节点ECS实例规格,指定Master节点所运行的ECS实例的规格,默认ecs.n1.medium,根据实际需要可以选择更高配置的实例类型,配置不能低于默认规格
- Worker节点ECS实例规格,指定Worker节点所运行的ECS实例的规格,默认ecs.n1.medium,根据实际需要可以选择更高配置的实例类型,配置不能低于默认规格
- Worker节点数,指定Worker节点数,默认2,支持后期扩容
- ECS登陆密码,所创建的ECS实例可通过此密码登陆,请务必牢记密码
这里我们选择创建5个Worker节点,确认以上参数后,点击"创建"按钮,启动部署。
至此,部署请求已提交到资源编排服务,可以通过点击"进入事件列表"进入ROS控制台,通过ROS控制台实时监控部署过程。
注: 一个包含多节点的Kubernetes集群的创建时间会在十几分钟左右。
第三步:部署完成
通过ROS事件列表实时监控部署过程:
通过ROS资源列表查看部署过程所创建的所有资源:
等待部署完成,部署完成后在事件列表中会出现栈创建完成的事件记录:
通过栈概况可以查看部署完成后的输出结果:
通过输出结果中返回的信息,便可以对Kubernetes集群进行使用了,信息包括:
- AdminGateway: 可以直接通过SSH登录到Master节点,以便对集群进行日常维护
- APIServer_Intranet: Kubernetes的api server对集群内部提供服务的地址和端口,在高可用版本中,此IP为SLB地址,后端有3台Master提供服务
- APIServer_Internet: Kubernetes的api server对公网提供服务的地址和端口,可以通过此服务在用户终端使用kubectl等工具管理集群
例如: 通过SSH登录AdminGateway查看集群节点信息:
可以发现,一共有8个节点,包括3个Master节点和我们在参数设置步骤填写的5个Worker节点。
集群扩容和缩容
基于ROS的堆栈更新能力,我们可以根据实际业务需要,对Kubernetes集群的Worker节点进行扩容或者缩容。进入ROS栈列表找到我们所部署的Kubernetes集群,点击"更多",选择"更新堆栈":
点击“更新堆栈”后,会显示部署Kubernetes所使用的编排模板,通过修改模板可以完成非常复杂的集群升级,如果只是进行扩容或者缩容,可以直接点“下一步”跳过。
接下来,会进入参数配置页面,通过修改"Worker节点数"来完成集群扩容或缩容:
点击“更新”按钮后,资源编排服务开始对集群进行相应的扩容或缩容处理。像最开始的部署过程一样,我们可以通过事件列表来实时监控更新过程。
注:
- 由于升级过程依赖登陆ECS来拷贝配置信息,所以扩容、缩容时填的密码必须和最开始部署集群时填的密码一致
- 资源编排服务显示栈更新完成后,通过kubectl get node或者dashboard并不能马上看到新增的节点,需要几分钟时间等待节点注册
更多Kubernetes使用帮助请参考:
- 通过 kubectl 连接 Kubernetes 集群
- 访问 Kubernetes Web UI
- 通过 Kubernetes Web UI 管理应用