主题
零基础入门与集群原理
版本: K3s v1.35.4+k3s1 | Rancher Prime 管理 集群: 3 Master + 1 Worker 最后更新: 2026-08-31 前置要求: 会基本 Linux 命令 (ssh / vi / curl), 不需要任何 Kubernetes 基础
目录
- 1. 十分钟搞懂这些名词
- 2. Kubernetes 核心概念速览
- 3. Rancher Prime 是什么
- 4. 本集群架构原理 (3 Master + 1 Worker)
- 5. K3s 被 Rancher Prime 纳管的原理
- 6. 环境准备
- 7. 搭建集群实操
- 8. 导入 Rancher Prime
- 9. 附录: Rancher Prime 安装速览
- 10. 本章常见问题
1. 十分钟搞懂这些名词
刚接触这套东西,最容易被一堆名词绕晕。先用人话解释:
| 名词 | 一句话解释 |
|---|---|
| Kubernetes (K8s) | 容器编排系统,负责把一堆容器(应用)自动部署、扩缩容、自愈到一组机器上 |
| K3s | SUSE/Rancher 出品的轻量级 K8s 发行版。功能与标准 K8s 兼容,但单个二进制文件、内存占用小一半以上,适合边缘和小集群 |
| v1.35.4+k3s1 | K3s 的版本号。前半段 v1.35.4 表示对应的 Kubernetes 版本,k3s1 是 K3s 自己的补丁号 |
| Rancher | 一个 Web 管理平台,装在某个 K8s 集群里,用浏览器统一管理多个 K8s/K3s 集群:看资源、发应用、管权限 |
| Rancher Prime | Rancher 的企业版发行版(SUSE 官方维护),镜像经过加固签名、附带商业支持和扩展目录,功能界面与开源 Rancher 基本一致 |
| Master / Server | 集群的"大脑"节点,运行 API 服务和数据库 (etcd)。K3s 官方叫法是 Server |
| Worker / Agent | 集群的"干活"节点,真正运行你的业务容器。K3s 官方叫法是 Agent |
| etcd | 集群的数据库,存所有资源的配置和状态。丢了它集群就"失忆"了,所以要备份 |
| 纳管 / 导入 (Import) | 把一个已存在的集群注册到 Rancher,让 Rancher 能看到并管理它 |
它们的关系一图看懂:
┌────────────────────────────────────────────────────────────┐
│ Rancher Prime (管理平面) │
│ 浏览器 UI / 用户权限 / 多集群管理 / 应用商店 / 监控告警 │
└─────────────┬──────────────────────┬──────────────────────┘
│ 管理 │ 管理
┌───────▼───────┐ ┌──────▼────────┐
│ 其他集群 │ │ 本手册的集群 │
│ (RKE2/EKS...) │ │ K3s v1.35.4 │
└───────────────┘ │ 3M + 1W │
└───────────────┘本手册的故事线:一套 K3s 集群(3 台 Master + 1 台 Worker)负责跑业务, Rancher Prime 作为统一管理平台,通过 Web UI 来管理这套集群。
2. Kubernetes 核心概念速览
不需要背,先混个脸熟,后面 UI 操作时会反复遇到。
| 概念 | 是什么 | 类比 |
|---|---|---|
| Node | 一台加入集群的机器 | 一台服务器 |
| Pod | K8s 最小调度单位,包一个或多个容器 | 一个"应用进程" |
| Deployment | 声明"我要 N 个某镜像的副本",自动保持数量并支持滚动升级 | 应用的托管管家 |
| Service | 给一组 Pod 一个固定访问入口(ClusterIP / NodePort / LoadBalancer) | 应用的固定门牌号 |
| Ingress | 按域名/路径把外部 HTTP 流量路由到 Service | Nginx 反向代理规则 |
| Namespace | 集群内的逻辑隔离分区 | 文件夹 |
| ConfigMap / Secret | 配置 / 敏感信息(密码、证书)与镜像解耦 | 配置文件 / 保险箱 |
| PV / PVC / StorageClass | 持久存储:PV 是盘,PVC 是申请,StorageClass 是自动供给策略 | 磁盘 / 磁盘申请单 |
| kubeconfig | 访问集群 API 的凭证文件(含地址、证书) | 门禁卡 |
| RBAC | 基于角色的权限控制(谁能对哪个 Namespace 做什么) | 权限系统 |
| Label / Selector | 资源标签与筛选器,Service 靠它找到 Pod | 便签 + 过滤器 |
💡 零基础提示:前两周只需要牢记 Pod、Deployment、Service、Ingress、Namespace 这 5 个词,其余用到再查。
3. Rancher Prime 是什么
3.1 定位
Rancher Prime 是 SUSE 提供的企业级 Kubernetes 管理平台(Rancher 的官方加固发行版), 核心能力:
- 多集群统一管理:一个 UI 纳管任意数量的 K8s / K3s / RKE2 / 托管集群 (EKS、GKE、AKS)。
- 统一认证与授权:对接 LDAP / OIDC / GitHub 等,集中管理用户和集群权限。
- 应用商店 (Charts):一键安装 Prometheus 监控、日志、备份、PaaS 等组件。
- 集群生命周期:创建、升级、备份、证书轮换都能在 UI 完成。
3.2 与开源 (社区版) Rancher 的区别
| 对比项 | 开源 Rancher | Rancher Prime |
|---|---|---|
| 支持 | 社区 | SUSE 商业订阅支持 |
| 镜像来源 | Docker Hub 等 | registry.rancher.com (签名加固镜像) |
| Helm 仓库 | releases.rancher.com 等 | charts.rancher.io |
| 扩展目录 | 基础 | Prime 专属扩展 (更多认证插件与功能) |
| 安全性 | 常规 | 镜像签名、SBOM、加固基线 |
| 界面功能 | 基本一致 | 基本一致 (本手册 UI 讲解两者通用) |
⚠️ 气隙环境注意:Prime 镜像默认从
registry.rancher.com拉取, 内网部署前需要先把镜像同步到 Harbor(参考../sync-images.sh的做法, 以及 Rancher 气隙部署手册)。
3.3 版本号怎么看
登录 Rancher Prime 后,点左上角菜单 → About,可以看到形如 v2.1x.x 的版本。 Prime 的版本号与 Rancher 大版本对齐,UI 布局在不同版本间高度一致, 本手册的操作在 v2.8+ 版本均适用(个别菜单位置略有差异,文中会提示)。
4. 本集群架构原理 (3 Master + 1 Worker)
4.1 K3s 的两种进程
K3s 把所有控制面组件打包进一个二进制文件 k3s,按启动参数分化为两种角色:
| 角色 | 进程 | 包含的组件 | 职责 |
|---|---|---|---|
| Server (Master) | k3s server | kube-apiserver、kube-scheduler、kube-controller-manager、内嵌 etcd、Flannel、Traefik、CoreDNS、ServiceLB 等 | 集群大脑:接收所有请求、调度决策、保存状态 |
| Agent (Worker) | k3s agent | kubelet、containerd、kube-proxy | 集群手脚:接收指令,在本机拉起/销毁容器 |
与标准 K8s(kubeadm)最大的不同:标准 K8s 每个组件是独立的容器/进程, K3s 全部塞进一个进程,所以轻量、启动快(< 30 秒)。
4.2 本集群拓扑
kubectl / Rancher UI / 客户端
│
▼
┌─────────────────────┐
│ API VIP .43:6443 │ ← 建议: keepalived/自研 VIP 漂移
└────┬────┬────┬──────┘
▼ ▼ ▼
┌────────┐┌────────┐┌────────┐ 内嵌 etcd 集群
│ .38 M1 ││ .39 M2 ││ .40 M3 │ (3 成员, 互相同步)
│ server ││ server ││ server │◄───► etcd: 2379/2380
└───┬────┘└───┬────┘└───┬────┘ (仅本机/节点间)
│ │ │
│ apiserver 6443 │
└─────────┼─────────┘
▼
┌──────────┐
│ .41 W1 │ k3s agent: kubelet + containerd
│ worker │ 业务 Pod 运行在这里
└──────────┘- 3 台 Server 都运行完整的控制面,任何一台都能响应 API 请求;
- Agent(Worker)只连接 Server 的 6443 端口获取指令;
- 客户端(kubectl、Rancher)建议走 VIP,VIP 漂移到当前健康的 Master 上。
4.3 内嵌 etcd 与法定人数 (Quorum) —— 为什么要 3 个 Master
K3s HA 模式下使用内嵌 etcd(无需单独部署 etcd 集群),3 个 Server 自动组成 etcd 集群。etcd 使用 Raft 协议,写入必须获得多数派(过半)确认:
| etcd 节点数 | 法定人数 (多数派) | 可容忍故障数 | 说明 |
|---|---|---|---|
| 1 | 1 | 0 | 单点,挂了集群只读/不可写 |
| 2 | 2 | 0 | ⚠️ 比 1 个还糟,一台挂就失多数派 |
| 3 | 2 | 1 | ✅ 本集群:挂 1 台 Master 仍正常 |
| 5 | 3 | 2 | 更大规模才需要 |
结论:
- 3 台 Master 挂掉任意 1 台,etcd 仍有 2 台 ≥ 法定人数 2,集群照常工作;
- 挂掉 2 台时集群进入"只读保命"模式:已有业务 Pod 继续运行,但无法创建/删除资源;
- 所以不要同时重启/关机 2 台以上 Master,运维时必须逐台操作。
💡 挂 2 台后的恢复方法见
03-日常运维手册第 6 节(etcd 恢复)。
4.4 注册地址 (Registration Address) 与 VIP
新节点加入集群时,需要告诉它"去哪里找组织",即 --server https://<地址>:6443。
- 最简方案(本手册教学路径):直接写第一台 Master 的 IP
.38。 缺点:.38 宕机后,新节点无法加入、agent 断线重连会失败(已运行的业务不受影响)。 - 生产推荐:准备一个 VIP(如
.43),用 keepalived 或自研脚本让它始终 漂移到健康的 Master 上,所有节点和客户端都指向 VIP。 本环境 RKE2 集群的 VIP 管理脚本可直接复用,参考 rancher-deploy-192.168.122.32.md §2。
证书方面:K3s 的 API 证书默认为节点地址签发,客户端通过 VIP/其他地址访问时需 在启动参数加 --tls-san <VIP或域名>,否则会出现证书校验错误。
4.5 一次请求的完整路径
以"浏览器访问业务网站"为例,理解各组件如何协作:
用户浏览器
│ http://app.example.com (解析到任一节点 IP)
▼
节点 :80/:443 ←── Traefik (K3s 内置 Ingress Controller, 以 DaemonSet 运行)
│ 按 Ingress 规则匹配域名/路径
▼
Service (虚拟 IP, 由 kube-proxy/iptables 转发)
│ 按 Label 选择
▼
Pod (运行在 Worker .41 上的业务容器)- ServiceLB (klipper-lb):K3s 内置的轻量负载均衡。当 Service 类型为
LoadBalancer时,它用节点端口模拟外部 LB,无需额外部署云厂商组件。 - CoreDNS:集群内 DNS,Pod 里访问
svc-name.namespace.svc.cluster.local靠它。 - Flannel (VXLAN):默认网络插件,给每个 Pod 分配 10.42.0.0/16 内的地址, 通过 VXLAN 隧道让跨节点 Pod 互通。
4.6 K3s 内置组件一览 (对照镜像清单)
以下组件全部由 K3s 自动部署,镜像已同步到 Harbor(见 ../k3s-images-harbor.txt):
| 组件 | 镜像 | 作用 | 故障影响 |
|---|---|---|---|
| kube-apiserver/scheduler/... | 编译进 k3s 二进制 | 控制面核心 | Master 级故障 |
| 内嵌 etcd | 编译进 k3s 二进制 | 集群数据库 | 见 4.3 |
| CoreDNS | mirrored-coredns-coredns:1.14.2 | 集群 DNS | 新 Pod 解析失败 |
| Traefik | mirrored-library-traefik:3.6.13 | Ingress 入口 | 域名访问失效 |
| ServiceLB | klipper-lb:v0.4.15 | LoadBalancer 模拟 | LB 型 Service 失效 |
| Local Path Provisioner | local-path-provisioner:v0.0.35 | 本地磁盘动态供应 | 新 PVC 无法绑定 |
| Metrics Server | mirrored-metrics-server:v0.8.1 | CPU/内存指标 | kubectl top / HPA 失效 |
| Helm Controller | klipper-helm:v0.9.17-build20260422 | 以 CRD 方式管理 HelmChart | 内置 Helm 部署失效 |
| Pause | mirrored-pause:3.6 | Pod 沙箱占位 | 所有新 Pod 无法启动 |
4.7 网络地址规划 (默认值)
| 网络 | 网段 | 说明 |
|---|---|---|
| Pod CIDR | 10.42.0.0/16 | 每个 Pod 一个地址,每节点 /24 (254 个) |
| Service CIDR | 10.43.0.0/16 | Service 虚拟地址,首个 .1 是 kubernetes |
| 节点网络 | 192.168.122.0/24 | 物理/虚拟网络 |
| NodePort 范围 | 30000-32767 | Service type=NodePort 使用 |
若与公司其他网段冲突,可在第一台 Server 启动时用
--cluster-cidr/--service-cidr修改,事后不可更改。
5. K3s 被 Rancher Prime 纳管的原理
5.1 两种接入方式
| 方式 | 说明 | 适用场景 |
|---|---|---|
| 导入 (Import) | 集群先用命令行建好,再在 Rancher 里生成一段注册命令粘贴执行 | ✅ 本手册采用;最灵活,集群不受 Rancher 生命周期影响 |
| Rancher 托管创建 | 在 Rancher UI 里选 K3s,由 Rancher 下发安装命令到节点 | 适合全新机器、想让 Rancher 负责升级编排 |
5.2 导入后集群里多了什么
执行导入命令后,Rancher 在集群的 cattle-system 命名空间部署两个组件:
| 组件 | 类型 | 作用 |
|---|---|---|
cattle-cluster-agent | Deployment (1 副本) | 集群级代理:由集群主动向外连接 Rancher (wss),转发 API 请求 |
cattle-node-agent | DaemonSet (每节点一个) | 节点级代理:执行节点上的特权操作(升级、清理等) |
关键理解点(新手最容易误会):
- 方向是反的:不是 Rancher 主动连你的集群,而是 agent 主动外连 Rancher。 所以集群不需要给 Rancher 开入站端口,只要节点能访问 Rancher 的地址即可。
- Rancher 挂了 ≠ 集群挂了:cattle-agent 断连期间,K8s 控制面照常工作, 业务 Pod 不受影响,只是 UI 上看不到/操作不了集群;Rancher 恢复后自动重连。
- 删除纳管 ≠ 删除集群:在 Rancher 里"删除集群"(导入类型)只是解除注册, 不会销毁节点上的 K3s。
6. 环境准备
6.1 节点规划(回顾)
| 角色 | IP | 主机名 | 规格 |
|---|---|---|---|
| Master-1 | 192.168.122.38 | szb122038 | 4C/8G/50G |
| Master-2 | 192.168.122.39 | szb122039 | 4C/8G/50G |
| Master-3 | 192.168.122.40 | szb122040 | 4C/8G/50G |
| Worker-1 | 192.168.122.41 | szb122041 | 8C/16G/100G |
| API VIP | 192.168.122.43 | — | 可选, 生产建议 |
6.2 端口要求
| 端口 | 协议 | 所在节点 | 用途 |
|---|---|---|---|
| 6443 | TCP | Master | Kubernetes API |
| 8472 | UDP | 全部 | Flannel VXLAN |
| 80 / 443 | TCP | 全部 | Traefik Ingress / ServiceLB |
| 30000-32767 | TCP | 全部 | NodePort 服务 |
| 53 | TCP/UDP | 全部 | CoreDNS (集群内) |
防火墙处理(二选一):
bash
# 方式 A:实验环境直接关闭 (Rocky 9)
systemctl disable --now firewalld
# 方式 B:生产环境放行端口
firewall-cmd --permanent --add-port={6443,80,443,30000-32767}/tcp
firewall-cmd --permanent --add-port=8472/udp
firewall-cmd --reload6.3 节点基础初始化 (4 台都执行)
bash
# 1. 主机名 (按节点替换)
hostnamectl set-hostname szb122038
# 2. hosts 解析 (4 台一致)
cat >> /etc/hosts <<'EOF'
192.168.122.38 szb122038
192.168.122.39 szb122039
192.168.122.40 szb122040
192.168.122.41 szb122041
192.168.122.43 k3s-api # VIP, 可选
EOF
# 3. 时间同步 (已有 chrony 则跳过)
systemctl enable --now chronyd && chronyc sources
# 4. 内核参数
cat > /etc/sysctl.d/99-k3s.conf <<'EOF'
net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
EOF
modprobe br_netfilter overlay
cat > /etc/modules-load.d/k3s.conf <<'EOF'
br_netfilter
overlay
EOF
sysctl --system6.4 配置镜像仓库加速 (4 台都执行)
K3s 系统镜像与业务镜像都走内网 Harbor。docker.io 的请求被镜像(mirror)到 Harbor 的对应项目,路径保持不变(docker.io/rancher/xxx → 192.168.122.156:30000/rancher/xxx):
bash
mkdir -p /etc/rancher/k3s
cat > /etc/rancher/k3s/registries.yaml <<'EOF'
mirrors:
docker.io:
endpoint:
- "http://192.168.122.156:30000"
configs:
"192.168.122.156:30000":
auth:
username: xxx
password: xxx
tls:
insecure_skip_verify: true
EOF凭据以 credentials.md 为准; 镜像同步情况见上级目录
../README.md。
6.5 准备 K3s 二进制 (气隙环境)
气隙环境无法从官网下载,先在有外网的机器上下载,再上传到 4 台节点:
bash
# 外网机器下载 (amd64)
wget https://github.com/k3s-io/k3s/releases/download/v1.35.4%2Bk3s1/k3s
wget https://github.com/k3s-io/k3s/releases/download/v1.35.4%2Bk3s1/sha256sum-amd64.txt
sha256sum -c sha256sum-amd64.txt --ignore-missing # 校验
# 上传到每台节点并安装
for ip in 38 39 40 41; do
scp k3s root@192.168.122.$ip:/usr/local/bin/k3s
ssh root@192.168.122.$ip 'chmod +x /usr/local/bin/k3s && k3s --version'
done同时把安装脚本放到任一节点(或 hypervisor 的文件服务器上):
bash
# 外网下载官方脚本; 也可用国内镜像:
# https://rancher-mirror.rancher.cn/k3s/k3s-install.sh
wget https://get.k3s.io -O k3s-install.sh7. 搭建集群实操
约定:下文
K3S_TOKEN为集群共享令牌,可自定义一个强随机串, 4 台节点必须一致。生成示例:openssl rand -hex 32
7.1 初始化第一台 Master (.38)
bash
# 在 szb122038 上:
INSTALL_K3S_SKIP_DOWNLOAD=true \
INSTALL_K3S_EXEC="server \
--cluster-init \
--token <K3S_TOKEN> \
--tls-san 192.168.122.38 \
--tls-san 192.168.122.43 \
--write-kubeconfig-mode 644" \
bash k3s-install.sh参数说明:
| 参数 | 含义 |
|---|---|
INSTALL_K3S_SKIP_DOWNLOAD=true | 气隙:不联网下载,使用已放好的二进制 |
--cluster-init | 初始化内嵌 etcd 集群(只在第一台使用) |
--token | 节点间互信令牌,也用于生成 node-token |
--tls-san | API 证书附加地址(节点 IP + 将来的 VIP) |
--write-kubeconfig-mode 644 | kubeconfig 放开读权限,便于取用 |
验证:
bash
systemctl status k3s # active (running)
k3s kubectl get nodes # szb122038 Ready
k3s kubectl get pods -A # CoreDNS/Traefik/ServiceLB 等 Running7.2 加入另外两台 Master (.39 / .40)
两台机器上命令相同(注意不要加 --cluster-init,改为 --server 指向第一台):
bash
# 在 szb122039、szb122040 上:
INSTALL_K3S_SKIP_DOWNLOAD=true \
INSTALL_K3S_EXEC="server \
--server https://192.168.122.38:6443 \
--token <K3S_TOKEN> \
--tls-san 192.168.122.38 \
--tls-san 192.168.122.43 \
--write-kubeconfig-mode 644" \
bash k3s-install.sh生产建议:等 VIP (.43) 就绪后,
--server指向https://192.168.122.43:6443或域名,避免单点。
验证(任一 Master):
bash
k3s kubectl get nodes -o wide # 3 台 server 均 Ready查看 etcd 成员(3 个成员即成功):
bash
ETCD=/var/lib/rancher/k3s/data/current/bin/etcdctl
TLS=/var/lib/rancher/k3s/server/tls/etcd
ETCDCTL_API=3 $ETCD \
--endpoints=https://127.0.0.1:2379 \
--cacert=$TLS/server-ca.crt --cert=$TLS/client.crt --key=$TLS/client.key \
member list -w table7.3 加入 Worker (.41)
bash
# 在 szb122041 上:
INSTALL_K3S_SKIP_DOWNLOAD=true \
K3S_URL=https://192.168.122.38:6443 \
K3S_TOKEN=<K3S_TOKEN> \
bash k3s-install.shAgent 不需要
INSTALL_K3S_EXEC;设置了K3S_URL后安装脚本自动以 agent 模式安装。 验证:systemctl status k3s-agent
7.4 整体验收清单
在任一 Master 上逐项执行:
bash
k3s kubectl get nodes -o wide # [ ] 4 节点全部 Ready
k3s kubectl get pods -A # [ ] 无 CrashLoop/ErrImagePull
k3s kubectl get svc -A # [ ] traefik 有 NodePort/LoadBalancer快速配置本地 kubectl(可选):
bash
# 把 kubeconfig 拉到本地 (~/.kube/)
scp root@192.168.122.38:/etc/rancher/k3s/k3s.yaml ~/.kube/config-k3s
# 把 server 地址 127.0.0.1 改为节点 IP 或 VIP
sed -i 's/127.0.0.1/192.168.122.38/' ~/.kube/config-k3s
kubectl --kubeconfig ~/.kube/config-k3s get nodes8. 导入 Rancher Prime
8.1 生成注册命令
- 登录 Rancher Prime UI → 左上角菜单 → Cluster Management(集群管理);
- 点击 Create(创建) → 选择页面下方 Import Existing(导入已有集群);
- 选择 Generic(通用);
- 填写集群名称(如
k3s-prod-3m1w),其余默认,点击 Create; - 页面会生成一段注册命令,形如:
bash
curl --insecure -sfL https://<RANCHER地址>/v3-import/<随机token>.yaml | kubectl apply -f -8.2 执行注册
在任一能执行 kubectl 的 Master 上执行上面那条命令。它会在集群里部署 cattle-cluster-agent 和 cattle-node-agent(见 5.2)。
气隙环境注意:注册 YAML 中的 rancher/rancher-agent 镜像需要节点能拉到。 若无法访问外部仓库,先把镜像同步到 Harbor,再修改 YAML 后应用:
bash
# 1. 下载注册 YAML
curl --insecure -sfL https://<RANCHER地址>/v3-import/<token>.yaml -o import.yaml
# 2. 同步 agent 镜像到 Harbor (外网机器执行)
skopeo copy --dest-tls-verify=false \
--dest-creds "admin:xxx" \
docker://registry.rancher.com/rancher/rancher-agent:<与Rancher同版本> \
docker://192.168.122.156:30000/rancher/rancher-agent:<同版本>
# 3. 替换 YAML 中的镜像地址
sed -i 's#registry.rancher.com#192.168.122.156:30000#g' import.yaml
# 4. 应用
kubectl apply -f import.yaml也可以在 Rancher Global Settings → system-default-registry 里统一设置
192.168.122.156:30000,这样生成的 YAML 会自动带上内网仓库前缀。
8.3 验证导入成功
- Rancher UI:集群列表中该集群状态变为 Active(首次约需 1-2 分钟);
- 集群内部:
bash
kubectl -n cattle-system get pods
# cattle-cluster-agent-xxx 1/1 Running
# cattle-node-agent-xxx 1/1 Running (每节点一个)导入后,UI 上该集群会显示 K3s 版本号 v1.35.4+k3s1。接下来请阅读 02-Rancher-Prime-UI使用指南。
9. 附录: Rancher Prime 安装速览
本手册假设 Rancher Prime 管理平面已存在。若尚未安装,以下为快速参考, 详细气隙步骤见 Rancher 气隙部署手册。
Rancher Prime 需要安装在一个现有的 K8s 集群上(如本环境的 RKE2 集群):
bash
# 1. cert-manager (前置依赖)
kubectl apply -f cert-manager.crds.yaml
helm install cert-manager ./cert-manager-<版本>.tgz -n cert-manager
# 2. 添加 Prime Helm 仓库并安装
helm repo add rancher-prime https://charts.rancher.io/rancher
helm repo update
kubectl create namespace cattle-system
helm install rancher rancher-prime/rancher \
--namespace cattle-system \
--set hostname=rancher.your-domain.com \
--set bootstrapPassword='xxx' \
--set replicas=3气隙环境下需先把 registry.rancher.com 下的镜像同步到 Harbor,并用 --set systemDefaultRegistry=192.168.122.156:30000 指定内网仓库。
首次登录:浏览器打开 https://rancher.your-domain.com, 用户 admin + 上面设置的 bootstrapPassword,登录后会要求改密码。
10. 本章常见问题
Q1: K3s 和标准 K8s 的命令一样吗? 完全一样。k3s kubectl 就是标准 kubectl;也可以 alias kubectl='k3s kubectl'。
Q2: Master 节点能同时跑业务吗? 可以。K3s Server 默认不禁止调度业务 Pod。本集群只有 1 台 Worker,资源紧张时 业务会自动调到 Master 上。若希望业务只跑在 Worker,可用污点/节点选择器 (见 03-日常运维手册 第 3 节)。
Q3: 为什么不把 Worker 也做成 3 台? Worker 数量由业务容量决定,与高可用无关。Worker 挂一台,上面的 Pod 会被 重新调度到其他节点;而 Master 挂了影响的是整个控制面。本环境先 1 台 Worker, 后续按需扩容(扩容方法见运维手册 3.2)。
Q4: token 丢了怎么办? Master 上保存于 /var/lib/rancher/k3s/server/node-token,可用它继续加节点。
Q5: 集群能离线运行吗? 可以。镜像已镜像化到 Harbor,K3s 控制面完全本地运行。与外网断连不影响 已部署业务;只是无法拉取 Harbor 里没有的新镜像。