第十八章: Kubernetes - Rancher 和 Headlamap 控制面板使用

18.1 安装 Rancher

1. 安装 Helm(Linux 或 macOS)

curl https://get.helm.sh/helm-v3.14.4-linux-amd64.tar.gz -o helm-v3.14.4-linux-amd64.tar.gz
tar -zxvf helm-v3.14.4-linux-amd64.tar.gz
sudo mv linux-amd64/helm /usr/local/bin/helm

验证

helm version

在这里插入图片描述

2. 准备域名(必需)

Rancher 必须使用域名访问,不能裸 IP

# Windows / Linux / Mac
192.168.163.4 rancher.example.com

3. 安装 cert-manager(Rancher 依赖)

添加 Helm 仓库

helm repo add jetstack https://charts.jetstack.io
helm repo update

安装 cert-manager

kubectl create namespace cert-manager

helm install cert-manager jetstack/cert-manager \
  --namespace cert-manager \
  --set installCRDs=true

验证:全部 Running 才继续

kubectl get pods -n cert-manager

在这里插入图片描述

4. 安装 Rancher

添加 Rancher Helm 仓库

helm repo add rancher-stable https://releases.rancher.com/server-charts/stable
helm repo update

创建 Rancher 命名空间

kubectl create namespace cattle-system

安装 Rancher(推荐自动 TLS)

helm install rancher rancher-stable/rancher \
  --namespace cattle-system \
  --create-namespace \
  --version 2.13.3 \
  --set hostname=rancher.example.com \
  --set replicas=2 \
  --set 'livenessProbe.failureThreshold=1000' \
  --set 'livenessProbe.periodSeconds=30' \
  --set 'readinessProbe.failureThreshold=1000' \
  --set 'readinessProbe.periodSeconds=10' \
  --set 'startupProbe.failureThreshold=30' \
  --set 'startupProbe.periodSeconds=10'

说明:

  • hostname:必须与你的域名一致
  • replicas=2:测试用,生产建议:replicas=3

5. 等 Rancher 启动(需要时间)

kubectl -n cattle-system get pods -w

在这里插入图片描述

给 Rancher Ingress 明确指定 nginx

kubectl patch ingress rancher -n cattle-system \
  -p '{"spec":{"ingressClassName":"nginx"}}'

6. 进入 Rancher

获取 admin 密码

kubectl get secret bootstrap-secret \
  -n cattle-system \
  -o go-template='{{.data.bootstrapPassword | base64decode}}{{"\n"}}'
 
# 或
kubectl -n cattle-system exec -it \
  $(kubectl -n cattle-system get pods -l app=rancher -o jsonpath='{.items[0].metadata.name}') \
  -c rancher -- ensure-default-admin

在这里插入图片描述
在这里插入图片描述

18.2 Rancher 的使用

1. 重置 admin 密码

使用指令重置密码

kubectl -n cattle-system exec -it deploy/rancher -- reset-password

重置密码,设置自定义密码登录进去,最好重新设置一下 admin 密码
在这里插入图片描述
这里再次设置一下自定义密码,防止无法登录

18.3 Headlamp 安装步骤总结

  1. 添加 Helm 仓库并安装 Headlamp
# 添加官方 Helm 仓库
helm repo add headlamp https://kubernetes-sigs.github.io/headlamp/
helm repo update

# 在 headlamp 命名空间中安装 Headlamp
helm install headlamp headlamp/headlamp -n headlamp --create-namespace
  1. 将 Service 类型改为 NodePort
# 将 headlamp Service 的类型改为 NodePort,并指定端口为 14009
kubectl patch svc headlamp -n headlamp --type='json' -p='[{"op": "replace", "path": "/spec/type", "value": "NodePort"}, {"op": "add", "path": "/spec/ports/0/nodePort", "value": 14009}]'

或

kubectl edit svc headlamp -n headlamp
apiVersion: v1
kind: Service
metadata:
  annotations:
    field.cattle.io/publicEndpoints: '[{"port":14009,"protocol":"TCP","serviceName":"headlamp:headlamp","allNodes":true}]'
    meta.helm.sh/release-name: headlamp
    meta.helm.sh/release-namespace: headlamp
  creationTimestamp: "2026-09-10T03:01:08Z"
  labels:
    app.kubernetes.io/instance: headlamp
    app.kubernetes.io/managed-by: Helm
    app.kubernetes.io/name: headlamp
    app.kubernetes.io/version: 0.45.0
    helm.sh/chart: headlamp-0.45.0
  name: headlamp
  namespace: headlamp
  resourceVersion: "746494"
  uid: 8f902e8f-45aa-4a78-8107-a9de1b27f129
spec:
  clusterIP: 10.96.66.181
  clusterIPs:
  - 10.96.66.181
  externalTrafficPolicy: Cluster
  internalTrafficPolicy: Cluster
  ipFamilies:
  - IPv4
  ipFamilyPolicy: SingleStack
  ports:
  - name: http
    nodePort: 14009
    port: 80
    protocol: TCP
    targetPort: http
  selector:
    app.kubernetes.io/instance: headlamp
    app.kubernetes.io/name: headlamp
  sessionAffinity: None
  type: NodePort
status:
  loadBalancer: {}
  1. 手动创建新的 SA 并赋权
# 创建 ServiceAccount
kubectl -n headlamp create serviceaccount headlamp-admin

# 绑定 cluster-admin(测试环境方便用,生产建议最小权限)
kubectl create clusterrolebinding headlamp-admin-binding \
  --clusterrole=cluster-admin \
  --serviceaccount=headlamp:headlamp-admin
# 全部返回 yes 才算成功。
kubectl auth can-i list pods  --as=system:serviceaccount:headlamp:headlamp-admin -n default
kubectl auth can-i list nodes --as=system:serviceaccount:headlamp:headlamp-admin
kubectl auth can-i watch pods --as=system:serviceaccount:headlamp:headlamp-admin --all-namespaces
  1. 短期 Token(推荐,K8s 1.24+ 标准方式)
kubectl create token headlamp -n headlamp --duration=24h

更多推荐