Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在部署中注册并在Kubernetes中查找各个pod主机名?_Kubernetes_Kubernetes Helm_Kube Dns - Fatal编程技术网

如何在部署中注册并在Kubernetes中查找各个pod主机名?

如何在部署中注册并在Kubernetes中查找各个pod主机名?,kubernetes,kubernetes-helm,kube-dns,Kubernetes,Kubernetes Helm,Kube Dns,我需要知道Kubernetes部署中所有吊舱的所有主机名 基于此,我尝试: apiVersion: v1 kind: Service metadata: name: default-subdomain spec: selector: name: busybox clusterIP: None ports: - name: foo port: 1234 targetPort: 1234 --- apiVersion: apps/v1 kind: Depl

我需要知道Kubernetes部署中所有吊舱的所有主机名

基于此,我尝试:

apiVersion: v1
kind: Service
metadata:
  name: default-subdomain
spec:
  selector:
    name: busybox
  clusterIP: None
  ports:
  - name: foo
    port: 1234
    targetPort: 1234
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: busybox1
  labels:
    name: busybox
spec:
  replicas: 2
  selector:
    matchLabels:
      name: busybox
  template:
    metadata:
      labels:
        name: busybox
    spec:
      hostname: dummy <---- effect of this line 
      subdomain: default-subdomain
      containers:
      - image: busybox
        command:
          - sleep
          - "99999"
        name: busybox
        stdin: true
        tty: true
apiVersion:v1 种类:服务 元数据: 名称:默认子域 规格: 选择器: 名称:busybox 集群:无 端口: -姓名:富 港口:1234 目标港:1234 --- apiVersion:apps/v1 种类:部署 元数据: 名称:busybox1 标签: 名称:busybox 规格: 副本:2份 选择器: 火柴标签: 名称:busybox 模板: 元数据: 标签: 名称:busybox 规格:
主机名:哑< P>如果你想这样做,考虑使用一个状态集,你可以像这样去POD:

podname-{replica index}.{serviceName}.default.svc.cluster.local


这里有一个示例,CoreDNS仅为服务创建一个和SRV记录。正如您在阅读以下内容后所预期的:

pods unsecure
选项用于向后兼容kube dns。您可以使用
pods verified
选项,该选项仅当同一命名空间中存在具有匹配IP的pod时,才会返回A记录。如果不使用pod记录,则可以使用
pods disabled
选项

有一个例外:如果您创建了一个(当您在服务规范中指定
clustrep:None
时)

因此,以下是基于您的YAML的无头服务示例:

NAME                TYPE           CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE
default-subdomain   ClusterIP      None            <none>        1234/TCP       50s
为了解析SRV记录,还为两个无头服务端点创建了一个记录

如果未为POD指定指定
主机名
子域
,将创建一条记录,其中IP地址作为主机名:

10-244-1-22.default-subdomain.default.svc.cluster.local. 5 IN A 10.244.1.22
10-244-1-23.default-subdomain.default.svc.cluster.local. 5 IN A 10.244.1.23
但如果您同时指定了这两项,您将获得以下记录:

dummy.default-subdomain.default.svc.cluster.local. 5 IN A 10.244.1.22
dummy.default-subdomain.default.svc.cluster.local. 5 IN A 10.244.1.23
在这种情况下,SRV记录将如下所示(是的,仍然有两个,它们是相同的):

CoreDNS服务器以“随机”方式解析此类记录(IP地址正在更改):

为了调试它,我使用了CoreDNS支持的区域传输特性。要启用它,您应该将
传输到*
行添加到corednsConfigMap。为了安全起见,您可以将*替换为特定IP。例如:

$ kubectl get cm coredns -n kube-system -o yaml
apiVersion: v1
data:
 Corefile: |
   .:53 {
       errors
       health
       kubernetes cluster.local in-addr.arpa ip6.arpa {
          transfer to *   <---- enable zone transfer to anyone(don't use in production) 
          pods insecure
          upstream
          fallthrough in-addr.arpa ip6.arpa
       }
       prometheus :9153
       forward . /etc/resolv.conf
       cache 30
       loop
       reload
       loadbalance
   }
kind: ConfigMap
metadata:
 creationTimestamp: "2019-05-07T15:44:02Z"
 name: coredns
 namespace: kube-system
 resourceVersion: "9166"
 selfLink: /api/v1/namespaces/kube-system/configmaps/coredns
 uid: f0646569-70de-11e9-9af0-42010a9c0015 
更多信息可在此处找到:


看起来它还不受支持是的,我知道这一点,但不想引起有状态集的开销,尤其是在上下缩放时。@Nsen,您找到了一种方法可以在kube dns中拥有每个pod的名称吗?我也需要它。@Nsen,与部署一样,StatefulSets支持HPA的开销是多少?仅对您的示例中的最新Kubernetes进行了一些小的更改,似乎返回的SRV记录只有一个附加了2个部分。这是一个很好的答案;感谢您提供所有这些背景!确实帮助我回答了一些关于CoreDNS的问题,这些问题在文档中很难找到:)
dummy.default-subdomain.default.svc.cluster.local. 5 IN A 10.244.1.22
dummy.default-subdomain.default.svc.cluster.local. 5 IN A 10.244.1.23
_foo._tcp.default-subdomain.default.svc.cluster.local. 5 IN SRV 0 50 1234 dummy.default-subdomain.default.svc.cluster.local.
_foo._tcp.default-subdomain.default.svc.cluster.local. 5 IN SRV 0 50 1234 dummy.default-subdomain.default.svc.cluster.local.
root@ubuntu:/# ping dummy.default-subdomain.default.svc.cluster.local -c 1 | grep PING
PING dummy.default-subdomain.default.svc.cluster.local (10.244.1.27) 56(84) bytes of data.
root@ubuntu:/# ping dummy.default-subdomain.default.svc.cluster.local -c 1 | grep PING
PING dummy.default-subdomain.default.svc.cluster.local (10.244.1.27) 56(84) bytes of data.
root@ubuntu:/# ping dummy.default-subdomain.default.svc.cluster.local -c 1 | grep PING
PING dummy.default-subdomain.default.svc.cluster.local (10.244.1.26) 56(84) bytes of data.
root@ubuntu:/# ping dummy.default-subdomain.default.svc.cluster.local -c 1 | grep PING
PING dummy.default-subdomain.default.svc.cluster.local (10.244.1.27) 56(84) bytes of data.
root@ubuntu:/# ping dummy.default-subdomain.default.svc.cluster.local -c 1 | grep PING
PING dummy.default-subdomain.default.svc.cluster.local (10.244.1.26) 56(84) bytes of data.
root@ubuntu:/# ping dummy.default-subdomain.default.svc.cluster.local -c 1 | grep PING
PING dummy.default-subdomain.default.svc.cluster.local (10.244.1.26) 56(84) bytes of data.
root@ubuntu:/# ping dummy.default-subdomain.default.svc.cluster.local -c 1 | grep PING
PING dummy.default-subdomain.default.svc.cluster.local (10.244.1.27) 56(84) bytes of data.
$ kubectl get cm coredns -n kube-system -o yaml
apiVersion: v1
data:
 Corefile: |
   .:53 {
       errors
       health
       kubernetes cluster.local in-addr.arpa ip6.arpa {
          transfer to *   <---- enable zone transfer to anyone(don't use in production) 
          pods insecure
          upstream
          fallthrough in-addr.arpa ip6.arpa
       }
       prometheus :9153
       forward . /etc/resolv.conf
       cache 30
       loop
       reload
       loadbalance
   }
kind: ConfigMap
metadata:
 creationTimestamp: "2019-05-07T15:44:02Z"
 name: coredns
 namespace: kube-system
 resourceVersion: "9166"
 selfLink: /api/v1/namespaces/kube-system/configmaps/coredns
 uid: f0646569-70de-11e9-9af0-42010a9c0015 
dig -t AXFR cluster.local any