Rancher - v2.5.16(OffLine)

序言

在服务端不联网的情况下如何搭建Rancherv2.5.15 [email protected]

关于Rancher的HA

通过如下说明可以了解到,高可用的Rancher即是指 Rancher Server的部署在高可用的服务上目前就是Kubernetes,而Rancher Client 不需要部署在Kubernetes上,Rancher Client 只是用于在Docker环境中启停服务[email protected]

由于只有一个节点和一个 Docker 容器,因此,如果该节点发生故障,并且其他节点上没有可用的 Rancher 数据副本,您将丢失 Rancher Server 的所有数据

将 Rancher 迁移到高可用性集群的能力取决于 Rancher 版本。

  • 对于 Rancher v2.0-v2.4,没有从 Docker 安装到高可用性安装的迁移路径。因此,如果您使用的是 v2.5 之前的 Rancher,您可能希望从一开始就使用 Kubernetes 安装。

  • 对于 Rancher v2.5+,可以使用 Rancher 备份操作员将 Rancher 从单个 Docker 容器安装迁移到高可用性 Kubernetes 集群上的安装。有关详细信息,请参考将 Rancher 迁移到新的集群。的文档。

涉及服务

  • Rancher Server: 是用于管理和配置 Kubernetes 集群。您可以通过 Rancher Server 的 UI 与下游 Kubernetes 集群进行交互。
  • RKE(Rancher Kubernetes Engine):是经过认证的 Kubernetes 发行版,它拥有对应的 CLI 工具可用于创建和管理 Kubernetes 集群。在 Rancher UI 中创建集群时,它将调用 RKE 来配置 Rancher 启动的 Kubernetes 集群。
  • K3s (轻量级 Kubernetes): 和 RKE 类似,也是经过认证的 Kubernetes 发行版。它比 RKE 更新,更易用且更轻量化,全部组件都在一个小于 100 MB 的二进制文件中。从 Rancher v2.4 开始,Rancher 可以安装在 K3s 集群上。
  • RKE2是一个完全合规的 Kubernetes 发行版,专注于美国联邦政府部门的安全和合规性。
  • RancherD是安装 Rancher 的新工具,从 Rancher v2.5.4 开始提供。它是一个实验性功能。RancherD 是一个二进制文件,它首先启动一个 RKE2 Kubernetes 集群,然后在集群上安装 Rancher 服务器 Helm 图。

K3s 高可用集群步骤

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

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

1、配置 Linux 节点#

这些主机可以与 Internet 断开连接,但需要能够与您的私有镜像仓库连接。

确保您的节点满足 OS、Docker、硬件和网络的常规安装要求。

要在 Amazon EC2 中的创建节点,请参考在 Amazon EC2 中配置节点

2、配置外部数据库#

支持使用 etcd 以外的数据库来运行 Kubernetes 的能力使 K3s 与其他 Kubernetes 发行版区分开来。该功能为 Kubernetes 运维人员供了灵活性。您可以选择最适合您的实际情况的数据库。

对于 K3s 高可用安装,您将需要配置以下外部数据库之一:

Rancher 对上述特定版本的数据库进行过测试和验证,如果您使用其他版本,可能会碰到问题。

在安装 Kubernetes 时,您需要传入有关 K3s 数据库连接的详细信息。

要在 Amazon 的 RDS 服务上创建 MySQL 数据库。请参考此教程

有关可用于配置 K3s 集群数据库的选项的完整列表,请参考K3s 文档

3、配置负载均衡器#

您还需要设置一个负载均衡器,以将流量定向到两个节点上的 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 选项

  • 有关如何设置 NGINX 负载均衡器的示例,请参考本页

  • 有关如何设置 Amazon ELB Network Load Balancer 的示例,请参考本页

  • 有关如何配置 F5 作为 Rancher 前端 7 层负载均衡器的示例,请参考本页

  • 有关如何为 F5 启动 WAF 功能的示例,请参考本页

4、配置 DNS 记录#

配置完负载均衡器后,您将需要创建 DNS 记录,以将流量发送到该负载均衡器。

根据您的环境,DNS 记录可以是指向负载均衡器 IP 的 A 记录,也可以是指向负载均衡器主机名的 CNAME。无论哪种情况,请确保该记录是您要 Rancher 进行响应的主机名。

在安装 Rancher 时(后续步骤),您需要指定此主机名,并且在以后也无法更改它。确保您的决定是最终决定。

有关设置 DNS 记录以将域流量路由到 Amazon ELB 负载均衡器的指南,请参阅 AWS 官方文档

5、配置私有 Docker 镜像仓库#

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

在后续步骤中,当您设置 K3s Kubernetes 集群时,您将创建一个私有镜像仓库配置文件,其中包含有关此镜像仓库的信息。

如果您需要有关创建私有 Docker 镜像仓库的帮助,请参阅 官方 Docker 文档

下载镜像文件

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

  1. 查找您用的 Rancher 版本所需要的资源
  2. 搜集 cert-manager 镜像
  3. 将镜像保存到您的工作站中
  4. 推送镜像到私有镜像库

1、查找您用的 Rancher 版本所需要的资源#

  1. 浏览我们的版本发布页面,查找您想安装的 Rancher v2.x.x 版本。不要下载标记为 rc 或 Pre-release 的版本,因为它们在生产环境下是不稳定的。

  2. 从发行版 Assets 部分下载以下文件,这些文件是离线环境下安装 Rancher 所必需的:

    Release 文件 描述
    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中的镜像,并将它们推送到您自己的私有镜像库。-----脚本文件,将要说的镜像推向镜像仓库

下载地址:Release Release v2.5.16 · rancher/rancher · GitHub

2、收集 cert-manager 镜像#

如果您使用自己的证书,或者要在外部负载均衡器上终止 TLS,请跳过此步骤。

在安装高可用过程中,如果选择使用 Rancher 默认的自签名 TLS 证书,则还必须将 cert-manager 镜像添加到 rancher-images.txt 文件中。如果使用自己的证书,则跳过此步骤。

  1. 获取最新的cert-manager Helm chart,解析模板,获取镜像详细信息:

注意: 由于cert-manager最近的改动,您需要升级cert-manager版本。如果您要升级 Rancher 并且使用cert-manager的版本低于 v0.12.0,请看我们的升级文档

helm repo add jetstack https://charts.jetstack.io
helm repo update
helm fetch jetstack/cert-manager --version v0.12.0
helm template ./cert-manager-<version>.tgz | grep -oP '(?<=image: ").*(?=")' >> ./rancher-images.txt

对镜像列表进行排序和唯一化,去除重复的镜像源:

sort -u rancher-images.txt -o rancher-images.txt

3、将镜像保存到您的工作站中#

./rancher-save-images.sh --image-list ./rancher-images.txt

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

./rancher-save-images.sh --image-list ./rancher-images.txt --from-aliyun true

4推送镜像到私有镜像库#

下一步,您将使用脚本将文件 rancher-images.tar.gz 中的镜像上传到您自己的私有镜像库。

文件 rancher-images.txt 和 rancher-images.tar.gz 应该位于工作站中运行 rancher-load-images.sh 脚本的同一目录下。

  1. 登录私有镜像库:

    docker login <REGISTRY.YOURDOMAIN.COM:PORT>
  2. 为 rancher-load-images.sh 添加可执行权限:

    chmod +x rancher-load-images.sh
  3. 使用脚本 rancher-load-images.sh提取rancher-images.tar.gz文件中的镜像,根据文件rancher-images.txt中的镜像列表对提取的镜像文件重新打 tag 并推送到您的私有镜像库:

    ./rancher-load-images.sh --image-list ./rancher-images.txt --registry <REGISTRY.YOURDOMAIN.COM:PORT>`

安装 Kubernetes 集群

该集群应仅用于运行 Rancher Server 使其高可用

从 Rancher v2.4 开始,Rancher Server 可以安装在 RKE Kubernetes 集群或 K3s Kubernetes 集群上。K3s 也是 Rancher 发布的经过完全认证的 Kubernetes 发行版,但比 RKE 更新。我们建议在 K3s 上安装 Rancher,因为 K3s 易于使用且更轻量,全部组件都打包在了一个二进制文件里。并且这个二进制文件小于 100 MB。注意:如果在 RKE 集群上安装了 Rancher 之后,目前没有办法将这个高可用部署迁移到 K3s 集群上。

Rancher Server 只能在使用 RKE 或 K3s 安装的 Kubernetes 集群中运行。不支持在托管的 Kubernetes 集群(例如 EKS)上使用 Rancher。

helm简介

Helm 可以理解为 Kubernetes 的包管理工具,可以方便地发现、共享和使用为Kubernetes构建的应用。

Helm 采用客户端/服务器架构,有如下组件组成:

  1. Helm CLI 是 Helm 客户端,可以在本地执行
  2. Tiller 是服务器端组件,在 Kubernetes 群集上运行,并管理 Kubernetes 应用程序的生命周期
  3. Repository 是 Chart 仓库,Helm客户端通过HTTP协议来访问仓库中Chart的索引文件和压缩包。

Helm的三个基本概念

  1. Chart:Helm应用(package),包括该应用的所有Kubernetes manifest模版,类似于YUM RPM或Apt dpkg文件--------------Helm的应用的名字取得太通俗易懂了[email protected]
  2. Repository:Helm package存储仓库
  3. Release:chart的部署实例,每个chart可以部署一个或多个release-----这个能叫实例么???名字取得好

Helm工作原理

Helm把Kubernetes资源(比如deployments、services或 ingress等) 打包到一个chart中,而chart被保存到chart仓库。通过chart仓库可用来存储和分享chart。Helm使发布可配置,支持发布应用配置的版本管理,简化了Kubernetes部署应用的版本控制、打包、发布、删除、更新等操作。

Helm包括两个部分,helm客户端和tiller服务端。

helm客户端

helm客户端是一个命令行工具,负责管理charts、reprepository和release。它通过gPRC API(使用kubectl port-forward将tiller的端口映射到本地,然后再通过映射后的端口跟tiller通信)向tiller发送请求,并由tiller来管理对应的Kubernetes资源。

tiller服务端

tiller接收来自helm客户端的请求,并把相关资源的操作发送到Kubernetes,负责管理(安装、查询、升级或删除等)和跟踪Kubernetes资源。为了方便管理,tiller把release的相关信息保存在kubernetes的ConfigMap中。
tiller对外暴露gRPC API,供helm客户端调用。

Rancher安装

这里就没有把Rancher Service 安装在Kubernetes集群上了,直接选择在docker中安装[email protected]

单节点安装

单节点安装 主要的点就在于证书,命令跟我们直接在Docker中拉取Rancher镜像,并创建容器的命令差异不是很大[email protected],主要是多了如下的两个环境变量

环境变量键 环境变量值 描述
CATTLE_SYSTEM_DEFAULT_REGISTRY <REGISTRY.YOURDOMAIN.COM:PORT> 在配置集群时,将 Rancher Server 配置为始终从您的私有镜像库中拉取镜像
CATTLE_SYSTEM_CATALOG bundled 配置 Rancher Server 使用内置的 system-chart,system-chart中包含监控,日志,告警和全局 DNS 等功能所需的 Chart。这些 Helm charts 位于 GitHub 中,但是由于您处于离线环境中,因此使用 Rancher 中内置的 Chart 比设置一个 Git 镜像简单得多。当然您也可以选择自己手动镜像 GitHub 中的 Rancher System Chart。自 v2.3.0 起可用------这里的chart可以去联想一下helm的chart(即一个服务[email protected])

选项 A - 使用 Rancher 默认的自签名证书#

如果要在不涉及身份验证的开发或测试环境中安装 Rancher,请使用其生成的自签名证书安装 Rancher。此安装选项省去了自己生成证书的麻烦

登录到 Linux 主机,然后运行下面的安装命令。输入命令时,请参考下面的配置。

docker run -d --privileged --restart=unless-stopped  \
    -p 80:80 -p 443:443 \
    -e CATTLE_SYSTEM_DEFAULT_REGISTRY=<REGISTRY.YOURDOMAIN.COM:PORT> \ # 设置默认的系统镜像仓库
    -e CATTLE_SYSTEM_CATALOG=bundled \ # 自v2.3.0可用,使用内嵌的 Rancher system charts
    <REGISTRY.YOURDOMAIN.COM:PORT>/rancher/rancher:<RANCHER_VERSION_TAG>

命令占位符含义:

占位符 描述
<REGISTRY.YOURDOMAIN.COM:PORT> 私有镜像库地址
<RANCHER_VERSION_TAG> 您要安装的Rancher 版本

选项 B - 使用已有的自签名证书#

在您的团队将访问 Rancher Server 的开发或测试环境中,创建一个自签名证书以供您的安装使用,以便您的团队可以验证它们是否正在连接到 Rancher 实例。

先决条件: 在具有互联网连接的计算机上,使用OpenSSL或您选择的其他方法创建自签名证书。

生成证书后就可以按照如下命令启动了

docker run -d --privileged --restart=unless-stopped \
    -p 80:80 -p 443:443 \
    -v /<CERT_DIRECTORY>/<FULL_CHAIN.pem>:/etc/rancher/ssl/cert.pem \
    -v /<CERT_DIRECTORY>/<PRIVATE_KEY.pem>:/etc/rancher/ssl/key.pem \
    -v /<CERT_DIRECTORY>/<CA_CERTS.pem>:/etc/rancher/ssl/cacerts.pem \
    -e CATTLE_SYSTEM_DEFAULT_REGISTRY=<REGISTRY.YOURDOMAIN.COM:PORT> \ # 设置默认的系统镜像仓库
    -e CATTLE_SYSTEM_CATALOG=bundled \ # 自v2.3.0可用,使用内嵌的 Rancher system charts
    <REGISTRY.YOURDOMAIN.COM:PORT>/rancher/rancher:<RANCHER_VERSION_TAG>

命令占位符含义

占位符 描述
<CERT_DIRECTORY> 证书文件所在目录
<FULL_CHAIN.pem> 证书链文件路径
<PRIVATE_KEY.pem> 证书私有密钥路径
<CA_CERTS.pem> 证书颁发机构的证书的路径
<REGISTRY.YOURDOMAIN.COM:PORT> 私有镜像库
<RANCHER_VERSION_TAG> 您要安装的Rancher 版本

选项 C - 使用已有的权威机构颁发的证书#

在要公开展示应用程序的开发或测试环境中,请使用由公认的 CA 签名的证书,这样您的用户群就不会遇到安全警告。

先决条件: 证书文件必须为PEM 格式

获得证书后,登录到 Linux 主机,然后运行下面的安装命令。由于您的证书是由公认的 CA 签名的,因此不需要安装其他 CA 证书文件。

占位符 描述
<CERT_DIRECTORY> 证书文件所在目录
<FULL_CHAIN.pem> 证书链文件路径
<PRIVATE_KEY.pem> 证书私有密钥路径
<REGISTRY.YOURDOMAIN.COM:PORT> 私有镜像库
<RANCHER_VERSION_TAG> 您要安装的Rancher 版本

注意:使用--no-cacerts作为容器的参数来禁用 Rancher 生成的默认 CA 证书。

docker run -d --privileged --restart=unless-stopped \
    -p 80:80 -p 443:443 \
    --no-cacerts \
    -v /<CERT_DIRECTORY>/<FULL_CHAIN.pem>:/etc/rancher/ssl/cert.pem \
    -v /<CERT_DIRECTORY>/<PRIVATE_KEY.pem>:/etc/rancher/ssl/key.pem \
    -e CATTLE_SYSTEM_DEFAULT_REGISTRY=<REGISTRY.YOURDOMAIN.COM:PORT> \ # 设置默认的系统镜像仓库
    -e CATTLE_SYSTEM_CATALOG=bundled \ # 自v2.3.0可用,使用内嵌的 Rancher system charts
    <REGISTRY.YOURDOMAIN.COM:PORT>/rancher/rancher:<RANCHER_VERSION_TAG>

说明: 如果您不打算发送遥测数据,请在初始登录时选择退出遥测

如果要安装 v2.3.0 之前的 Rancher 版本,则将无法使用内置的 system-charts。由于 Rancher system-charts 托管在 Github 中,因此,离线安装将无法访问这些 charts。所以,您必须配置 Rancher system-charts

如果您要安装 Rancher v2.3.0+,则安装完成

猜你喜欢

转载自blog.csdn.net/cuiyaonan2000/article/details/130499552
今日推荐