如何在Pod中使用Kubernetes DNS?

yqyhoc1h  于 2023-04-05  发布在  Kubernetes
关注(0)|答案(3)|浏览(164)

在GKE上,kube-dns在我的节点上运行,我可以看到docker容器。
我确实可以通过名称访问服务,这对于负载平衡是完美合适的解决方案的所有这些应用程序都很好,但是 * 我如何使用DNS访问单个Pod?*
我知道我可以在API中查找特定的pod,但我需要自己更新hosts文件,并继续观察pod列表。DNS应该为我做这件事,那么它在pod中的使用意味着什么?
Kubernetes文档说DNS信息需要传递到kubelet,但我在GKE上无法访问,所以它只是没有在GKE上设置,或者有什么事情可以激活它?
我的一些服务(特别是zookeeper)自己知道其他节点,并试图通过主机名(即pod名称)连接到它们,除非我自己更新hosts文件,否则会失败。我想使用集成的DNS服务。
如能就如何做到这一点提供指导,将不胜感激。
谢谢

3mpgtkmj

3mpgtkmj1#

更新

根据文档,现在的格式是:
_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

更新

DNS自2015年9月起可用于Pod参见PR:https://github.com/kubernetes/kubernetes/pull/13759
简而言之:
这将以<podIP>.<namespace>.pod.<clusterSuffix>的形式给予pod dns当前可以禁用,但对于所有pod都是打开或关闭。

olmpazwi

olmpazwi2#

Kubernetes statefulset支持关联一个服务名,并通过服务名定义pod dns名称。
例如创建一个zk守护进程和一个zk服务,那么zk守护进程的第一个pod的dns名称是zk-0.$(servicename).$(namespace).svc.cluster.local
更多详情请参见:https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/

**重要:**服务 * 必须 * 是“无头”的,也就是说它的.spec.clusterIP * 必须 * 是None

lokaqttq

lokaqttq3#

Kubernetes为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用于直接访问myappStatetefulSet的Pod 0
  • myapp-1.myservice.mynamespace.svc.cluster.local用于直接访问myappStatetefulSet的Pod 1

文件:https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#stable-network-id

相关问题