跳转至

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 官网

参考

回到页面顶部