我在各种不同的云中研究各种不同的Kubernetes集群。我的问题是,很难发现kubernetes服务的FQDN是什么,因为不同的集群具有不同的配置。
是否可以通过kubectl
获取服务的FQDN?使用kubectl describe svc
时看不到它。
根据本文,它应该类似于my-svc.my-namespace.svc.cluster-domain.example
:
https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/
如何确定FQDN的cluster-domain.example
部分?我可以使用my-svc.my-namespace.svc
并解决它,但是如果可以的话,我想使用FQDN。
答案 0 :(得分:2)
集群域是在命名空间coredns
中名为kube-system
的configMap中定义的。此configMap是事实的来源,并由coreDNS使用。在下面的Configmap群集域中为cluster.local
kubectl get cm coredns -n kube-system -o yaml
apiVersion: v1
data:
Corefile: |
.:53 {
errors
health {
lameduck 5s
}
ready
kubernetes cluster.local in-addr.arpa ip6.arpa {
pods insecure
fallthrough in-addr.arpa ip6.arpa
ttl 30
}
prometheus :9153
forward . /etc/resolv.conf
cache 30
loop
reload
loadbalance
}
kind: ConfigMap
metadata:
creationTimestamp: "2020-04-03T14:24:44Z"
name: coredns
namespace: kube-system
resourceVersion: "177"
selfLink: /api/v1/namespaces/kube-system/configmaps/coredns
uid: d00d8e5d-d089-4d7a-a1d3-4460703c23d9
答案 1 :(得分:1)
子域是通过标志--cluster-domain
到kubelet
指定的,因此kubelet
可以将其用作容器文件/etc/resolve.conf
中的搜索域。在Pod中搜索服务名称时,FQDN通过文件/etc/resolve.conf
中的设置自动完成。
对于kube-dns
,它包含3个容器。其中一个名为kube-dns
,它的标志-domain
与群集域具有相同的值。