您的位置:首页 > 运维架构 > Docker

DNS 访问 Service - 每天5分钟玩转 Docker 容器技术(138)

2018-03-07 06:21 836 查看
在 Cluster 中,除了可以通过 Cluster IP 访问 Service,Kubernetes 还提供了更为方便的 DNS 访问。

kubeadm 部署时会默认安装 kube-dns 组件。



kube-dns 是一个 DNS 服务器。每当有新的 Service 被创建,kube-dns 会添加该 Service 的 DNS 记录。Cluster 中的 Pod 可以通过 
<SERVICE_NAME>.<NAMESPACE_NAME>
 访问
Service。

比如可以用 
httpd-svc.default
 访问
Service 
httpd-svc




如上所示,我们在一个临时的 busybox Pod 中验证了 DNS 的有效性。另外,由于这个 Pod 与 
httpd-svc
 同属于 
default
 namespace,可以省略 
default
 直接用 
httpd-svc
 访问
Service。



用 
nslookup
 查看 
httpd-svc
 的
DNS 的信息。



DNS 服务器是 
kube-dns.kube-system.svc.cluster.local
,这实际上就是
kube-dns 组件,它本身是部署在 
kube-system
 namespace
中的一个 Service。

httpd-svc.default.svc.cluster.local
 是 
httpd-svc
 的完整域名。

如果要访问其他 namespace 中的 Service,就必须带上 namesapce 了。
kubectl
get namespace
 查看已有的 namespace。



在 
kube-public
 中部署
Service 
httpd2-svc
,配置如下:



通过 
namespace:
kube-public
 指定资源所属的 namespace。多个资源可以在一个 YAML 文件中定义,用 
---
 分割。执行 
kubectl
apply
 创建资源:



查看 
kube-public
 的
Service:



在 busybox Pod 中访问 
httpd2-svc




因为属于不同的 namespace,必须使用 
httpd2-svc.kube-public
 才能访问到。

Kubernetes 集群内部可以通过 Cluster IP 和 DNS 访问 Service,那么集群外部如何访问呢?下一节我们将讨论这个问题。

书籍:
1.《每天5分钟玩转Docker容器技术》
https://item.jd.com/16936307278.html

2.《每天5分钟玩转OpenStack》
https://item.jd.com/12086376.html

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐