kubernetes 部分服务指定DNS 解析
因业务场景需要,部分服务需要指定dns进行域名解析,且不影响原有服务发现。
Pod 的 DNS 策略
DNS 策略可以逐个 Pod 来设定。目前 Kubernetes 支持以下特定 Pod 的 DNS 策略。 这些策略可以在 Pod 规约中的 dnsPolicy 字段设置:
"Default": Pod 从运行所在的节点继承名称解析配置。参考 相关讨论 获取更多信息。
"ClusterFirst": 与配置的集群域后缀不匹配的任何 DNS 查询(例如 "www.kubernetes.io") 都将转发到从节点继承的上游名称服务器。集群管理员可能配置了额外的存根域和上游 DNS 服务器。 参阅相关讨论 了解在这些场景中如何处理 DNS 查询的信息。
"ClusterFirstWithHostNet":对于以 hostNetwork 方式运行的 Pod,应显式设置其 DNS 策略 "ClusterFirstWithHostNet"。
注意:这在 Windows 上不支持。 有关详细信息,请参见下文。
"None": 此设置允许 Pod 忽略 Kubernetes 环境中的 DNS 设置。Pod 会使用其 dnsConfig 字段 所提供的 DNS 设置。 参见 Pod 的 DNS 配置节。
实例,原有服务解析方式为 ClusterFirst
apiVersion: v1
kind: Pod
metadata:
name: busybox
namespace: default
spec:
containers:
- image: busybox:1.28
command:
- sleep
- "3600"
imagePullPolicy: IfNotPresent
name: busybox
restartPolicy: Always
hostNetwork: true
dnsPolicy: ClusterFirst
更改后的服务配置
apiVersion: v1
kind: Pod
metadata:
namespace: default
name: dns-example
spec:
containers:
- name: test
image: nginx
dnsPolicy: "None"
dnsConfig:
nameservers:
- 10.169.0.100
- 10.1.1.1
- 10.1.1.2
searches:
- xxxxxxx.svc.cluster.local
- svc.cluster.local
- cluster.local
- openstacklocal
服务重启后,测试服务发现和域名解析正常。
本文来自博客园,作者:Chuan_Chen,转载请注明原文链接:https://www.cnblogs.com/wangcc7/p/16473909.html