k8s 集群中 rancher 部署
helm 安装
- 安装helm
#下载helm 并安装
wget https://get.helm.sh/helm-v3.3.1-linux-amd64.tar.gz
tar -xf helm-v3.3.1-linux-amd64.tar.gz
mv ./linux-amd64/helm /usr/local/bin/helm && chmod +x /usr/local/bin/helm
helm version
- helm安装rancher
#添加 rancher chart 仓库地址
helm repo add rancher-stable https://releases.rancher.com/server-charts/stable
helm repo list
#下载指定rancher 版本包
cd /data/work/linux-amd64
helm fetch rancher-stable/rancher --version=2.4.11
#创建 tls 证书
kubectl create secret tls moviebook.cn --cert=server.crt --key=server.key -n kube-system
#渲染模板
helm template rancher ./rancher-2.4.11.tgz --namespace kube-system --output-dir . --set ingress.tls.source=moviebook --set hostname=rancher-dev-yzk8s.xxmm.cn
#查看模板文件
ls rancher/templates/
clusterRoleBinding.yaml deployment.yaml ingress.yaml serviceAccount.yaml service.yaml
#修改模板文件增加名称空间
增加字段: namespace: kube-system
#创建模板文件
kubectl apply -f .
#设置宽泛的rbac
kubectl create clusterrolebinding permissive-binding \
--clusterrole=cluster-admin \
--user=admin \
--user=kubelet \
--group=system:serviceaccounts
#使用nginx 反向代理rancher
# cat rancher.conf
server {
listen 443 ssl;
server_name rancher-dev-yzk8s.xx.cn;
ssl_certificate /etc/nginx/ssl/xx.cn/server.crt;
ssl_certificate_key /etc/nginx/ssl/xx.cn/server.key;
location / {
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Port $server_port;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass https://kubernetes_backend_ssl;
proxy_http_version 1.1;
proxy_set_header Upgrade "websocket";
proxy_set_header Connection "upgrade";
# 这里将允许您在 Rancher UI 中打开命令行窗口时,窗口可以保留最多15分钟。没有这个参数时,默认值为1分钟,一分钟后在Rancher中的shell会自动关闭。
proxy_read_timeout 900s;
proxy_buffering off;
}
}
server {
listen 80;
server_name rancher-dev-yzk8s.xx.cn;
rewrite ^(.*)$ https://${server_name}$1 permanent;
}
#rancher 报错
#rancher2.4.11 版本报错Alert: Component controller-manager is unhealthy.
#现象rancher2.4.11 版本报错Alert: Component controller-manager is unhealthy.
kubectl get componentstatuses
controller-manager Unhealthy HTTP probe failed with statuscode: 400
#处理方式,登录三个master 节点,三个master 节点执行相同的操作
cd /etc/kubernetes
vim kube-controller-manager.conf
注释以下两个参数
#--port=0
#--secure-port=10252
#重启kube-controller-manager、kubelet
systemctl restart kube-controller-manager
systemctl restart kubelet
#再吃执行 kubectl get componentstatuses
controller-manager Healthy ok
scheduler Healthy ok
etcd-2 Healthy {"health":"true"}
etcd-1 Healthy {"health":"true"}
etcd-0 Healthy {"health":"true"}
#刷新rancher,问题解决
rancher 连接ldap
#选择全局--->安全--->认证--->LDAP
- 添加运维管理人员的admin 权限
#选择local--->成员---> 添加用户--->权限修改为 cluster owner
- 开发人员只对某一个名称空间有权限的设置方法
#例如:开发人员 he.jiu只对 default 名称空间有进入容器、维护容器的权限,对其他名称空间不可看,如下设置
#选择 local --> default-->上面导航栏成员-->添加成员--> 选择用户--> 分配权限(View Workloads 和 Manage Workloads)
- 测试普通用户登录rancher 的权限
#开发人员登录 rancher,查看自己的权限
开发人员 he.jiu 只有local 中 default 名称空间下Pod 的权限,可以查看、删除、进入pod 终端命令行的权限。
对于其他名称空间是没有权限的