【问题标题】:DNSJava in KubernetesKubernetes 中的 DNSJava
【发布时间】:2020-05-20 16:41:18
【问题描述】:

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

【问题讨论】:

    标签: kubernetes containers dnsjava


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      您可以在 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 策略:

      • 默认:此值是为从中获取名称解析配置的 pod 设置的 运行特定 pod 的节点。
      • ClusterFirst:为任何与配置不匹配的 DNS 查询设置此值 集群域后缀,例如:www.kubernetes.io
      • ClusterFirstWithHostNet:如果 pod 正在运行,则设置此值 主机网络
      • None:此值允许 pod 在 Kubernetes 环境。应该提供所有 DNS 设置 使用 Pod Spec 中的 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-kubernetesdns-services-pod

      【讨论】:

        【解决方案3】:

        是的 - 您在 Kubernetes 上运行的应用程序可以与在同一集群中运行的 Kubernetes DNS 进行交互/调用...如果这就是问题所在。 :-)

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

        查看文档中的 "Pod's DNS Policy""Pod's DNS Config" 部分,了解如何在 Deployment/Pod 配置中配置 dnsPolicydnsConfig 字段以允许对 Deployment/Pod 的 DNS 设置进行更多控制。

        【讨论】:

          猜你喜欢
          • 2020-12-10
          • 1970-01-01
          • 2019-11-12
          • 2019-10-31
          • 2016-10-14
          • 1970-01-01
          • 2013-02-22
          • 2020-10-31
          • 2019-08-09
          相关资源
          最近更新 更多