簡體   English   中英

如何將 Kube.netes DNS 用於 pod?

[英]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 0
  • myapp-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.

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