Rancher 是一个开源的企业级 Kubernetes 管理平台。Kubernetes (K8s) 本身是用于自动部署、扩展和管理容器化应用程序的强大工具,但直接操作它可能非常复杂。Rancher 的目标就是极大地简化 K8s 的使用和运维。
Rancher 公司产品介绍
-
rancher
-
k3k 是在 Kubernetes 集群中部署 Kubernetes 工具,它提供了一种在 kubernetes 集群上运行多个嵌入式隔离的 k3s 集群的方法。
-
Harvester 安装在裸金属服务器上,提供集成的虚拟化和分布式存储功能。Harvester 是一个现代、开源、可互操作的超融合基础架构(HCI)解决方案,它基于 Kubernetes 构建。
-
RKE 指的是 Rancher Kubernetes Engine (RKE) 所部署的 Kubernetes (k8s) 集群的版本。
Rancher 的核心功能
Rancher 的核心价值在于它提供了统一的界面和工具集来管理所有 K8s 集群。
-
多集群管理 (Multi-Cluster Management)
- 这是 Rancher 最关键的功能。无论您的 K8s 集群在哪里运行——是在本地数据中心(On-prem)、公有云(如 AWS EKS, Google GKE, Azure AKS)还是混合云环境——您都可以将它们导入到 Rancher 中,并通过一个统一的控制台进行管理。
- 您也可以使用 Rancher 来创建新的 K8s 集群。
-
简化的 K8s 部署
- Rancher 提供了自己的 K8s 发行版,如 RKE (Rancher Kubernetes Engine) 和 K3s(一个轻量级 K8s 发行版,非常适合边缘计算和资源受限的环境)。
- 这使得创建生产就绪的 K8s 集群变得更加简单快捷。
-
统一的认证和权限管理 (RBAC)
- Rancher 可以与您现有的用户认证系统(如 Active Directory, LDAP, GitHub 等)集成。
- 它允许管理员在所有集群和项目中集中设置和强制执行基于角色的访问控制 (RBAC) 策略,确保了企业级的安全性和合规性。
-
直观的用户界面 (UI)
- Rancher 提供了一个非常友好和强大的 Web UI。即使是对 K8s 命令(
kubectl)不太熟悉的用户,也可以通过点击界面来部署应用、管理节点、查看资源状态和日志。
- 这大大降低了 K8s 的使用门槛,使开发人员也能进行自助服务。
-
丰富的应用生态(应用商店)
- Rancher 内置了一个
应用商店(Application Catalog),它基于 Helm(K8s 的包管理器)。
- 用户可以一键部署各种预先配置好的常用应用和服务,如 Prometheus(监控)、Grafana(图表)、Jenkins(CI/CD)或各种数据库。
-
集成的运维工具
- Rancher 开箱即用地集成了强大的监控(基于 Prometheus)和日志(基于 Fluentd)解决方案,让您能轻松监控所有集群和应用的健康状况。
- 它还包括了持久化存储管理(如 Longhorn,Rancher 开发的云原生存储方案)和服务网格(如 Istio)的集成。
Rancher vs. Kubernetes:是什么关系?
简单来说:
- Kubernetes 是
**引擎**。它是在幕后实际协调和管理容器的核心技术。
- Rancher 是
**驾驶舱**和**控制面板**。它运行在 K8s 之上(或管理外部的 K8s),提供了一个用户友好的界面和一系列管理工具,让驾驶(管理)K8s 变得更安全、更简单、更高效。
您不需要 Rancher 也能运行 Kubernetes,但如果您需要管理多个集群,或者希望为您的 DevOps 团队提供一个标准化的、易于使用的平台,Rancher 就会非常有价值。
谁适合使用 Rancher?
- 需要管理多个 K8s 集群的企业:希望在混合云或多云环境中实现一致的管理体验。
- 希望简化 K8s 运维的 IT 团队:需要集中的认证、监控和安全策略。
- 希望赋能开发人员的 DevOps 团队:为开发人员提供自助部署应用的能力,同时不失可控性。
- 边缘计算场景:使用 K3s 和 Rancher 来管理大量分布式的、轻量级的 K8s 集群。
docker 部署 Rancher
# 启动
docker run -d --restart=unless-stopped --privileged --name rancher -p 80:80 -p 443:443 rancher/rancher:stable
# 查看日志
docker logs -f rancher
CREATE DATABASE IF NOT EXISTS cattle COLLATE = 'utf8_general_ci' CHARACTER SET = 'utf8';
GRANT ALL ON cattle.* TO 'cattle'@'%' IDENTIFIED BY 'cattle';
GRANT ALL ON cattle.* TO 'cattle'@'localhost' IDENTIFIED BY 'cattle';
docker run -d --restart=unless-stopped -p 8080:8080 -p 9345:9345 rancher/server:v1.6.2 --db-host 127.0.0.1 --db-port 3306 --db-user cattle --db-pass cattle --db-name cattle
# HA 其他节点
docker run -d --restart=unless-stopped -p 8080:8080 -p 9345:9345 rancher/server:v1.6.2 --db-host 127.0.0.1 --db-port 3306 --db-user cattle --db-pass cattle --db-name cattle --advertise-address x.x.x.x
自签证书部署
- 准备 OpenSSL 配置文件(
csr.conf)
为了让证书包含 Rancher 所需的 Subject Alternative Names (SANs),你需要一个配置文件。
创建一个名为 csr.conf 的文件,内容如下。请将 rancher.yourdomain.com 替换为你的 Rancher 访问域名,将 your-rancher-ip 替换为 Rancher 的 Service/Ingress IP(如果适用)。
[ req ]
default_bits = 2048
prompt = no
default_md = sha256
req_extensions = req_ext
distinguished_name = dn
[ dn ]
C = CN
ST = Beijing
L = Beijing
O = MyOrganization
OU = MyOrganizationalUnit
CN = rancher.yourdomain.com # 替换为你的 Rancher 域名
[ req_ext ]
subjectAltName = @alt_names
[ alt_names ]
DNS.1 = rancher.yourdomain.com # 替换为你的 Rancher 域名
DNS.2 = localhost
# 如果需要,可以添加 Rancher Service 的 ClusterIP 或其他域名/IP
# IP.1 = 10.43.0.1 # 示例:Kubernetes Service Cluster IP
按照以下步骤使用 openssl 生成自签名的 CA 根证书、私钥和 Rancher 服务器证书。
2.1. 生成 CA 私钥和根证书
# 1. 生成 CA 私钥
openssl genrsa -out ca.key 4096
# 2. 生成自签名 CA 根证书(有效期设置为10年)
# 这里的 /CN 可以简单设置,它将是所有服务器证书的签名者
openssl req -x509 -new -nodes -key ca.key -sha256 -days 3650 -out ca.pem -subj "/CN=MyRancherCA"
2.2. 生成 Rancher 服务器私钥
# 3. 生成 Rancher 服务器的私钥
openssl genrsa -out tls.key 2048
2.3. 生成证书签名请求 (CSR)
使用你的 csr.conf 配置文件生成证书签名请求。
# 4. 生成 CSR
openssl req -new -key tls.key -out tls.csr -config csr.conf
2.4. 使用 CA 签名服务器证书
使用你生成的 CA 根证书和私钥来签署服务器 CSR,生成最终的服务器证书。
# 5. 使用 CA 签名服务器证书(有效期设置为10年)
openssl x509 -req -in tls.csr -CA ca.pem -CAkey ca.key -CAcreateserial -out tls.crt -days 3650 -sha256 -extensions req_ext -extfile csr.conf
现在你有了三个重要的文件:
tls.key: Rancher 服务器的私钥。
tls.crt: Rancher 服务器证书(已由你的私有 CA 签名)。
ca.pem: 你的私有 CA 根证书。
- 创建 Kubernetes Secret
在 Rancher 预期的命名空间(通常是 cattle-system)中创建 Kubernetes Secret 来存储证书。
3.1. 创建 TLS Secret (Server Cert/Key)
用于 Ingress 终止 SSL/TLS。
kubectl create namespace cattle-system # 如果不存在
kubectl -n cattle-system create secret tls tls-rancher-ingress \
--cert=tls.crt \
--key=tls.key
3.2. 创建 CA Secret (Root CA)
用于 Rancher 信任你的自签名证书链。Rancher 要求此 Secret 包含名为 cacerts.pem 的文件。
# 复制/重命名 CA 根证书文件以符合 Rancher 的要求
cp ca.pem cacerts.pem
kubectl -n cattle-system create secret generic tls-ca \
--from-file=cacerts.pem
- 安装 Rancher Helm Chart
使用 Helm 安装 Rancher,并配置它使用你创建的 Secret。
# 添加 Rancher Helm 仓库
helm repo add rancher-latest https://releases.rancher.com/server-charts/latest
# 更新仓库
helm repo update
# 使用 Helm 安装 Rancher
# 关键配置项:
# --set hostname: 你的 Rancher 域名
# --set ingress.tls.source=secret: 告诉 Rancher TLS 证书来自 Secret
# --set privateCA=true: 告诉 Rancher 使用自定义 CA 信任 Secret
helm install rancher rancher-latest/rancher \
--namespace cattle-system \
--set hostname=rancher.yourdomain.com \
--set ingress.tls.source=secret \
--set privateCA=true
安装完成后,Rancher 就会使用你提供的证书。
helm 部署 Rancher