Dnsjava是Java中DNS的实现。 我们已经围绕它构建了一些应用程序逻辑。 只是想检查 Kubernetes 是否会在应用程序级别支持 DNS 接口
不完全确定你的意思,但 Kubernetes 并不关心你在它上运行什么。您的工作负载就是您的问题:)
您可以在 Kubernetes 中配置 DNS Pod 并自定义 DNS 解析过程。
DNS 是使用插件管理器集群附加组件自动启动的内置 Kubernetes 服务。
CoreDNS 是最流行的 DNS 服务器,取代了 kube-dns。
CoreDNS 部署作为 Kubernetes 服务公开,具有 静态 IP。CoreDNS 和 kube-dns 服务都命名为 kube-dns metadata.name 字段。这样做是为了有更大的 与依赖于传统 kube-DNS 的工作负载的互操作性 用于解析群集内部地址的服务名称。它 抽象出哪个 DNS 提供商的实现细节 在该公共终结点后面运行。kubelet 将 DNS 传递给每个 带有 --cluster-dns= 标志的容器。
DNS 名称也需要域。您可以在 库贝莱特与旗帜
--cluster-domain=<default-local-domain>
.
DNS 服务器启用端口查找、正向查找和反向 IP 地址查找(PTR 记录(。
如果 Pod 的 dnsPolicy 设置为"默认",它将继承名称 从运行 Pod 的节点进行分辨率配置。豆荚的 DNS 解析的行为应与节点相同。但请参阅已知 问题。
如果您不想要这个,或者如果您想要不同的 DNS 配置 豆荚,您可以使用
kubelet’s --resolv-conf
标志。将此标志设置为 " 以防止 Pod 继承 DNS。将其设置为有效的文件路径 为 DNS 继承指定除/etc/resolv.conf
以外的文件。
对于每个 pod,都可以设置 DNS 策略。Kubernetes 支持以下 DNS 策略:
- 默认值:为从中获取名称解析配置的 Pod 设置此值 运行特定 Pod 的节点。
-
群集优先:为与配置的 DNS 查询不匹配的任何 DNS 查询设置此值 集群域后缀,示例:
www.kubernetes.io
- ClusterFirstWithHostNet:如果 Pod 运行 主机网络
- 无:此值允许 Pod 跳过 Kubernetes 环境。应该提供所有DNS设置 使用 Pod 规范中的 dnsConfig 字段。
请注意,"默认">值与默认 DNS 策略不同。如果未指定 dnsPolicy,则 DNS 策略的默认值为"群集优先"。
以下是具有特定 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 中自定义 DNS。
查看文档中的"容器的 DNS 策略"和"容器的 DNS 配置"部分,了解如何在部署/容器配置中配置dnsPolicy
和dnsConfig
字段,从而更好地控制部署/容器的 DNS 设置。