Rancher 是一个 [[Kubernetes]] 管理工具,提供部署和管理集群的能力。Rancher 为所有集群提供集中身份验证和基于角色的访问控制 RBAC,管理员可以在一个位置控制集群访问。
- 在现有的节点上配置 Kubernetes
- Catalog 管理,使用 Helm charts 轻松部署应用程序
- 管理项目
- Fleet 持续交付
- Istio 集成
测试单节点安装
根据官方的单节点安装建议:
直接执行如下的命令,或者转换成 docker-compose
docker run -d --restart unless-stopped -p 80:80 -p 443:443 --privileged --name rancher rancher/rancher:v2.9.2
查看日志:
docker logs --tailf 100 -f rancher
等待服务启动之后,登录 IP 地址 80 端口或者 443。
获取密码:
docker logs rancher 2>&1 | grep "Bootstrap Password:"
但是如果要上生产环境,请一定在 Kubernetes 下安装高可用的 Rancher,我在单节点安装只是为了方便学习和测试。
使用
身份验证,权限和全局设置
首次登录 Rancher 之后,会提示输入 Rancher Server URL,应该将 URL 设定成 Rancher 主入口,如果在负载均衡器之前,设置成负载均衡器的入口 URL。
主要注意的,设置 Rancher Server URL 后,Rancher 不支持更新。所以设置 URL 时要格外小心。
Rancher 支持非常多的外部系统连接登录,具体可以参考其官网。
集群管理
侧边栏,点击 Cluster Management
可以在这里探索集群,比如查看集群的节点数,内存使用,资源利用等等。
可以在此处创建集群,点击创建,然后给集群起一个名字,描述,然后选择集群的 Kubernetes 版本,我这里为了演示就选择 k3s
我在创建了集群, 并且在另外一台机器上运行 agent 命令之后,Rancher 中,集群一直 Updating 状态,节点状态也一直是 Reconciling ,然后必须去 Agent 端查看日志。
在 Client 安装 rancher agent,并重启
sudo systemctl restart rancher-system-agent
查看日志
sudo journalctl -u rancher-system-agent -f
发现了错误原因,可能是证书的问题。
Oct 18 16:12:38 gc12.einverne.info rancher-system-agent[7340]: time="2024-10-18T16:12:38+08:00" level=fatal msg="error while connecting to Kubernetes cluster: Get \"https://rancher.einverne.info/version\": tls: failed to verify certificate: x509: certificate signed by unknown authority"
k3s 中安装 Rancher
前提提交
确保满足以下先决条件:
- 有一个公网可访问的域名,并创建一个 A 记录
rancher.YOUR_DOMAIN.com
将其指向 Rancher 服务器的 IP 地址。 - 开放 80 和 443 端口,Let’s Encrypt 需要通过 80 端口进行 HTTP-01 挑战验证。
安装 k3s
因为 Docker 安装的单节点 Rancher 只适合测试,并且证书存在问题,为了方便扩展,所以更推荐的方式就是在现有的集群中安装 Rancher。
首先在主节点上安装 k3s
curl -sfL https://get.k3s.io | sh -
验证服务状态
sudo systemctl status k3s.service
配置 kubectl 访问
mkdir ~/.kube
sudo cp /etc/rancher/k3s/k3s.yaml ~/.kube/config
sudo chown $USER ~/.kube/config
sudo chmod 600 ~/.kube/config
export KUBECONFIG=~/.kube/config
验证集群状态
kubectl get nodes
kubectl cluster-info
kubectl get pods --all-namespaces
在安装 Rancher 时可以使用 Let’s Encrypt 的证书。
安装 Helm
安装 [[Helm]]
curl https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 | bash
# 或者
sudo snap install helm --classic
snap version
添加 Rancher Repository
helm repo add rancher-stable https://releases.rancher.com/server-charts/stable
创建命名空间
kubectl create namespace cattle-system
安装 cert-manager
因为要使用 letsEncrypt,所以需要安装 cert-manager
查看 cert-manager 最新版本
# If you have installed the CRDs manually, instead of setting `installCRDs` or `crds.enabled` to `true` in your Helm install command, you should upgrade your CRD resources before upgrading the Helm chart:
kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.16.1/cert-manager.crds.yaml
# Add the Jetstack Helm repository
helm repo add jetstack https://charts.jetstack.io
# Update your local Helm chart repository cache
helm repo update
# Install the cert-manager Helm chart
helm install cert-manager jetstack/cert-manager \
--namespace cert-manager \
--create-namespace \
--version v1.16.1 \
--set crds.enabled=true
验证
kubectl get pods --namespace cert-manager
安装 Rancher
安装
helm install rancher rancher-stable/rancher \
--namespace cattle-system \
--set hostname=rancher.YOUR_DOMAIN.com \
--set bootstrapPassword=admin \
--set ingress.tls.source=letsEncrypt \
--set letsEncrypt.email=me@example.org \
--set letsEncrypt.ingress.class=traefik \
--set privateCA=true
- 将 rancher.YOUR_DOMAIN.com 替换为你的实际域名。
- 将 me@example.com 替换为你的邮箱地址。
- 确保你的域名已正确解析到 K3s 节点的 IP 地址。
- bootstrapPassword 设置了初始的管理员密码,请更改为安全的密码。
如果设置里密码,直接使用密码登录即可,如果没有指定密码,可以使用命令获取
kubectl get secret --namespace cattle-system bootstrap-secret -o go-template='\n'
Rancher 会自动请求和安装 Let’s Encrypt 证书。这个过程可能需要几分钟。
验证服务启动之后可以验证
kubectl -n cattle-system rollout status deploy/rancher
安装完成后,可以通过 https://<rancher.YOUR_DOMAIN.com>
访问 Rancher UI。
使用
在登录 Rancher 后台之后,创建 k3s cluster ,但是在安装 Rancher agent 的时候发生错误
[FATAL] Aborting system-agent installation due to requested strict CA verification with no CA checksum provided
其他命令
卸载 system-agent-uninstall
curl https://raw.githubusercontent.com/rancher/system-agent/main/system-agent-uninstall.sh | sudo sh
其他清理
sudo rm -rf /etc/rancher /var/lib/rancher
ps aux | grep rancher
sudo rm /etc/systemd/system/rancher-*
sudo systemctl daemon-reload
01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b
curl -vk https://<RANCHER_SERVER_URL>/v3/settings/cacerts | jq -r .value | sha256sum | awk '{print $1}'
curl -fL https://rancher.einverne.info/system-agent-install.sh | sudo sh -s - --server https://rancher.einverne.info --label 'cattle.io/os=linux' --token 6rfv4hgmmffvj2nz9f9fsrlg2khjnnthzlg9hk8cbfsn5vldj6bgrz --etcd --controlplane --worker
curl -fL https://rancher.einverne.info/system-agent-install.sh | sudo sh -s - --server https://rancher.einverne.info --label 'cattle.io/os=linux' --token 6rfv4hgmmffvj2nz9f9fsrlg2khjnnthzlg9hk8cbfsn5vldj6bgrz --ca-checksum be15ab9bb1b034c17c8e2d13a748fead0165df3af96f8bcb76eb4cfbb461b5ee --etcd --controlplane --worker
curl -vk https://rancher.einverne.info/v3/settings/cacerts | jq -r .value | sha256sum | awk '{print $1}'