K3s安装时添加”--disable coredns“参数后再手动部署coredns,无法自动获取hostname和IP解析

环境信息:
K3s 版本: v1.19.3+k3s3

节点 CPU 架构、操作系统和版本:: Linux 10-200-192-101 4.18.10-1.el7.elrepo.x86_64 #1 SMP Wed Sep 26 16:20:39 EDT 2018 x86_64 x86_64 x86_64 GNU/Linux

集群配置:2 servers,10agents

问题描述:

1、安装k3s集群时通过”–disable coredns“禁止安装coredns,然后通过/var/lib/rancher/k3s/server/manifests/coredns.yaml手动部署coredns,手动部署后无法获取hostname和IP解析,/etc/coredns/NodeHosts,如下图

2、由于无法获取hostname和IP解析,部署metrics-server报错,因为它要获取hostname和IP解析

备注:手动部署coredns原因,是我的master打了node.kubernetes.io/unschedulable:NoSchedule这个污点,但是coredns没有容忍这个污点,我就把manifest下coredns.yaml提前备份,修改yaml容忍这个污点,等集群部署完再通过kubectl apply -f coredns.yaml 部署。

复现步骤:

  • 安装 K3s 的命令:

预期结果:

实际结果:

附加上下文/日志:

日志


coredns启动是报错:

这种方案好像确实有问题,如果启动 K3s 禁用了 coredns,可以按照 coredns 官网进行安装。 暂时别采用 复制 coredns.yaml 的形式。

复制 coredns.yaml 的形式等有时间我在测试下再回复。

好的,多谢,和官方提供的yaml对比,基本就是差NodeHosts这个ConfigMap,如下:
image

现在问题是:如果不加载这个配置文件集群会有什么影响,现在看是影响metrics-server,metric-server无法启动

NodeHosts中记录了所有node主机名和IP的对应关系,有哪些组件会去获取这些解析?

@ksd metrics-sever异常是因为默认metrics-server使用node的hostname和node节点通信,加两个参数,让它使用内网IP通信:

  • –kubelet-preferred-address-types=InternalIP
  • –kubelet-insecure-tls

但是不知道k3s 其它地方有没有依赖hostname的地方?

看看 Allow adding configuration to coredns `.:53` block via *.override keys in `coredns-custom` ConfigMap · Issue #7639 · k3s-io/k3s · GitHub 是否满足你的需求