參考https://www.jianshu.com/p/bbb673e79c3e
大致描述一下遇到的問題,在上文中,我起了一個mysql容器。并且想在另一個容器中通過域名來訪問mysql的3306端口,嘗試ping包,發(fā)現(xiàn)dns解析域名是成功了,但是ping不通。
而我在上一篇文章中,訪問mysql用的ip是10.233.104.69,在mysql容器查出來的也是這個ip。所以一開始懷疑是域名沒寫正確。
接著查到10.233.46.235是server的ip,10.233.104.69是pod的ip,繼續(xù)懷疑是域名寫的不對,想方設法去找pod的域名,但網(wǎng)上搜不到這個概念。
域名這塊查了半天沒有什么進展,所以又回頭看了一下service的基本概念,發(fā)現(xiàn)其實它的ip就是對外暴露的vip,所以猜測這個ip不是用來ping的,而是用來直接訪問它的端口。嘗試用連接這個ip的3306端口,果然可行。
另外順便貼一下通過busybox來檢查域名
# cat busybox.yaml apiversion: v1 kind: pod metadata: name: busybox namespace: default spec: containers: – name: busybox image: registry.cn-hangzhou.aliyuncs.com/yanfulei/busybox:latest command: – sleep – "3600" imagepullpolicy: ifnotpresent restartpolicy: always # kubectl create -f busybox.yaml pod "busybox" created [root@master0 ~]# kubectl exec busybox nslookup kubernetes server: 10.233.0.3 address 1: 10.233.0.3 kube-dns.kube-system.svc.cluster.local name: kubernetes address 1: 10.233.0.1 kubernetes.default.svc.cluster.local # kubectl exec busybox nslookup mysql server: 10.233.0.3 address 1: 10.233.0.3 kube-dns.kube-system.svc.cluster.local name: mysql address 1: 10.233.46.235 mysql.default.svc.cluster.local