Debian11之Rancher2.7.x安装

前言

Rancher为采用容器的团队提供了完整的软件堆栈,解决了跨任何基础设施架构管理多个Kubernetes集群的运维和安全挑战,同时为DevOps团队提供了用于运行容器化工作负载的集成工具。总结起来就是用于管理和配置 Kubernetes 集群,通过 Rancher Server 的 UI 与下游 Kubernetes 集群进行交互
Rancher中国官网
Rancher文档

Rancher 旗下的产品介绍

通过 RKE、K3S 可以快速的构建 K8S 集群

Rancher Prime

面向企业生产环境的 Rancher 增强版,需要单独收费。
使用Rancher Prime可以非常轻松地管理安装在本地或远程开发环境中的Kubernetes,Rancher Prime 2.3全面支持Windows容器,集成Istio服务网格,并增强了云原生工作负载的安全性

RKE(Rancher Kubernetes Engine)

RKE是一款经过CNCF认证、极致简单易用且闪电般快速的Kubernetes安装程序,完全在容器内运行,解决了容器最常见的安装复杂性问题。借助RKE,Kubernetes可以完全独立于您正在运行的操作系统和平台,轻松实现Kubernetes的自动化运维。仅需几分钟,RKE便可通过单条命令构建一个集群,其声明式配置使Kubernetes升级操作具备原子性且安全(因此它与除容器引擎外的底层操作系统没有任何接触点,容器使升级到新版本和回滚到旧版本变得简单)

K3S

k3s是经CNCF一致性认证的Kubernetes发行版,专为无人值守、资源受限、偏远地区或物联网设备内部的生产工作负载而设计。 k3s被打包成单个小于60MB的二进制文件,支持x86和ARM处理器,在小到树莓派或大到 AWS a1.4xlarge 32GiB服务器的环境中均能出色工作

  • 打包为单个二进制文件

  • 使用基于 sqlite3 作为默认存储机制的轻量级存储后端。同时支持使用 etcd3、MySQL 和 Postgres

  • 封装在简单的启动程序中,可以处理很多复杂的 TLS 和选项

  • 默认情况下是安全的,对轻量级环境有合理的默认值

  • 添加了简单但强大的 batteries-included 功能,例如:

本地存储提供程序
service load balancer
Helm controller
Traefik ingress controller
  • 所有 Kubernetes control plane 组件的操作都封装在单个二进制文件和进程中。因此,K3s 支持自动化和管理复杂的集群操作(例如证书分发等)

  • 最大程度减轻了外部依赖性,K3s 仅需要现代内核和 cgroup 挂载。K3s 打包了所需的依赖,包括:

containerd
Flannel (CNI)
CoreDNS
Traefik (Ingress)
Klipper-lb (Service LB)
嵌入式网络策略控制器
嵌入式 local-path-provisioner
主机实用程序(iptables、socat 等)

RKE2

被称为 RKE Government,是 Rancher 的下一代 Kubernetes 发行版。RKE2 完美结合了 1.x 版本的 RKE(以下简称 RKE1)和 K3s

  • 它继承了 RKE1 与上游 Kubernetes 的紧密结合关系。为了优化边缘部署,K3s 在某些地方与上游 Kubernetes 有所不同,但 RKE1 和 RKE2 可以与上游保持紧密一致

  • 它继承了 K3s 的可用性、易操作性和部署模型

  • 重要的是 RKE2 不像 RKE1 一样依赖 Docker

RKE1 使用 Docker 来部署和管理 control plane 组件以及 Kubernetes 的容器运行时。
RKE2 将 control plane 组件作为由 kubelet 管理的静态 pod 启动。嵌入式容器运行时是 containerd

Longhorn

是一个轻量级且功能强大的云原生Kubernetes分布式存储平台,可以在任意基础设施上运行。Longhorn与Rancher结合使用,将帮助您在Kubernetes环境中轻松、快速和可靠地部署高可用性持久化块存储

Rancher 架构建议

RKE2部署K8S集群点击这里
为了达到最佳性能和安全性,我们建议为 Rancher Management Server 使用单独的专用 Kubernetes 集群。不建议在此集群上运行用户工作负载。部署 Rancher 后,你可以创建或导入集群来运行你的工作负载

Rancher 安装介绍

官方地址
参见 Helm 版本要求:选择 Helm 版本来安装 Rancher

Rancher 是通过 Kubernetes 集群上的 Helm Chart 安装的,因此在准备安装或升级 Rancher 高可用时,必须添加包含用于安装 Rancher 的 Chart 的 Helm Chart 仓库。Helm Chart 为 Kubernetes YAML 清单文件提供了模板语法,通过 Helm用户可以创建可配置的 deployment,而不仅仅只能使用静态文件

安装方式

使用 Helm CLI 安装的高可用 Kubernetes

建议使用 Kubernetes 包管理器 Helm 在专用的 Kubernetes 集群上安装 Rancher。在 RKE 集群中,需要使用三个节点才能实现高可用集群。在 K3s 集群中,只需要两个节点即可

在 Amazon EKS 上部署 Rancher 的快速入门

部署指南

单节点 Kubernetes 安装(不推荐)

Rancher 可以安装在单节点 Kubernetes 集群上。但在单节点安装的情况下,Rancher Server 没有高可用性。如果你想要短期内使用单节点节省资源,同时又保留高可用性迁移路径,那么单节点 Kubernetes 安装也是合适的。你也可以之后向集群中添加节点,获得高可用的 Rancher Server

Docker 安装

如果你的目的是测试或演示,你可以使用 Docker 把 Rancher 安装到单个节点中。本地 Kubernetes 集群是安装到单个 Docker 容器中的,而 Rancher 是安装到本地集群中的

安装要求

官方网址

Kubernetes 与 Rancher 的兼容性

官方网址
Debian11之Rancher2.7.x安装_第1张图片

RKE2 Kubernetes

Debian11之Rancher2.7.x安装_第2张图片

RKE2 要求

对于容器运行时,RKE2 附带了自己的 containerd。RKE2 安装不需要 Docker

CPU 和内存

硬件要求根据你的 Rancher 部署规模而定。请根据要求配置每个节点。通过单节点容器安装 Rancher,和在 Kubernetes 集群上安装 Rancher 的要求有所不同

磁盘

etcd 在集群中的性能决定了 Rancher 的性能。为了获得最佳速度,我们建议使用 SSD 磁盘来支持 Rancher 管理的 Kubernetes 集群。在云提供商上,你还需使用能获得最大 IOPS 的最小大小。在较大的集群中,请考虑使用专用存储设备存储 etcd 数据和 wal 目录

网络

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

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

端口要求

Ingress

  • 安装 Rancher 的 Kubernetes 集群中的每个节点都应该运行一个 Ingress
  • Ingress 需要部署为 DaemonSet 以确保负载均衡器能成功把流量转发到各个节点
  • 如果是 RKE,RKE2 和 K3s 安装,你不需要手动安装 Ingress,因为它是默认安装的
  • 对于托管的 Kubernetes 集群(EKS、GKE、AKS),你需要设置 Ingress

RKE2下基于Helm安装Rancher

官方地址

选择 SSL 配置

Rancher Management Server 默认需要 SSL/TLS 配置来保证访问的安全性,如果是在外部终止 SSL/TLS,请参见外部负载均衡器的 TLS 终止

证书来源

Debian11之Rancher2.7.x安装_第3张图片

  • 1、Rancher 生成的 TLS 证书
    要求你在集群中安装 cert-manager。Rancher 使用 cert-manager 签发并维护证书。Rancher 会生成自己的 CA 证书,并使用该 CA 签署证书。然后 cert-manager负责管理该证书

  • 2、Let’s Encrypt
    Let’s Encrypt 选项也需要使用 cert-manager。但是,在这种情况下,cert-manager 与 Let’s Encrypt 的特殊颁发者相结合,该颁发者执行获取 Let’s Encrypt 颁发的证书所需的所有操作(包括请求和验证)。此配置使用 HTTP 验证(HTTP-01),因此负载均衡器必须具有可以从互联网访问的公共 DNS 记录

  • 3、已有的证书
    使用已有的 CA 颁发的公有或私有证书。Rancher 将使用该证书来保护 WebSocket 和 HTTPS 流量。在这种情况下,你必须上传名称分别为 tls.crt 和 tls.key的 PEM 格式的证书以及相关的密钥。如果你使用私有 CA,则还必须上传该 CA 证书。这是由于你的节点可能不信任此私有 CA。Rancher 将获取该 CA 证书,并从中生成一个校验和,各种 Rancher 组件将使用该校验和来验证其与 Rancher 的连接

安装 cert-manager

如果使用的是自己的证书文件(ingress.tls.source=secret)或使用外部负载均衡器的 TLS 终止则可以跳过此步骤
仅在使用 Rancher 生成的证书(ingress.tls.source=rancher)或 Let’s Encrypt 颁发的证书(ingress.tls.source=letsEncrypt)时才需要安装

官方网址

# 如果你手动安装了CRD,而不是在 Helm 安装命令中添加了 `--set installCRDs=true` 选项,你应该在升级 Helm Chart 之前升级 CRD 资源
kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.11.0/cert-manager.crds.yaml
# 添加 Jetstack Helm 仓库、更新本地 Helm Chart 仓库缓存
helm repo add jetstack https://charts.jetstack.io && helm repo update jetstack && helm search repo jetstack
# 安装 cert-manager
helm install cert-manager jetstack/cert-manager \
  --namespace cert-manager \
  --create-namespace \
  --version v1.12.1
kubectl get pods --namespace cert-manager # 检查 cert-manager 命名空间中正在运行的 Pod 来验证它是否已正确部署
#NAME                                       READY   STATUS    RESTARTS   AGE
#cert-manager-5c6866597-zw7kh               1/1     Running   0          2m
#cert-manager-cainjector-577f6d9fd7-tr77l   1/1     Running   0          2m
#cert-manager-webhook-787858fcdb-nlzsq      1/1     Running   0          2m

使用 Helm 和 证书选项安装 Rancher(Rancher 生成的 TLS 证书)

添加Helm仓库

  • 添加本地仓库(rancher-stable)
helm repo add rancher-stable https://releases.rancher.com/server-charts/stable # Stable:建议用于生产环境
  • 列出本地仓库列表
helm repo list

在这里插入图片描述

  • 查询本地仓库rancher-stable的charts
helm search repo rancher-stable

Debian11之Rancher2.7.x安装_第4张图片

  • 更新本地仓库(rancher-stable)
helm repo update rancher-stable
  • 删除本地仓库(rancher-stable)
helm repo remove rancher-stable

Helm 安装 rancher

helm install <release名字> <chart名称>
helm install rancher rancher-stable/rancher \
  --version 2.7.3 \
  --namespace cattle-system \
  --create-namespace \
  --set hostname=www.rke2.server2.com \
  --set bootstrapPassword=admin \
  --set global.cattle.psp.enabled=false \
  --set ingress.ingressClassName=nginx

1、将 hostname 设置为解析到你的负载均衡器的 DNS 名称
2、将 bootstrapPassword 设置为 admin 用户独有的值
3、如果你需要安装指定的 Rancher 版本,使用 --version 标志,例如 --version 2.7.3
4、对于 Kubernetes v1.25 或更高版本,将 global.cattle.psp.enabled 设置为 false

验证 Rancher Server 部署状态

kubectl rollout status deploy/rancher -n cattle-system
# 输出日志
Waiting for deployment "rancher" rollout to finish: 0 of 3 updated replicas are available...
Waiting for deployment spec update to be observed...
Waiting for deployment "rancher" rollout to finish: 0 of 3 updated replicas are available...
Waiting for deployment "rancher" rollout to finish: 1 of 3 updated replicas are available...
Waiting for deployment "rancher" rollout to finish: 2 of 3 updated replicas are available...
deployment "rancher" successfully rolled out

Helm 查看 cattle-system 命名空间下的应用

helm list -n cattle-system

在这里插入图片描述

Helm 卸载 cattle-system 命名空间下的应用

helm uninstall rancher -n cattle-system

kubectl 查看 cattle-system 命名空间下的资源

kubectl get deployment,replicaSet,pods,service,ingress -n cattle-system -o wide --show-labels
kubectl describe -n cattle-system rancher-5b499dd8cc-6zx9q
NAME                              CONTAINERS        IMAGES                           SELECTOR
deployment.apps/rancher           rancher           rancher/rancher:v2.7.3           app=rancher
deployment.apps/rancher-webhook   rancher-webhook   rancher/rancher-webhook:v0.3.3   app=rancher-webhook
NAME                                      CONTAINERS        IMAGES                           SELECTOR
replicaset.apps/rancher-6c7497644         rancher           rancher/rancher:v2.7.3           app=rancher,pod-template-
replicaset.apps/rancher-webhook-656cd8b9f rancher-webhook   rancher/rancher-webhook:v0.3.3   app=rancher-webhook,pod-
NAME                                  IP           NODE                   
pod/helm-operation-h8qp4              10.42.3.29   www.rke2.agent1.com    
pod/helm-operation-mld88              10.42.3.26   www.rke2.agent1.com    
pod/rancher-webhook-656cd8b9f-9rxcj   10.42.3.30   www.rke2.agent1.com
pod/rancher-6c7497644-4827d           10.42.2.6    www.rke2.server3.com   
pod/rancher-6c7497644-dmgrc           10.42.3.25   www.rke2.agent1.com    
pod/rancher-6c7497644-htdjq           10.42.1.17   www.rke2.server2.com   
NAME                      TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)          AGE   SELECTOR
service/rancher           ClusterIP   10.43.94.249    <none>        80/TCP,443/TCP   13m   app=rancher
service/rancher-webhook   ClusterIP   10.43.174.120   <none>        443/TCP          11m   app=rancher-webhook
service/webhook-service   ClusterIP   10.43.119.37    <none>        443/TCP          11m   app=rancher-webhook
NAME                               CLASS HOSTS                 ADDRESS                                        PORTS   
ingress.networking.k8s.io/rancher  nginx www.rke2.server2.com  192.168.111.51,192.168.111.52,192.168.111.53   80, 443   

登陆Rancher

注意:测试时,需要把安装时配置的hostname值【www.rke2.server2.com】更新到本地Host文件,直接通过浏览器访问即可

默认账号:admin
默认密码(bootstrapPassword):admin
新密码:li1234rancher

Debian11之Rancher2.7.x安装_第5张图片
Debian11之Rancher2.7.x安装_第6张图片

Rancher2.7.x操作指南

官网地址

你可能感兴趣的:(Kubernetes,Linux_Debian,kubernetes,运维)