先解决你的问题
我们来看关键日志:
OCI runtime create failed: write /proc/self/attr/keycreate: permission denied
这是因为SELinux阻止了容器的操作,导致无法写入/proc的相关文件
解决方法直接关掉SELinux就好了:
临时关闭:sudo setenforce 0
永久关闭:
sudo sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
sudo reboot # 重启
Rancher完整安装教程
Rancher 支持多种部署方式:
方式 |
场景 |
说明 |
Docker 单节点 |
测试/开发环境 |
快速启动,但不支持高可用 |
K3s 嵌入式 |
轻量级生产环境 |
内置 K3S,资源占用低 |
RKE/RKE2 集群 |
生产环境(高可用) |
基于 Kubernetes 高可用部署 |
Helm 安装 |
自定义 Kubernetes 集群 |
灵活对接已有 K8s 集群 |
这里采用轻量的K3S来部署
将 kubeconfig 文件拷贝至默认的目录下
K3s 默认的配置文件路径,Helm无法识别,将 /etc/rancher/k3s/k3s.yaml 软连接到 ~/.kube/config,供 helm 使用
mkdir ~/.kube && ln -s /etc/rancher/k3s/k3s.yaml ~/.kube/config
安装Helm包管理器
wget https://pkg.goodrain.com/pkg/helm && chmod +x helm && mv helm /usr/local/bin/
添加Rancher镜像源
# 添加rancher镜像源
helm repo add rancher-stable http://rancher-mirror.oss-cn-beijing.aliyuncs.com/server-charts/stable
# 更新源
helm repo update
为Rancher创建命名空间
需要定义一个 Kubernetes Namespace,在 Namespace 中安装由 Chart
创建的资源。这个命名空间的名称为cattle-system:
kubectl create namespace cattle-system
安装cert-manager
kubectl apply -f https://github.com/jetstack/cert-manager/releases/download/v1.12.3/cert-manager.crds.yaml
#添加JetStack Helm仓库
helm repo add jetstack https://charts.jetstack.io
#更新本地仓库缓存
helm repo update
#安装 cert-manager
helm install cert-manager jetstack/cert-manager --namespace cert-manager --create-namespace --version v1.12.3
#查看 cert-manager
kubectl get pods --namespace cert-manager
安装Rancher
这里使用Let’s Encrypt证书证书方式直接安装
安装时可设置的选项,可查看官方文档: https://docs.rancher.cn/docs/rancher2.5/installation/install-rancher-on-k8s/chart-options/_index/
如下为对应的命令空间 cattle-system
在上面创建的
如下 registry.cn-hangzhou.aliyuncs.com/rancher/rancher
为对应的rancher镜像
如下 replicas
为设置 Rancher 部署所使用的复制数量(副本数) 默认为 3 例如:--set replicas=3
如下 ingress.tls.source
设置为 letsEncrypt (表示使用Let’s Encrypt证书)
如果要安装一个特定的 Rancher 版本, 使用--version 标志,例如:--version 2.3.6
对应 letsEncrypt.email
为证书到期通知的邮箱地址
如果你安装的是 alpha 版本,Helm 要求在命令中加入 --devel 选项
helm install rancher rancher-stable/rancher \
--namespace cattle-system \
--set hostname=域名\
--set ingress.tls.source=letsEncrypt \
--set rancherImage=registry.cn-hangzhou.aliyuncs.com/rancher/rancher \
--set letsEncrypt.email=878639947@qq.com
验证安装
#验证安装状态
kubectl -n cattle-system rollout status deploy/rancher
kubectl -n cattle-system get deploy rancher
#查看登录密码
kubectl get secret --namespace cattle-system bootstrap-secret -o go-template='{{.data.bootstrapPassword|base64decode}}{{"\n"}}'