K8s_cluster-register_cattle-cluster-agent Could not resolve host

Rancher Server 设置

  • Rancher 版本:2.7.1
  • 安装选项 (Docker install/Helm Chart):
    • 如果是 Helm Chart 安装,需要提供 Local 集群的类型(RKE1, RKE2, k3s, EKS, 等)和版本:rancher在官方k8s:1.24.10 ,helm在线安装rancher2.7.1
  • 在线或离线部署:

下游集群信息

  • Kubernetes 版本: v1.24.9-rancher1-1
  • Cluster Type (Local/Downstream):
    • 如果 Downstream,是什么类型的集群?(自定义/导入或为托管 等):
      通过rancher新建rke集群

用户信息

  • 登录用户的角色是什么? (管理员/集群所有者/集群成员/项目所有者/项目成员/自定义):admin用户
    • 如果自定义,自定义权限集:

主机操作系统:
ubuntu20.0.4
问题描述:
使用rancher创建集群后,配置dns服务器后,容器无法解析域名,导入容器退出
重现步骤:
创建集群就好出现,注册地址是ingress的假域名

结果:


预期结果:

截图:

其他上下文信息:

日志


该问题是因为下游集群的 cluster-agent 解析 rancher manager 时,下游集群的 coredns 没有对应的解析记录。

可以使用以下任意一种方式解决:

  1. 在外部 dns 服务器中设置 rancher manager 的解析记录,这样当 coredns 解析不到域名之后会自动到上游的 dns 去解析。
  2. 如果没有全局的 dns 服务器来做解析,可以在 coredns 中设置解析记录,可以使用 coredns 的 hosts 插件去完成,一般 coredns 的配置是在 configmap 中,直接修改 coredns configmap 的配置,然后重启 coredns 即可,参考:hosts
  3. 直接在下游集群的 cluster-agent 的 deploymanager 中添加映射记录,可参考:安装 | Rancher文档

1、/etc/resolv.conf文件已经配置了windows2003搭建的dns服务器,nslookup查看是解析到了,node agent可以了但是cluster agent不行
2、coredns指的是下游rke集群吧(rancher所在k8s集群已经配置了无效),deploy、configmap等资源在哪里看,rancher界面集群不可用看不到,rks集群宿主机又没看到kubectl和认证文件
3、cluster-agent的deploy同第二点,哪里修改;

如果下游集群是 rke 集群可以通过下面的命令来回复 kubeconfig 文件:

## 在 controlplan 节点执行:
docker run --rm --net=host -v $(docker inspect kubelet --format '{{ range .Mounts }}{{ if eq .Destination "/etc/kubernetes" }}{{ .Source }}{{ end }}{{ end }}')/ssl:/etc/kubernetes/ssl:ro --entrypoint bash $(docker inspect $(docker images -q --filter=label=io.cattle.agent=true) --format='{{index .RepoTags 0}}' | tail -1) -c 'kubectl --kubeconfig /etc/kubernetes/ssl/kubecfg-kube-node.yaml get configmap -n kube-system full-cluster-state -o json | jq -r .data.\"full-cluster-state\" | jq -r .currentState.certificatesBundle.\"kube-admin\".config | sed -e "/^[[:space:]]*server:/ s_:.*_: \"https://127.0.0.1:6443\"_"' > kubeconfig_admin.yaml

thanks!

获取rke集群认证文件后修改deploy可以了;
直接配置dns, node agent可以, cluster agent这个不行,这个问题官方会修复吗?
真的生产环境每次建集群都去主机手工操作应该不允许,这个有没有其他入口可以修改deploy,或是部署时候界面就提供配置dns信息的入口?

正常逻辑不会这样的,我试过这种方案是没问题的,因为当 coredns 找不到解析记录的话,会到上游的 dns 寻求解析,如果你配置正确,不可能出现这样的情况。

一开始都报错,配置dns服务器后node agent可以了,cluster不可以,dns配置应该可以吧,配置不对应该都解析不了才对,node agent和cluster agent都在同一台主机

node-agent 是直接通过本机的 dns 服务器去解析的,cluster-agent 是通过 coredns 去解析。

如果还有问题,那你可以从 coredns 去排查。


容器内连接dns服务器网不通