Bootstrap

基于本地kubernetes安装rancher及rancher远程连接kubernetes

rancher安装

1、添加helm chart仓库

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

自己选择合适的rancher版本 这里我选择了适合生产环境的 stable版本

2、创建rancher的ns

kubectl create namespace cattle-system

3、下载acme.sh文件,为后续添加正式证书做准备

 curl https://get.acme.sh | sh -s [email protected]

4、访问freeSSL为自己的域名添加证书,根据提示在服务器配置证书,建议配置统配域名证书

   acme.sh --issue -d *.example.com  --dns dns_dp --server https://acme.freessl.cn/v2/DV90/directory/***

5、将fullchain.cer文件重命名为tls.crt,将证书秘钥文件重命名为tls.key,等待后续使用

6、安装rancher

   helm install rancher rancher-stable/rancher \
   --namespace cattle-system \
   --set hostname=rancher.example.com \
   --set replicas=1 \
   --set ingress.tls.source=secret

7、安装证书

   kubectl -n cattle-system create secret tls tls-rancher-ingress \
   --cert=tls.crt \
   --key=tls.key

8、验证是否成功部署

 kubectl -n cattle-system rollout status deploy/rancher

9、浏览器输入:https:/rancher.exmaple.com/ 根据提示进行后续的操作即可

10、千万别忘记备案,不然域名将无法访问

rancher连接k8s(以k3s为例)

首页->集群管理->导入已有集群->通用->填写集群名称→创建->根据实际情况输入以下命令即可

 不过可能会遇到各种奇怪情况,导致rancher上显示集群状态一直是pending

(1)不能交互错误

给master节点对应ip配置白名单后,发现能进行交互了。

输入命令:kubectl get pods -n cattle-system

发现拉取失败

(2)拉取错误

查看详细问题:kubectl describe pods -n cattle-system cattle-cluster-agent-89cd79cb-nc2kt

此处有两个错误:

1、harbor.inchtek.tech解析为了内网ip,需要手动修改host

2、配置后出现了无线重启问题,原因是worker节点也需要pull rancher-agent,所以worker节点也需要白名单

给master、worker节点都配置白名单并且配置host后出现了无限重启问题

(3)重启错误

经过多方查阅资料发现:

cattle-cluster-agent 运行在 pod 上,与rancher-server端是走内网进行交互,即使在 node 节点上本地 hosts 加入本地解析也不行。因为 pod 是走
CoreDNS 的解析

参考资料

rancher修复cattle-cluster-agent无法连接rancher-server | 慎道

根据上述资料输入该命令:kubectl edit deployment/cattle-cluster-agent -o yaml --save-config -n cattle-system

如图所示添加hostAliases

:wq 搞定

如果出现单master部署可能出现

1 node(s) had untolerated taint {node-role.kubernetes.io/control-plane: }这类错误

需要手动删除污点

查看污点: kubectl describe node nodename |grep Taints

删除污点:taint nodes --all node-role.kubernetes.io/control-plane:NoSchedule-
 

;