第一章安装完一个 server 和一个 agent 节点之后,就相当于拥有了一个迷你的 K3s 集群,现在开始安装管理面板。
注意:请参考成功率更高的 Docker 安装 Rancher Labs,该文章已作废!
谨慎考虑是否参考,能确定的是在 2H4G 轻量服务器下,手动安装会出现很多奇奇怪怪的错误,光我自己安装 3 次一样的步骤就出现 2 次安装结束检查状态出现“error: deployment "rancher" exceeded its progress deadline”的问题,并且日志的排查相当麻烦,尝试前请一定建立云服务器快照以便回滚!
注意:如果没有在 K3s 安装时修改 Ingress 监听端口,请不要在 server 或 agent 同服务器上安装,会造成 80 和 443 端口上起的服务无法正常访问!
1、首先安装 Kubernetes 的软件包管理工具 Helm
这也是 Rancher 安装官方文档所提示必要的模块,安装步骤参考 Installing Helm:
# 下载压缩包
wget https://get.helm.sh/helm-v3.7.0-linux-amd64.tar.gz
# 解压
tar -zxvf helm-v3.7.0-linux-amd64.tar.gz
# 二进制文件直接放入环境变量中即可使用
mv linux-amd64/helm /usr/local/bin/helm
完成后确定下是否安装成功:
[root@VM-8-6-centos ~]# helm version
version.BuildInfo{Version:"v3.7.0", GitCommit:"eeac83883cb40xxxxxxxxxxxec6373570374ce770b", GitTreeState:"clean", GoVersion:"go1.16.x"}
成功的情况添加含有 Rancher Chart 的 Helm Chart 仓库:
helm repo add rancher-stable https://releases.rancher.com/server-charts/stable
境内服务器使用阿里云的源
helm repo add rancher-stable http://rancher-mirror.oss-cn-beijing.aliyuncs.com/server-charts/stable
2、为 Rancher 创建 Namespace
kubectl create namespace cattle-system
3、使用自签证书 安装 Rancher
这一步官方给了 3 个选项:
- Rancher 生成的自签名证书
- Let's Encrypt
- 使用您自己的证书(可以是自签也可以是腾讯云等免费申请来的或是付费购买的)
我选择了最后一种,自签发 10 年并在本地安装证书以信任,教程在这:CentOS7 下使用 OpenSSL 生成 CA 自签发证书并解决 Windows 下信任证书后 Chrome 出现 ERR_CERT_COMMON_NAME_INVALID 的问题。
先配置环境变量:
vi /etc/profile
...
...
# 指定 Rancher 的安装使用 KUBECONFIG 配置文件防止出现“dial tcp [::1]:8080: connect: connection refused”的错误
export KUBECONFIG=/etc/rancher/k3s/k3s.yaml
source /etc/profile
接着执行安装命令:
注意:hostname 选项必须与服务器证书中的 Common Name 或 Subject Alternative Names 条目匹配!
# 使用 Helm 安装 Rancher
# replicas 为 Rancher 部署所使用的复制数量,少于 3 个节点时填写准确节点数
# 自签节点 privateCA 变量设置为 true
helm install rancher rancher-stable/rancher \
--namespace cattle-system \
--set hostname=rancher.k3s.com \
--set replicas=3 \
--set ingress.tls.source=secret \
--set privateCA=true
# 配置 SSL 证书
kubectl -n cattle-system create secret tls tls-rancher-ingress \
--cert=/etc/nginx/ssl/rancher.crt \
--key=/etc/nginx/ssl/rancher.key
验证是否安装成功:
# Rancher 是否成功部署
kubectl -n cattle-system rollout status deploy/rancher
# Rancher 当前状态
kubectl -n cattle-system get deploy rancher
确定完成后用 HTTPS://域名 进行访问。
结束。