簡體   English   中英

Kubernetes DNSPolicy配置

[英]Kubernetes DNSPolicy config

我在雲上有Kubernetes集群,並且在本地安全docker登錄(example.com,192.168.1.124)。 嘗試從注冊表(example.com/mongo)中提取圖片時,它解析的是真實example.com的IP,而不是我的本地注冊表。 我在kube系統名稱空間上創建了ConfigMap:

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 ,但是問題仍然存在。

我想設置dnsPolicy: ClusterFirstWithHostNet將完成這項工作。

從Pod Start上的注冊表中提取圖像使用的DNS設置與從群集內的Pod中調用DNS時使用的DNS設置不同。

當Kubernetes統計新Pod時,它會將其調度到節點,然后名為kubelet的節點上的代理kubelet調用容器引擎(在您的情況下為Docker)以下載映像並以設計的配置運行它。

Docker使用系統DNS來解析注冊表的地址,因為它可以在您的主機系統上運行,而不是在Kubernetes中運行,這就是為什么任何DNS設置都不會影響映像下載階段的DNS解析的原因。 是在Github上對此的討論。

如果要更改DNS設置並覆蓋注冊表IP以便在映像下載階段使用它,則應以某種方式在主機系統中進行設置。 在您的配置中,您需要修改群集中所有節點上的DNS設置。 最簡單的方法是使用/etc/hosts文件,並使用您的自定義IP(例如192.168.1.124 example.com添加一條記錄。 您也可以修改本地DNS解析器(如果有)等。

進行此修改后,節點上的Docker將使用/etc/hosts的記錄作為注冊表而不是全局DNS記錄,因為該文件具有更高的優先級,並且您將能夠使用映像運行pod。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM