ksd
1
Rancher Server 设置
- Rancher 版本: v2.5.5
- 安装选项 (Docker install/Helm Chart): Docker install
- 如果是 Helm Chart 安装,需要提供 Local 集群的类型(RKE1, RKE2, k3s, EKS, 等)和版本:
- 在线或离线部署:在线
下游集群信息
- Kubernetes 版本: 1.19.16
- Cluster Type (Local/Downstream): 自定义
- 如果 Downstream,是什么类型的集群?(自定义/导入或为托管 等):
用户信息
- 登录用户的角色是什么? (管理员/集群所有者/集群成员/项目所有者/项目成员/自定义):
问题描述:
通过 Rancher v2.5.5 创建的自定义集群(v1.19.16),不会自动创建 nginx-ingress。
2.5.12 是可以的
重现步骤:
- 启动单节点 Rancher server
docker run -itd -p -p 4343:443 --privileged rancher/rancher:v2.5.5
-
启动成功后,创建自定义集群,选择最新的 K8s 1.19.16 版本
-
等待创建成功后,检查 system project 下是否存在 nginx-ingress
结果:
集群创建成功后,system project 下不存在 nginx-ingress
预期结果:
下游集群创建成功,自动创建 nginx-ingress
1 个赞
ksd
2
使用 Rancher 2.5.5 创建 1.19.16 集群时,可以从 Rancher server 得到以下日志:
2022/04/20 02:07:38 [ERROR] cluster [c-pdpzq] provisioning: Failed to deploy addon execute job [rke-ingress-controller]: template: compiled_template:455:7: executing "compiled_template" at <.NginxIngressControllerPriorityClassName>: can't evaluate field NginxIngressControllerPriorityClassName in type cluster.ingressOptions
原因
环境里kontainer-driver-metadata由于refresh机制应该是匹配最新的模板了,该模版新增了很多参数其中一个是报错的参数,而rancher 2.5.5版本内置的rke是1.2.4,1.2.4 不支持 NginxIngressControllerPriorityClassName 属性 而 rancher 2.5.5 内置的go.mod 里用的是rke 1.2.4
如何解决
为了解决这个问题,可以使用固定kontainer-driver-metadata 的方式,来 让 Rancher 不更新最新的 kontainer-driver-metadata 。
- 从 rancher server 中获取 kontainer-driver-metadata
docker cp rancher_container_id:/var/lib/rancher-data/driver-metadata/data.json data.json
-
将 data.json 上传到 Apache 服务器,并保证可以通过 url 访问
-
修改 Rancher 的kontainer-driver-metadata 配置,导航到 setting – rke-metadata-config,将 url 修改为你的 apache 服务器地址,并保存。
-
重新创建下游集群,此时,可以看到支持的最新 K8s 集群已经变成了 1.19.6
等待集群创建成功后,可以到 system project 下确认 nginx-ingress 是否创建成功。
1 个赞