Rancher 简单介绍

版本:v2.5

Rancher介绍

什么是 Rancher?

参考:https://docs.rancher.cn/docs/rancher2.5/overview/_index

Rancher 是为使用容器的公司打造的容器管理平台。Rancher 简化了使用 Kubernetes 的流程,开发者可以随处运行 Kubernetes(Run Kubernetes Everywhere),满足 IT 需求规范,赋能 DevOps 团队。

功能包括:

多集群管理
多项目/命名空间管理
多用户管理
仪表盘
多集群应用
安全
持续交付
RKE集群
更新证书
备份/恢复
告警
商店
通知
日志
监控
Istio
CIS扫描

下游集群支持:
Rancher 简单介绍

Rancher Server 架构

参考:https://docs.rancher.cn/docs/rancher2.5/overview/architecture/_index

Rancher Server 由认证代理(Authentication Proxy)、Rancher API Server、集群控制器(Cluster Controller)、etcd 节点和集群 Agent(Cluster Agent) 组成。除了集群 Agent 以外,其他组件都部署在 Rancher Server 中。

您可以在单个节点或高可用的 Kubernetes 集群上安装 Rancher。由于单节点安装只适用于开发和测试环境,而且单节点和高可用集群之间无法进行数据迁移,所以我们建议您从一开始就使用高可用的 Kubernetes 集群来部署 Rancher Server,而且您需要分开部署运行 Rancher Server 的集群和运行自己业务的下游集群。

下图描述的是用户通过 Rancher Server 管控 Rancher 部署的 Kubernetes 集群(RKE 集群)和托管的 Kubernetes 集群的(EKS)集群的流程。以用户下发指令为例,指令的流动路径如下:

  1. 首先,用户通过 Rancher UI(即 Rancher 控制台) Rancher 命令行工具(Rancher CLI)输入指令;直接调用 Rancher API 接口也可以达到相同的效果。
  2. 用户通过 Rancher 的代理认证后,指令会进一步下发到 Rancher Server 。
  3. 与此同时,Rancher Server 也会执行容灾备份,将数据备份到 etcd 节点。
  4. 然后 Rancher Server 把指令传递给集群控制器。集群控制器把指令传递到下游集群的 Agent,最终通过 Agent 把指令下发到指定的集群中。

如果 Rancher Server 出现问题,我们也提供了备用方案,您可以通过授权集群端点管理集群。

考虑到性能表现和安全因素,我们建议您使用两个 Kubernetes 集群,分开部署 Rancher Server 和工作负载。部署 Rancher Server 后,您可以创建或导入集群,然后在这些集群上运行您的工作负载。

  • 通过Rancher认证代理管理 Kubernetes 集群

Rancher 简单介绍

您可以在单个节点或高可用的 Kubernetes 集群上安装 Rancher。由于单节点安装只适用于开发和测试环境,而且单节点和高可用集群之间无法进行数据迁移,所以我们建议您从一开始就使用高可用的 Kubernetes 集群来部署 Rancher Server,而且您需要分开部署运行 Rancher Server 的集群和运行自己业务的下游集群。

与下游集群交互

Rancher 简单介绍

认证代理
集群控制器和集群 Agent
节点 Agents
授权集群端点

启动 Kubernetes 集群所需工具:

下游 Kubernetes 集群的类型决定了启动集群需要的工具。集群类型主要分为以下几种:

  • Rancher 通过云供应商自动创建节点部署 Kubernetes 集群

Rancher 可以动态启动位于云上的节点,如 Amazon EC2、DigitalOcean、Azure 和 vSphere,然后在节点上安装 Kubernetes。Rancher 使用 RKE 和 docker-machine启动这种集群。

  • Rancher 通过自定义主机部署的 Kubernetes 集群

配置这种集群时,Rancher 可以在已有的虚拟机、物理机或云主机上安装 Kubernetes。这种集群叫自定义集群。Rancher 使用RKE启动这种集群。

  • 云服务供应商提供的托管的 Kubernetes 集群

配置这种集群时,Kubernetes 由云服务供应商安装,如 GKE、ECS 和 AKS。Rancher 使用kontainer-engine来调用云厂商的 API 来启动集群。

  • 导入的 Kubernetes 集群

这种情况下,Rancher 只需要连接到已经配置好 Kubernetes 的集群。因此,Rancher 只设置 Rancher Agent 与集群通信,不直接启动集群。

推荐架构

参考:https://docs.rancher.cn/docs/rancher2.5/overview/architecture-recommendations/_index

我们建议将 Rancher Server 安装在高可用的 Kubernetes 集群上,主要是因为它可以保护 Rancher Server 的数据。在高可用安装中,负载均衡器充当客户端的单点入口,并在集群中的多台服务器之间分配网络流量,这有助于防止任何一台服务器成为单点故障。

  • K3s Kubernetes 集群安装

如果您是首次安装 Rancher v2.4,建议将其安装在 K3s Kubernetes 集群上。这种 K3s 架构的一个主要优点是,它允许使用外部数据库保存集群数据,从而可以将 K3s 服务器节点视为无状态的。

在 K3s 集群上安装 Rancher 的功能是在 Rancher v2.4 中引入的。K3s 易于安装,仅需要 Kubernetes 一半的内存,而且所有组件都在一个不超过 100 MB 的二进制文件中。

  • RKE Kubernetes 集群安装

如果要安装 Rancher v2.4 之前的版本,您需要在 RKE 集群上安装 Rancher,该集群中的数据存储在每个有 etcd 角色的节点上。在 Rancher v2.4 中,没有将 Rancher Server 从 RKE 集群迁移到 K3s 集群的方法。所有版本的 Rancher Server(包括 v2.4+)仍然可以安装在 RKE 集群上。

在 RKE 安装中,集群数据将在集群中的三个 etcd 节点上进行复制,这是为了保障在一个 etcd 节点发生故障时,可以提供冗余和数据复制。

  • 负载均衡的推荐配置参数

我们建议您使用以下方案,配置您的负载均衡和 Ingress Controller:

Rancher 的 DNS 应该被解析到四层负载均衡器上。
负载均衡器应该把 TCP/80 端口和 TCP/443 端口的流量转发到集群中全部的 3 个节点上。
Ingress Controller 将把 HTTP 重定向到 HTTPS,在 TCP/443 端口使用 SSL/TLS。
Ingress Controller 把流量转发到 Rancher Server 的 pod 的 80 端口。

Kubernetes 概念

参考:https://docs.rancher.cn/docs/rancher2.5/overview/concepts/_index

名词解释

参考:https://docs.rancher.cn/docs/rancher2.5/overview/glossary/_index

Rancher 名词解释

参考:https://docs.rancher.cn/docs/rancher2.5/overview/rancher-glossary/_index

安装指南

提示:
在 v2.4 之前的 Rancher 中,Rancher 服务器需要运行在 RKE Kubernetes 集群上。
在 Rancher v2.4.x 中,Rancher 需要运行在 RKE Kubernetes 集群或 K3s Kubernetes 集群上。
在 Rancher v2.5 中,Rancher 可以运行在任何 Kubernetes 集群上。

安装介绍

参考:https://docs.rancher.cn/docs/rancher2.5/installation/_index

我们建议使用 Kubernetes 程序包管理器 Helm 在专用的 Kubernetes 集群上安装 Rancher。在 RKE 集群中,需要使用三个节点以实现高可用性。在 K3s 集群中,仅需要两个节点即可。

另一个选择是在 Kubernetes 集群上使用 Helm 安装 Rancher,仅在集群中使用单个节点。虽然在这种情况下的 Rancher Server 不具有高可用性,但是这种架构既节省了资源,又保留了可扩展性。如果您想在短期内通过使用单个节点来节省资源,同时又保留高可用性迁移路径,最合适的架构就是单节点 Kubernetes 安装。

我们建议在 Kubernetes 集群上安装 Rancher,因为在多节点集群中,Rancher Server 可以实现高可用。这种高可用配置可以提升访问下游集群的稳定性。

因此,我们建议对于生产级别的架构,您应该使用 RKE 或 K3s 创建高可用的 Kubernetes 集群,然后在这个集群上安装 Rancher。安装 Rancher 后,您可以使用 Rancher 部署和管理 Kubernetes 集群。

为了测试或演示目的,您可以在单个节点上通过 Docker 安装 Rancher,这个过程非常简洁,基本上可以实现开箱即用。

  • RKE 高可用安装的 CPU 和 内存要求

这些要求适用于安装了 Rancher Server 的 RKE Kubernetes 集群中的每个主机。

Rancher 简单介绍

联系 Rancher,如果您要管理 2000+ 集群和/或 20000+ 节点。

  • K3s 高可用安装的 CPU 和 内存要求

这些要求适用于安装了 Rancher Server 的 K3s Kubernetes 集群中的每个主机。

Rancher 简单介绍

联系 Rancher,如果您要管理 2000+ 集群和/或 20,000+ 节点。

  • Ingress

Rancher 安装的 Kubernetes 集群中的每个节点都应该运行一个 Ingress。

Ingress 应被部署为 DaemonSet,以确保你的负载平衡器能够成功地将流量路由到所有节点。

对于 RKE、K3s 和 RancherD 的安装,你不需要手动安装 Ingress,因为它是默认安装的。

对于托管的 Kubernetes 集群(EKS、GKE、AKS)和 RKE2 Kubernetes 安装,你将需要设置 Ingress。

  • 磁盘

Rancher 的性能取决于 etcd 在集群中的性能。为了确保最佳速度,我们建议使用 SSD 磁盘来支持 Rancher 管里面的 Kubernetes 集群。在云提供商上,您还需要使用允许最大 IOPS 的最小大小。在较大的集群中,请考虑使用专用存储设备存储 etcd 数据和 wal 目录。

  • 节点 IP 地址

无论您是在单个节点上还是在 Kubernetes 集群上安装 Rancher,每个节点都应配置一个静态 IP。如果使用 DHCP,则每个节点应具有 DHCP 预留,以确保该节点分配的相同 IP 地址。

  • 端口要求

为了正常运行,Rancher 需要在 Rancher 节点和下游 Kubernetes 集群节点上开放一些端口。端口需求列出了不同集群类型的 Rancher 和下游集群的所有必要端口。

高可用安装

参考:https://docs.rancher.cn/docs/rancher2.5/installation/install-rancher-on-k8s/_index

先决条件:

Kubernetes 集群
CLI
Ingress Controller

Rancher 使用 Kubernetes 的 Helm 软件包管理器安装。Helm Charts 为 Kubernetes YAML 清单文档提供了模板语法。

有了 Helm,我们可以创建可配置的 Deployment,而不只是使用静态文件。

离线安装说明

步骤 1:准备节点和私有镜像仓库

参考:https://docs.rancher.cn/docs/rancher2.5/installation/other-installation-methods/air-gap/prepare-nodes/_index

  • K3s 高可用集群

在 K3s 集群中安装 Rancher 高可用,我们建议为高可用安装配置以下基础设施:

2 个 Linux 节点:通常是虚拟机,您可以自行选择的基础设施提供商,例如 Amazon EC2、阿里云、腾讯云或者 vShpere 等。
1 个外置数据库:用于存储集群数据。我们支持 PostgreSQL,MySQL 和 etcd。
1 个负载均衡器:用于将流量转发到这两个节点。
1 条 DNS 记录:用于将 URL 指向负载均衡器。这将成为 Rancher Server 的 URL,下游集群需要可以访问到这个地址。
私有 Docker 镜像仓库:用于为您的节点分发 Docker 镜像。

您还需要设置一个负载均衡器,以将流量定向到两个节点上的 Rancher 副本。这样可以在单个节点不可用时,继续保障与 Rancher 管理面的连接。

在后续步骤中配置 Kubernetes 时,K3s 工具将部署 Traefik Ingress 控制器。该控制器将侦听 worker 节点的 80 端口和 443 端口,以响应发送给特定主机名的流量。

在安装 Rancher 时(也是在后续步骤中),Rancher 系统将创建一个 Ingress 资源。该 Ingress 通知 Traefik Ingress 控制器侦听发往 Rancher 主机名的流量。Traefik Ingress 控制器在收到发往 Rancher 主机名的流量时,会将其转发到集群中正在运行的 Rancher Server Pod。

对于实现,请考虑是否要使用 4 层或 7 层负载均衡器:

4 层负载均衡器 是一种相对简单的负载均衡,它将 TCP 流量转发到您到节点。我们建议使用 4 层负载均衡器,将流量从 TCP / 80 端口和 TCP / 443 端口转发到 Rancher 管理面的集群节点上。集群上的 Ingress 控制器会将 HTTP 流量重定向到 HTTPS,并在 TCP / 443 端口上终止 SSL / TLS。Ingress 控制器会将流量转发到 Rancher Server Pod 的 TCP / 443 端口。

7 层负载均衡器 是一种相对复杂的负载均衡,但功能更加全面。例如,与 Rancher 本身进行 TLS 终止相反,7 层负载均衡器能够在负载均衡器处处理 TLS 终止。如果要在基础设施中进行 TLS 终止,7 层负载均衡可能会很有用。7 层负载均衡还可以为您的负载均衡器提供基于 HTTP 属性(例如 cookie 等)做出决策的能力,而 4 层负载均衡器不提供这种功能。如果决定在 7 层负载均衡器上终止 SSL / TLS 流量,则在安装 Rancher 时(后续步骤)需要使用--set tls=external选项。有关更多信息,请参阅Rancher Helm Chart 选项。

重要提示:安装后,请勿使用 local 集群的 Ingress 对 Rancher 以外的应用进行负载均衡。与其他应用共享此 Ingress 可能会在其他应用的 Ingress 配置重新加载后,导致 Rancher 出现 websocket 错误。我们强烈建议将 local 集群专用于 Rancher,而不应在 local 集群内部署任何其他应用。

配置私有 Docker 镜像仓库:

Rancher 支持使用私有镜像仓库进行离线安装。您必须有自己的私有镜像仓库或使用其他方式将 Docker 镜像分发到节点。

在后续步骤中,当您设置 K3s Kubernetes 集群时,您将创建一个私有镜像仓库配置文件,其中包含有关此镜像仓库的信息。
https://docs.rancher.cn/docs/k3s/installation/private-registry/_index

如果您需要有关创建私有 Docker 镜像仓库的帮助,请参阅 官方 Docker 文档。
https://docs.docker.com/registry/deploying/#run-an-externally-accessible-registry
  • RKE 高可用集群

在 RKE 集群中安装 Rancher 高可用,我们建议为高可用安装配置以下基础设施:

3 个 Linux 节点,通常是虚拟机,您可以自行选择的基础设施提供商,例如 Amazon EC2、阿里云、腾讯云或者 vShpere。
1 个负载均衡器,用于将流量转发到这三个节点。
1 条 DNS 记录,用于将 URL 指向负载均衡器。这将成为 Rancher Server 的 URL,下游集群需要可以访问到这个地址。
私有 Docker 镜像仓库,用于为您的节点分发 Docker 镜像。
步骤 2:同步镜像到私有镜像仓库

参考:https://docs.rancher.cn/docs/rancher2.5/installation/other-installation-methods/air-gap/populate-private-registry/_index/

对于创建仅有 Linux 节点的集群的 Rancher Server,请按以下步骤推送镜像到私有镜像库。

查找您用的 Rancher 版本所需要的资源 https://github.com/rancher/rancher/releases
搜集 cert-manager 镜像
将镜像保存到您的工作站中
推送镜像到私有镜像库
rancher-images.txt	此文件包含安装 Rancher、创建集群和运行 Rancher 工具所需的镜像列表。
rancher-save-images.sh	这个脚本会从 DockerHub 中拉取在文件rancher-images.txt中描述的所有镜像,并将它们保存为文件rancher-images.tar.gz。
rancher-load-images.sh	这个脚本会载入文件rancher-images.tar.gz中的镜像,并将它们推送到您自己的私有镜像库。

国内用户,可以从 http://mirror.rancher.cn --> rancher --> [rancher 版本] 下载 rancher-save-images.sh,该脚本支持通过参数 --from-aliyun true 来指定从阿里云镜像仓库拉去 rancher 镜像(从 rancher/rancher release 下载的 rancher-save-images.sh 不支持该参数),例如:

./rancher-save-images.sh --image-list ./rancher-images.txt --from-aliyun true
Image pull success: registry.cn-hangzhou.aliyuncs.com/rancher/busybox
Image pull success: registry.cn-hangzhou.aliyuncs.com/rancher/backup-restore-operator:v1.0.4-rc4
...
步骤 3:部署 Kubernetes 集群(Docker 单节点安装请跳过此步骤)

参考:https://docs.rancher.cn/docs/rancher2.5/installation/other-installation-methods/air-gap/launch-kubernetes/_index

  • 安装 K3s 集群

参考:https://docs.rancher.cn/docs/k3s/_index

  • 安装 RKE 集群

参考:https://docs.rancher.cn/docs/rke/installation/_index/

步骤 4:安装 Rancher
  • 高可用安装(推荐)

参考:https://docs.rancher.cn/docs/rancher2.5/installation/other-installation-methods/air-gap/install-rancher/_index

上一篇:k8s 安装 rancher


下一篇:java JNI介绍