目录
一、概念
二、查看k8s集群的coreDNS的IP地址
三、验证
一、概念
- service发现是k8s中的一个重要机制,其基本功能为:在集群内通过服务名对服务进行访问,即需要完成从服务名到ClusterIP的解析。
- k8s主要有两种service发现机制:环境变量和DNS。没有DNS服务的时候,k8s会采用环境变量的形式,但一旦有多个service,环境变量会变复杂,为解决该问题,我们使用DNS服务。
- kubeadm部署的k8s集群自带coreDNS组件,二进制部署需要自己手动部署;
k8s系统中安装了coreDNS组件后,会有一个coreDNS开头的pod资源;
[root@k8s1 ~]# kubectl get pods -o wide -A
二、查看k8s集群的coreDNS的IP地址
查看kubelet的配置文件中,可以看到集群dns的地址;
vim /var/lib/kubelet/config.yaml
查看k8s集群中DNS的svc的详细信息,可以看到,里面解析了coreDNS的地址在endpoint列表中;
[root@k8s1 k8s]# kubectl get svc -A
NAMESPACE NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
default kubernetes ClusterIP 10.200.0.1 <none> 443/TCP 3d21h
default svc01 NodePort 10.200.200.200 <none> 99:31000/TCP 8h
kube-system kube-dns ClusterIP 10.200.0.10 <none> 53/UDP,53/TCP,9153/TCP 3d21h
[root@k8s1 k8s]# kubectl describe -n kube-system svc kube-dns
Name: kube-dns
Namespace: kube-system
Labels: k8s-app=kube-dnskubernetes.io/cluster-service=truekubernetes.io/name=CoreDNS
Annotations: prometheus.io/port: 9153prometheus.io/scrape: true
Selector: k8s-app=kube-dns
Type: ClusterIP
IP Family Policy: SingleStack
IP Families: IPv4
IP: 10.200.0.10
IPs: 10.200.0.10
Port: dns 53/UDP
TargetPort: 53/UDP
Endpoints: 10.100.1.20:53,10.100.1.21:53
Port: dns-tcp 53/TCP
TargetPort: 53/TCP
Endpoints: 10.100.1.20:53,10.100.1.21:53
Port: metrics 9153/TCP
TargetPort: 9153/TCP
Endpoints: 10.100.1.20:9153,10.100.1.21:9153
Session Affinity: None
Events: <none>
三、验证
# 安装dig
[root@k8s1 k8s]# yum -y install bind-utils
[root@k8s1 k8s]# kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.200.0.1 <none> 443/TCP 5d11h
svc01 NodePort 10.200.200.200 <none> 99:31000/TCP 46h
[root@k8s1 k8s]# dig @10.200.0.10 svc01.default.svc.oslee.com +short
10.200.200.200
应用软件在连接集群内的中间件时(比如数据库),可以使用svc名代替IP地址。
===============================至此,已成艺术==============================