k8s网络配置DNS

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了k8s网络配置DNS相关的知识,希望对你有一定的参考价值。

参考技术A

Kubernetes支持Pod维度DNS策略设置,通过pod规约中dnsPolicy字段设置,最终配置落到 /etc/resolv.conf 文件中,也就说k8s最终还是通过设置Pod容器中/etc/resolv.conf 文件来做设置解析配置,跟普通的虚拟机或者实体机是一样,因为Pod容器本身就一个小的主机。

采用集群DNS,与配置的集群域后缀不匹配的任何 DNS 查询 都将转发到从节点继承的上游名称服务器。简单来说,就是使用 Kubernetes 中 kubedns 或 coredns 服务进行域名解析,如果解析不成功,才会使用宿主机的 DNS 配置进行解析。

example容器/etc/resolv.conf

options ndots:5 代表当待解析域名包含.大于等于5时就会先解析域名,只有域名解析不成功时才会继续匹配serach域或domain域

访问test名字空间下example-svc服务,可以直接通过 example-svc 访问,会与search域组合,最终组合成 example-svc.test.svc.cluster.local ,访问test1名字空间下example-svc1,通过 example-svc.test1 ,会与search域组合,最终组合成 example-svc.test1.svc.cluster.local

自定义DNS策略,设置允许 Pod 忽略 Kubernetes 环境中的 DNS 设置,Pod 会使用其 dnsConfig 字段 所提供的 DNS 设置。

用户可以在 dnsConfig 字段中指定以下属性:

创建上面的 Pod 后,容器 test 会在其 /etc/resolv.conf 文件中获取以下内容:

Pod 从运行所在的节点继承名称解析配置,即跟所在节点主机一致

对于以 hostNetwork 方式运行的 Pod,应显式设置其 DNS 策略 为"ClusterFirstWithHostNet"

k8s新版本集群DNS服务是默认采用CoreDNS组件实现,1.13版本之前是采用Kube-dns

当 DNS 配置以及其它选项不合理的时候,通过向 Pod 的 /etc/hosts 文件中添加条目, 可以在 Pod 级别覆盖对主机名的解析。你可以通过 PodSpec 的 HostAliases 字段来添加这些自定义条目.

pod打印/etc/hosts文件,多了以下内容

3.5 样本分布K-S检验 ——python实战

文章目录

import tensorflow as tf
print("TensorFlow version:", tf

以上是关于k8s网络配置DNS的主要内容,如果未能解决你的问题,请参考以下文章

kube-dns配置注意及问题排查

k8s 网络三

K8S运维知识汇总第2天2:准备服务器+安装bind9DNS服务

[k8s系列六]K8S网络补充之DNS

Linux 网络配置 修改DNS配置文件/etc/resolv.conf后,重启网络,DNS配置丢失

dns配置异常怎么处理