首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Kubernetes DNSPolicy配置

Kubernetes DNSPolicy配置
EN

Stack Overflow用户
提问于 2018-08-20 03:50:05
回答 2查看 4K关注 0票数 0

我有云上的Kubernetes集群和本地安全docker注册表(example.com,192.168.1.124)。当尝试从注册表( example.com /mongo)拉取镜像时,它正在解析真实example.com的IP,而不是为我的本地注册表解析。我已经在kube-system名称空间上创建了ConfigMap:

代码语言:javascript
复制
Name:         marketplace-dns
Namespace:    kube-system
Labels:       <none>
Annotations:  <none>

Data
====
configmap_dns.yaml:
----
apiVersion: v1
kind: ConfigMap
metadata:
  name: kube-dns
  namespace: kube-system
data:
  stubDomains: |
    {"example.com": ["192.168.1.124"]}
Events:  <none>

并在我的kubernetes部署yaml上设置hostNetwork: true dnsPolicy: ClusterFirst,但问题仍然存在...

EN

回答 2

Stack Overflow用户

发布于 2018-08-20 09:09:13

我猜set dnsPolicy: ClusterFirstWithHostNet可以完成这项工作。

票数 3
EN

Stack Overflow用户

发布于 2018-08-21 22:20:00

pod启动时从注册表拉取镜像时使用的DNS设置与从集群内的pod调用DNS时使用的不同。

当Kubernetes统计新pod时,它会将其调度到节点,然后名为kubelet的节点上的代理调用容器引擎(在您的情况下是Docker)来下载镜像并使用设计的配置运行它。

Docker使用系统DNS来解析注册表的地址,因为它在您的主机系统上正常工作,而不是在Kubernetes中,这就是为什么任何DNS设置都不会影响镜像下载阶段的DNS解析。Here在Github上对此进行了讨论。

如果您想要更改DNS设置并覆盖您的注册表IP以在图像下载阶段使用它,您应该以某种方式在您的主机系统中设置它。在您的配置中,您需要修改集群中所有节点的DNS设置。最简单的方法是使用/etc/hosts文件并使用您的自定义IP添加一个记录,例如192.168.1.124 example.com。你也可以修改你的本地DNS解析器,如果你有它等。

修改后,Docker on nodes将使用来自/etc/hosts的记录作为注册表,而不是全局DNS记录,因为该文件具有更高的优先级,您将能够使用您的镜像运行pod。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51921294

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档