×

Kubernetes高可用集群部署 - 6. DNS配置

96
殷临风
2018.01.16 18:58* 字数 519

当我们配置好集群之后, 理论上我们的服务可以在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)

Kubernetes
Web note ad 1