当我们配置好集群之后, 理论上我们的服务可以在k8s上跑了, 但是有一点, 如果我们的服务需要访问外部网络, 比如访问微信相关的接口, 就会出现域名无法解析的问题, 这个时候, 我们就需要配置DNS了.
dns配置
我们主要使用下面4个配置文件(去掉.base
后缀)
kubedns-cm.yaml
kubedns-sa.yaml
kubedns-svc.yaml
kubedns-controller.yaml
可以直接使用我修改好的配置文件, 其中的镜像地址全部替换成国内的阿里云docker
镜像
kubectl create -f *.yaml
如果创建成功应该出现

之后可以进入镜像内部
ping www.baidu.com
, 如果正常, 则DNS配置成功
服务发现
如果成功配置了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
是组名
高可用部署系列
Kubernetes高可用集群部署 - 1. 生成证书
Kubernetes高可用集群部署 - 2. ETCD集群
Kubernetes高可用集群部署 - 3. kubectl工具配置
Kubernetes高可用集群部署 - 4. master集群
Kubernetes高可用集群部署 - 5. node集群
-> Kubernetes高可用集群部署 - 6. DNS配置
相关服务
Kubernetes配置secret拉取私仓镜像
Kubernetes目录挂载
Kubernetes Ingress使用
Kubernetes限制pod的cpu和内存
Helm部署Kubernetes应用
Kubernetes监控(Heapster)
Kubernetes监控(coreos/prometheus-operator)
网友评论