DNS 訪問 Service - 每天5分鍾玩轉 Docker 容器技術(138)


在 Cluster 中,除了可以通過 Cluster IP 訪問 Service,Kubernetes 還提供了更為方便的 DNS 訪問。

kubeadm 部署時會默認安裝 kube-dns 組件。

kube-dns 是一個 DNS 服務器。每當有新的 Service 被創建,kube-dns 會添加該 Service 的 DNS 記錄。Cluster 中的 Pod 可以通過 <SERVICE_NAME>.<NAMESPACE_NAME> 訪問 Service。

比如可以用 httpd-svc.default 訪問 Service httpd-svc

如上所示,我們在一個臨時的 busybox Pod 中驗證了 DNS 的有效性。另外,由於這個 Pod 與 httpd-svc 同屬於 default namespace,可以省略 default 直接用 httpd-svc 訪問 Service。

用 nslookup 查看 httpd-svc 的 DNS 的信息。

DNS 服務器是 kube-dns.kube-system.svc.cluster.local,這實際上就是 kube-dns 組件,它本身是部署在 kube-system namespace 中的一個 Service。

httpd-svc.default.svc.cluster.local 是 httpd-svc 的完整域名。

如果要訪問其他 namespace 中的 Service,就必須帶上 namesapce 了。kubectl get namespace 查看已有的 namespace。

在 kube-public 中部署 Service httpd2-svc,配置如下:

通過 namespace: kube-public 指定資源所屬的 namespace。多個資源可以在一個 YAML 文件中定義,用 --- 分割。執行 kubectl apply 創建資源:

查看 kube-public 的 Service:

在 busybox Pod 中訪問 httpd2-svc

因為屬於不同的 namespace,必須使用 httpd2-svc.kube-public 才能訪問到。

Kubernetes 集群內部可以通過 Cluster IP 和 DNS 訪問 Service,那么集群外部如何訪問呢?下一節我們將討論這個問題。

書籍:
1.《每天5分鍾玩轉Docker容器技術》
https://item.jd.com/16936307278.html

2.《每天5分鍾玩轉OpenStack》
https://item.jd.com/12086376.html


免責聲明!

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



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