如何在部署中注册并在Kubernetes中查找各个pod主机名?
我需要知道Kubernetes部署中所有吊舱的所有主机名 基于此,我尝试:如何在部署中注册并在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
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
更多信息可在此处找到:
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