当我们配置好集群之后, 理论上我们的服务可以在k8s上跑了, 但是有一点, 如果我们的服务需要访问外部网络, 比如访问微信相关的接口, 就会出现域名无法解析的问题, 这个时候, 我们就需要配置DNS了.
dns配置
我们主要使用下面4个配置文件(去掉.base
后缀)
kubedns-cm.yaml
kubedns-sa.yaml
kubedns-svc.yaml
kubedns-controller.yaml
可以直接使用我修改好的配置文件, 其中的镜像地址全部替换成国内的阿里云docker
镜像
kubectl create -f *.yaml
如果创建成功应该出现
服务发现
如果成功配置了dns
, k8s
内部的服务是可以通过服务名相互调用的. 比如配置了一个服务名为my-nginx
, 那么k8s内部其他项目调用它, 是可以直接将host
写成 my-nginx
此时要注意, 如果要检测是否成功, 不能使用
ping
, 因为pod是虚拟IP
. 可以在容器内部使用curl
去访问my-nginx
服务
跨namespace
调用服务
很多时候, 我们需要在k8s上部署很多服务, 根据服务的不同, 自然就会对他们进行分组, 此时会用到namespace
. 但是跨组进行调用会发现失败, 这个时候我们需要带上组名
, 也就是namespace
curl my-nginx.dev
其中
my-nginx
是服务名
dev
是组名