Kubernetes 好伙伴 Rancher 2.x
2020-03-21 by dongnan
开始之前
为什么要使用 Rancher 2.x
来管理 K8S
集群?
如果仅仅是运维一个角色使用 K8S
集群,那么 kubect
命令行已经足够强大能够并覆盖所有工作环节,
但是一个项目更常见的场景是 开发、测试、运维 三个角色相互配合完成工作的,
让开发和测试通过使用 kubectl
命令来完成 K8S
日常使用操作,学习和使用的成本非常高。
术业有专攻,开发、测试人员应该聚焦在业务功能代码实现、业务功能测试,在这种环境下如果能有一个Web控制台
能够通过简单的鼠标点击就能完成任务,
最好还能带有权限&角色
管理功能,以方便根据需求分配不同的权限。
猜对了这些事情 Rancher
能帮助你实现,例如项目代码上线场景:
CI
持续集成工具完成Docker
镜像的封装工作。- 开发人员通过
Rancher
完成代码上线。 - 测试人员进行测试并通过
Rancher
查看测试数据。 - 全部通过,运维人员通过
Rancher
完成生产环境上线工作。
在这里我们可以简单的理解 Rancher
是一个UI
是一个Web
形式的kubectl
,当然 Rancher
的强大的功能远不止这些,
详细信息请访问 Rancher 官网 。
接下来会介绍如何将部署好的K8S
集群,导入到 Rancher
管理和使用。
环境描述
kubernetes
测试的k8s
集群由一个Master
管理节点、两个Worker
计算节点组成,详细请参考这里。
Rancher
软件版本: v2.3.2
这里我们将 Rancher
部署在阿里云平台上,使用 ECS
作为Docker
宿主机,使用SLB
作为L7
负载均衡器。
为了方便演示,Rancher
采用”单节点 Docker 安装“开箱即用的方式,将 Rancher
部署在 K8S Master
相同的主机上(生产环境不建议)。
Rancher
服务端部署完成后,将上一章中已经部署好的K8S
集群导入Rancher
中。
关于SSL终止
Rancher 2.x
规定必须使用HTTPS
协议通信,这里将采用的方式为 单节点 + 外部L7负载均衡 这种方式。- 外部负载均衡器作为
SSL
终止,请求通过负载均衡器的HTTPS
(443
)被反向代理到Rancher Server HTTP
(80
)端口上。 - 外部负载均衡器需要配置
X-Forwarded-Proto: https
参数,Rancher Server HTTP
(80
)上收到负载均衡器的请求后,就不会再重定向到HTTPS
(443
)上。 - 如果希望
SSL
证书直接部署在Rancher
服务端的方式,详细请参考这里。
操作步骤
部署 Rancher
Rancher
服务端
docker run -d --restart=unless-stopped \
--name rancher2 \
-p 80:80 -p 443:443 \
-v rancher-data:/var/lib/rancher/ \
-v rancher-log:/var/log/auditlog \
-e TZ=Asia/Shanghai \
-e LANG=en_US.UTF-8 \
-e CATTLE_SYSTEM_CATALOG=bundled \
-e AUDIT_LEVEL=3 \
rancher/rancher:stable --no-cacerts
注意
-v rancher-data
与-v rancher-log
创建容器数据卷,保证数据持久化。- 添加
--no-cacerts
参数禁止Rancher
生成默认CA
证书。 CATTLE_SYSTEM_CATALOG=bundled
,该变量将告诉Rancher
使用Chart
的本地副本,而不是尝试从GitHub
上获取它们。
配置 SLB 负载均衡
使用准备的 rancher2.xyc.com
域名作为 Rancher Server
地址。
SLB
负载均衡 HTTPS
监听配置部分请参考 SSL终止
部分。
导入 K8S 集群
部署完成后,就可以访问 rancher
控制台了,首次登录会要求设置 admin
管理员的密码。
基础工作准备好以后,就可以添加集群了。
路径:添加集群 -> 选择集群类型 -> 导入现有Kubernetes集群 -> 按照提示操作即可。
设置集群名称并创建集群
将K8S
导入rancher
选择第2个(在现有的受支持的Kubernetes
集群上运行下面的kubectl
命令,将其导入Rancher
: )
最后完成添加集群任务
验证
创建一个 Deployment
, Yaml文档参考这里
小结
- 可以简单的将
Rancher
理解为一个UI
负责指挥k8s
集群。 - 也可以理解
Rancher
是一个Web
形式的kubectl
负责与Kubernetes Master
进行通信。 - 不过
Rancher
的功能非常强大、软件生态也很丰富(RKE k3s rancher-os
),详细信息请访问 Rancher 官网 。