Kubernetes 中的 DNSJava

DNSJava in Kubernetes

Dnsjava 是 Java 中 DNS 的一个实现。 我们围绕它构建了一些应用程序逻辑.. 只是想检查 Kubernetes 是否会在应用程序级别支持 DNS 接口

不完全确定你的意思,但 Kubernetes 不关心你在上面 运行 是什么。你的工作量是你的问题:)

您可以在 Kubernetes 中配置您的 DNS Pod 并自定义 DNS 解析过程。

DNS 是使用插件管理器集群插件自动启动的内置 Kubernetes 服务。

CoreDNS 是最流行的 DNS 服务器,取代了 kube-dns。

The CoreDNS Deployment is exposed as a Kubernetes Service with a static IP. Both the CoreDNS and kube-dns Service are named kube-dns in the metadata.name field. This is done so that there is greater interoperability with workloads that relied on the legacy kube-dns Service name to resolve addresses internal to the cluster. It abstracts away the implementation detail of which DNS provider is running behind that common endpoint. The kubelet passes DNS to each container with the --cluster-dns= flag.

DNS names also need domains. You configure the local domain in the kubelet with the flag --cluster-domain=<default-local-domain>.

DNS服务器启用端口查找、正向查找和反向IP地址查找(PTR记录)。

If a Pod’s dnsPolicy is set to “default”, it inherits the name resolution configuration from the node that the Pod runs on. The Pod’s DNS resolution should behave the same as the node. But see Known issues.

If you don’t want this, or if you want a different DNS config for pods, you can use the kubelet’s --resolv-conf flag. Set this flag to “” to prevent Pods from inheriting DNS. Set it to a valid file path to specify a file other than /etc/resolv.conf for DNS inheritance.

每个 pod 都可以设置 DNS 策略。 Kubernetes 支持以下 DNS 策略:

  • Default:这个值是为 pods 设置的,它从中获取名称解析配置 特定 pod 位于 运行 上的节点。
  • ClusterFirst:这个值是为任何与配置不匹配的 DNS 查询设置的 集群域后缀,示例:www.kubernetes.io
  • ClusterFirstWithHostNet:如果 pods 是 运行,则设置此值 主机网络
  • None:这个值让pods跳过DNS设置 Kubernetes 环境。应该提供所有 DNS 设置 使用 Pod 规范中的 dnsConfig 字段。

请注意,“默认” 值与默认 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 上的应用程序 运行 可以与 with/call 接口 Kubernetes DNS 即 运行 在同一个集群中...如果这就是问题所在. :-)

如果您有适当的访问权限,您可以 customize the DNS 在 Kubernetes 中。

查看文档中的 "Pod's DNS Policy" and "Pod's DNS Config" 部分,了解如何在 Deployment/Pod 配置中配置 dnsPolicydnsConfig 字段以更好地控制 DNS 设置Deployment/Pod.