2

我设置了一个私有 K8S 集群RKE 1.2.2所以我的 K8S 版本是1.19. 我们有一些内部服务,需要使用自定义的 FQDN 而不是简单的服务名称来相互访问。当我在网上搜索时,我发现的唯一解决方案是添加此REFrewrite中描述的 CoreDNS 记录。但是,此解决方案会导致手动配置,我想在服务设置期间自动定义记录。这种自动化有什么解决方案吗?CoreDNS 是否有这样的 API 来添加或删除记录?ConfigMaprewrite

注意 1 :我还尝试挂载 CoreDNSConfigMap通过另一个 pod 更新它,但内容是以只读方式挂载的。

注2:有人提议打电话kubectl get cm -n kube-system coredns -o yaml | sed ... | kubectl apply ...。但是,我想在服务设置期间或在 pod 中或在initcontainer.

注3:我希望有类似hostAliases服务的东西,称为serviceAliases内部服务(ClusterIP)的东西。

4

1 回答 1

0

目前,对此没有现成的解决方案。

我唯一想到的是使用MutatingAdmissionWebhook。它需要捕捉时刻,Kubernetes service创建新的,然后按照CoreDNS文档ConfigMapCoreDNS的描述进行修改。

之后,您需要重新加载CoreDNS配置以从ConfigMap. 为此,您可以使用reload pluginfor CoreDNS。关于这个插件的更多细节可以在这里找到。

sidecarContainer您可以考虑使用for代替上面的方法CoreDNS,它将向容器发送SIGUSR1信号CoreDNS。这个方法的例子可以在这个 Github 线程中找到。

于 2020-12-16T13:14:27.677 回答