curl https://saas-pay-gray.XXX.cn/ping 外網網絡
curl https://vpc-saas-pay-gray.XXX.cn/ping slb,即阿里雲內網 1/3包是通的 當時設計slb(vpc)的時候考慮到具體功能,除了平常使用使用內網拉取容器鏡像的功能以外,是否還有其餘?架構
因爲公司架構使用了k8s集羣,k8s內部有作了一套完整的解析;即
不通過slb,直接經過k8s集羣內DNS解析調用服務dom
servicename
curl saas-pay-gray/ping 相同的命名空間curl
kuaizimu-h5-gray -> saas-pay
servicename.namespace
curl saas-pay-gray.saas/ping 不一樣的命名空間之間的服務調用ide
curl http://saas-pay-gray.saas/ping 實驗證實:在容器內直接獲取k8s集羣內的另一個容器服務是能夠的阿里雲
curl https://saas-pay-gray.saas/ping 這裏不能夠訪問的緣由是內部解析不經過證書解析url
https 對應 一個域名spa
楊貴明那裏調用服務是經過域名" http://saas-pay-prod.saas.svc.cluster.local "調用服務的,其原理和調用servicename同樣。
servicename的cluster.local在 /etc/systemd/system/kubelet.service.d/10-kubeadm.conf 文件中定義。
能夠經過命令查看:
cat /etc/systemd/system/kubelet.service.d/10-kubeadm.conf |grep cluster-domain |awk '{print $NF}'設計
線下是否能夠同樣的方法調用servicename呢?答案是能夠的
saas-pay-test.saas.svc.cluster.localcode
剛剛和阿里這兒確認了一下:
之後k8s集羣內容器之間的服務調用,域名統一使用 "項目名.命名空間.svc.cluster.local" ;這個僅在k8s集羣內解析。
外網之間調用k8s服務,直接使用公網的域名便可
注:
k8s集羣內的容器之間的服務調用 不能走ECS的vpc網絡,這種狀況集羣會把slb的ip當着是service的ip就進行轉發
即vpc-公網域名;