我用RKE
1.2.2
设置了一个私有K8S集群,因此我的K8S版本是1.19
。我们有一些内部服务,有必要使用自定义FQDN而不是简单的服务名称来访问彼此。当我在网上搜索时,我找到的唯一解决方案是为本REF中描述的CoreDNSConfigMap
添加rewrite
记录。然而,该解决方案导致手动配置,我想在服务设置期间自动定义一个记录。这种自动化有什么解决方案吗?CoreDNS是否有这样的API来添加或删除rewrite
记录?
注意1:我还尝试装载CoreDNS的ConfigMap
并通过另一个pod进行更新,但内容是只读装载的。
注意2:有人提议呼叫kubectl get cm -n kube-system coredns -o yaml | sed ... | kubectl apply ...
。但是,我希望在服务设置期间或在pod或initcontainer
中实现自动化。
注意3:我希望有像hostAliases
这样的服务,也希望有serviceAliases
这样的内部服务(ClusterIP(。
目前,还没有现成的解决方案。
我唯一想到的就是使用MutatingAdmissionWebhook。当创建新的Kubernetes service
,然后按照CoreDNS文档中的描述将ConfigMap
修改为CoreDNS
时,它将需要捕获时刻。
之后,您需要重新加载CoreDNS
配置,以应用ConfigMap
中的新配置。为此,可以将reload plugin
用于CoreDNS
。关于这个插件的更多细节可以在这里找到。
您可以考虑将sidecarContainer
用于CoreDNS
,这将向CoreDNS
conatiner发送SIGUSR1
信号。这个方法的例子可以在这个Github线程中找到。