kubernetes dns 初步理解和使用 dnsmasq dns服務器跟host機器同步 + 內部http服務的注冊和發現


1.安裝DNS后,pod就可以通過dns來解析service,從而實現通信

2.創建一個dns測試工具pod

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: tools-dns
  namespace: default
spec:
  replicas: 1
  template:
    metadata:
      labels:
        app: tools-dns
    spec:
      containers:
      - name: tools-dns
        image: tutum/dnsutils:latest
        command: ["sleep"]
        args: ["5000"]
3.進入測試容器和測試dns服務

kubectl exec -it tools-dns-5665d49688-8jrnw /bin/bash

nslookup wordpress-mysql
Server: 10.96.0.10
Address: 10.96.0.10#53

Name: wordpress-mysql.default.svc.cluster.local
Address: 10.244.2.82

 

它會監聽 apiserver 並把所有 service 和 endpoints 的結果在內存中用合適的數據結構保存起來,並對外提供 DNS 查詢服務。
  • dnsmasq: 一個輕量級的 DNS 服務軟件,可以提供 DNS 緩存功能。kubeDNS 模式下,dnsmasq 在內存中預留一塊大小(默認是 1G)的地方,保存當前最常用的 DNS 查詢記錄,如果緩存中沒有要查找的記錄,它會到 kubeDNS 中查詢,並把結果緩存起來
  • 參考:http://cizixs.com/2017/04/11/kubernetes-intro-kube-dns

###############################################################

內部http服務的注冊和發現
對於暴露到外部的微服務而言,可以通過域名、路徑、端口等來發現。但是對於內部服務,我們怎么發現呢?


k8s中每個pod中container的DNS server指向的就是k8s dns server。

這樣service之間可以通過使用固定規則的域名(比如:your_svc.default.svc.cluster.local)來訪問到另外一個service(僅需配置一個service name),

再通過service實現該服務請求負載均衡到service關聯的后端endpoint(pod container)上。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM