日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
Kubernetes配置外部DNS的方式

問題起源

網(wǎng)站建設(shè)哪家好,找成都創(chuàng)新互聯(lián)公司!專注于網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、成都小程序開發(fā)、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了和碩免費(fèi)建站歡迎大家使用!

在通過容器化的道路上,很多實(shí)踐都是運(yùn)行在一個(gè)hybrid的環(huán)境里,也就是有部分程序在容器中,也有部分在VM或者物理機(jī)中,這個(gè)也是可以理解的,畢竟技術(shù)不能總放在一個(gè)籃子里,不然運(yùn)維的人要崩潰的。在這樣的環(huán)境下,很多企業(yè)原有的應(yīng)用都是通過DNS訪問的,那么容器里的應(yīng)用是如何訪問到這些應(yīng)用的呢?在阿里云的Kubernetes里默認(rèn)配置使用了KubeDNS(在后面的版本將被CoreDNS代替,敬請期待),這個(gè)KubeDNS的上行DNS服務(wù)器,直接使用了阿里云的DNS服務(wù),從而在默認(rèn)情況下無法通過DNS的方式訪問到企業(yè)的這些服務(wù)。本文基于阿里云的Kuberntes容器服務(wù)做實(shí)踐。

解決之道

阿里云的Kubernetes始終保持著對于Kuberbetes的一致性以及可移植性,所以可以直接參考Kubernetes的官方文檔:https://kubernetes.io/docs/tasks/administer-cluster/dns-custom-nameservers/ 主要思路是通過添加KubeDNS的上游DNS服務(wù)器來解決。這里具體演示如何在阿里云的Kubernetes設(shè)置上游DNS服務(wù)。

具體實(shí)踐

Kubedns的組件基本介紹:

KubeDNS是Kubernetes的add-on組件,主要提供容器的DNS服務(wù),它包含了一下組件在一個(gè)Pod中:

  • kubedns: 監(jiān)聽k8s api server,在內(nèi)存中維護(hù)DNS的記錄同時(shí)響應(yīng)DNS的請求
  • dnsmasq: 增加DNS緩存來提高性能,查錯(cuò)主要通過這個(gè)組件來日志來判斷。
  • sidecar: 提供了一個(gè)統(tǒng)一的健康檢查接口來執(zhí)行對其它上面兩個(gè)組件的健康檢查

Kubelet的相關(guān)配置

DNS和Kubelete相關(guān)的配置有兩個(gè):

  • --cluster-dns= 指定容器使用的dns,因?yàn)槭褂昧薻ubeDNS,這里配置的是kuebDNS的clusterip
  • --cluster-domain= k8s內(nèi)部使用的域名后綴。默認(rèn)值是:cluster.local。目前不建議更改這個(gè)值。

配置上游DNS來支持企業(yè)內(nèi)服務(wù)DNS服務(wù)器

通過kubectl describe kube-dns -n kube-system可以看到,kubedns的啟動(dòng)參數(shù)需要使用--config-dir=/kube-dns-config來讀取配置文件,而這個(gè)配置是通過一個(gè)名為kube-dns的configmap獲取的,所以我們只需要配置這個(gè)configmap就好

 
 
 
 
  1. kubectl create configmap/kube-dns -n kube-system  
  2. kubectl edit configmap/kube-dns -n kube-system 

然后在data下添加對應(yīng)的內(nèi)容,例如:

 
 
 
 
  1. upstreamNameservers: '["8.8.8.8", "100.100.2.136"]' 

這里"8.8.8.8"和 "100.100.2.136"就是上游對應(yīng)的DNS服務(wù)器了。

這里需要注意的是,變更了configmap,容器是無法感知的,這個(gè)也是我對configmap吐槽最多的地方。要使這個(gè)配置生效,只能去delete對應(yīng)kube-dns的容器,讓其重啟來獲取對應(yīng)新的配置:

kubectl delete pod/ -n kube-system

這樣我們就配置好了對應(yīng)的上游服務(wù)器DNS了,容器內(nèi)的應(yīng)用就可以通過域名的方法來訪問集群外的其它企業(yè)應(yīng)用了。

填坑小記:

  • 在阿里云中注意注意安全組的設(shè)置,因?yàn)閗ubeDNS是標(biāo)準(zhǔn)的DNS接口,所以主機(jī)間需要開放UDP 53端口,如果你發(fā)現(xiàn)可以 ping通ip,但是不能ping通域名,很可能就是這個(gè)問題了
  • 需要查看kubedns是否已經(jīng)激活對應(yīng)的上游dns,可以用如下命令查日志:kubectl logs -c dnsmasq -n kube-system 如圖:

從而判斷是否配置了上游的DNS服務(wù)器


網(wǎng)站標(biāo)題:Kubernetes配置外部DNS的方式
本文鏈接:http://www.dlmjj.cn/article/dhidddg.html