[英]how to use Kubernetes DNS for pods?
在 GKE 上, kube-dns在我的節點上運行,我可以看到 docker 個容器。
我確實可以按名稱訪問服務,這對於負載平衡是非常合適的解決方案的所有這些應用程序來說非常有用,但是我如何使用 DNS 來訪問各個 pod?
我知道我可以在 API 中查找特定的 pod,但我需要自己更新hosts
文件,並持續關注 pod 列表。 DNS 應該為我做那件事,那么它是如何在 pod 中使用的呢?
Kube.netes 文檔說 DNS 信息需要傳遞給 kubelet,但據我所知,我無法在 GKE 上訪問該信息,所以它只是沒有在 GKE 上以這種方式設置,還是有什么辦法可以激活它?
我的一些服務(特別是 zookeeper)知道它自己的其他節點,並嘗試通過主機名(即 pod 名稱)連接到它們並且失敗,除非我自己更新hosts
文件。 我想為此使用集成的 DNS 服務。
任何有關如何執行此操作的指導將不勝感激。
謝謝
UPDATE
根據文檔,格式現在是:
_my-port-name._my-port-protocol.my-svc.my-namespace.svc.cluster.local
請參閱此處的相關文檔: https : //kubernetes.io/docs/concepts/services-networking/dns-pod-service/#pods
原始答案:
截至這一天,這實際上是不可能的......但是Kubernetes團隊正在研究它。
請參閱此問題: https : //github.com/kubernetes/kubernetes/issues/13552
更新 :
自2015年9月起,DNS可用於Pods請參閱PR: https : //github.com/kubernetes/kubernetes/pull/13759
簡而言之:
這將以
<podIP>.<namespace>.pod.<clusterSuffix>
的形式提供pods dns<podIP>.<namespace>.pod.<clusterSuffix>
當前可以禁用,但是對於所有pod或關閉。
Kubernetes statefulset支持關聯服務名稱,並通過服務名稱定義pod dns名稱。
比如你創建一個zk守護進程和一個zk服務,那么zk daemonset的第一個pod的dns名稱是zk-0。$(namespace).svc.cluster.local
更多詳情請見: https : //kubernetes.io/docs/concepts/workloads/controllers/statefulset/
重要提示:服務必須 “ 無頭 ”才能使其正常工作,即.spec.clusterIP
必須為None
。
Kube.netes 為StatefulSet
的所有組件提供穩定的網絡 ID
考慮以下示例:
kind: Namespace
apiVersion: v1
metadata:
name: mynamespace
---
apiVersion: v1
kind: Service
metadata:
name: myservice
namespace: mynamespace
labels:
app: myapp
spec:
ports:
- port: 80
name: http
type: ClusterIP
selector:
app: myapp
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: myapp
namespace: mynamespace
spec:
serviceName: myservice
replicas: 2
selector:
matchLabels:
app: myapp
# ...
然后,您將在 k8s 集群中擁有以下可解析的 DNS 條目:
myservice.mynamespace.svc.cluster.local
用於通過myservice
對其中一個myapp
pod 進行負載均衡訪問myapp-0.myservice.mynamespace.svc.cluster.local
用於直接訪問myapp
StatetefulSet
的 Pod 0myapp-1.myservice.mynamespace.svc.cluster.local
用於直接訪問myapp
StatetefulSet
的 Pod 1文檔: https://kube.netes.io/docs/concepts/workloads/controllers/statefulset/#stable.network-id
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.