【发布时间】:2020-05-20 16:41:18
【问题描述】:
Dnsjava 是 Java 中的 DNS 实现。 我们围绕它构建了一些应用程序逻辑。 只是想检查一下 Kubernetes 是否会在应用程序级别支持 DNS 接口
【问题讨论】:
标签: kubernetes containers dnsjava
Dnsjava 是 Java 中的 DNS 实现。 我们围绕它构建了一些应用程序逻辑。 只是想检查一下 Kubernetes 是否会在应用程序级别支持 DNS 接口
【问题讨论】:
标签: kubernetes containers dnsjava
不完全确定您的意思,但 Kubernetes 并不关心您在其上运行什么。你的工作量是你的问题:)
【讨论】:
您可以在 Kubernetes 中配置您的 DNS Pod 并自定义 DNS 解析过程。
DNS 是使用插件管理器集群插件自动启动的内置 Kubernetes 服务。
CoreDNS 是最流行的 DNS 服务器,取代了 kube-dns。
CoreDNS 部署作为 Kubernetes 服务公开,具有 静态IP。 CoreDNS 和 kube-dns 服务在 metadata.name 字段。这样做是为了有更大的 与依赖传统 kube-dns 的工作负载的互操作性 用于解析集群内部地址的服务名称。它 抽象出哪个 DNS 提供者的实现细节 在那个公共端点后面运行。 kubelet 将 DNS 传递给每个 带有 --cluster-dns= 标志的容器。
DNS 名称也需要域。您在 带有
--cluster-domain=<default-local-domain>标志的 kubelet。
DNS 服务器启用端口查找、正向查找和反向 IP 地址查找(PTR 记录)。
如果 Pod 的 dnsPolicy 设置为“default”,它会继承名称 来自运行 Pod 的节点的分辨率配置。豆荚 DNS 解析的行为应与节点相同。但见已知 问题。
如果您不希望这样,或者如果您想要不同的 DNS 配置 pod,您可以使用
kubelet’s --resolv-conf标志。将此标志设置为 “”来防止 Pod 继承 DNS。将其设置为有效的文件路径 为 DNS 继承指定/etc/resolv.conf以外的文件。
对于每个 pod,都可以设置 DNS 策略。 Kubernetes 支持以下 DNS 策略:
www.kubernetes.io
请注意,“默认” 值与默认 DNS 策略不同。如果未指定 dnsPolicy,则 DNS 策略的默认值为 “ClusterFirst”。
以下是具有特定 DNS 策略的 pod 配置文件示例:
apiVersion: v1
kind: Pod
metadata:
name: dns-example
spec:
containers:
- name: dns-test
image: eg_postgresql:latest
command:
- sleep
- "4000"
imagePullPolicy: IfNotPresent
name: eg_postgresql
restartPolicy: Always
hostNetwork: true
dnsPolicy: ClusterFirstWithHostNet
在此处阅读更多信息:dns-kubernetes、dns-services-pod。
【讨论】:
是的 - 您在 Kubernetes 上运行的应用程序可以与在同一集群中运行的 Kubernetes DNS 进行交互/调用...如果这就是问题所在。 :-)
如果你有适当的访问权限,你可以在 Kubernetes 中customize the DNS。
查看文档中的 "Pod's DNS Policy" 和 "Pod's DNS Config" 部分,了解如何在 Deployment/Pod 配置中配置 dnsPolicy 和 dnsConfig 字段以允许对 Deployment/Pod 的 DNS 设置进行更多控制。
【讨论】: