ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

实测:Kubernetes 1.6 中的混合 DNS

2021-05-28 10:58:23  阅读:195  来源: 互联网

标签:1.6 Kubernetes 8.8 dnsmasq DNS hosts Pod


在之前的文章中提到过,Kubernetes 1.6 新增的混合 DNS 功能。这一功能不大,但是在企业私有云环境下有着非常重要的衔接作用,能够有效的将 Kubernetes 内的应用和集群外甚至互联网上的的 Consual 或者类似系统管理的服务连接起来,形成更好的协同效果。

上篇文章主要侧重点是概念和一些 YAML 例子,本文则会从操作出发,用一个例子从头到尾的逐步操作这一功能的具体操作。

DNS Server

我们使用一个 Ubuntu Server 运行 dnsmasq 来担任 Kubernetes 集群外的 DNS 服务器角色,只为了满足测试需要的话,就不需要太复杂的配置了。

安装

具体安装步骤如下:

#!/bin/sh# 安装 dnsmasqapt install dnsmasq# 停止自动启动的 dnsmasq 服务systemctl stop dnsmasq# 生成一个 Host 文件并写入一条记录echo " 114.114.114.114 server.out-of.kubernetes" > /tmp/hosts# 显示 IPifconfig# 启动 DNS 服务# -d 用 debug 模式启动,在前台运行# -q 输出查询记录# -h 不使用 /etc/hosts# -R 不使用 /etc/resolve.conf# -H 使用刚才生成的文件作为 dns 记录dnsmasq -q -d -h -q -R -H /tmp/hosts

这样,我们就启动了一个 DNS 服务器,并且可以直观的看到其工作状况如下:

dnsmasq: started, version 2.76 cachesize 150
dnsmasq: compile time options: IPv6 GNU-getopt DBus i18n IDN DHCP DHCPv6 no-Lua TFTP conntrack ipset auth DNSSEC lo
op-detect inotify
dnsmasq: warning: no upstream servers configured
dnsmasq: bad address at /tmp/hosts line 1
dnsmasq: read /tmp/hosts - 0 addresses

Kubernetes 配置

前文说过,我们需要用一个 Configmap 对象来让 Kubernetes 应用新的 DNS 解析配置,这里我们简单的新建一个存根域,就是上文提到的out-of.kubernetes域名,让其使用我们前面安装的 DNS 服务器进行解析,其他域名则使用8.8.8.88.8.4.4这一公共 DNS 解析。配置情况如下:

apiVersion: v1
kind: ConfigMap
metadata:
  name: kube-dns
  namespace: kube-system
data:
  stubDomains: |
    {"out-of.kubernetes": ["10.140.0.5"]}
  upstreamNameservers: |
    ["8.8.8.8", "8.8.4.4"]

利用kubectl apply -f命令使之生效。

注意:系统可能缺省带有这一 configmap,因此需要用 apply 进行操作,建议使用 kubectl get configmap kube-dns -o yaml --namespace kube-system 进行复查。

测试 Pod

这里使用一个 Alpine Linux 的镜像作为测试工具:

apiVersion: v1
kind: Pod
metadata:
  name: tester
spec:
  containers:
  - name: alpine
    image: alpine
    imagePullPolicy: IfNotPresent
    command: ["sleep"]
    args: ["3600"]

测试

测试 Pod 运行之后,可以使用kubectl exec -it tester sh命令进入 Pod开始测试。

  • 在 Pod 的 Shell 中我们可以尝试执行 ping server.out-of.kubernetes,会看到返回了我们写入在 Hosts 中的地址,在 DNS 服务器端,也会看到相关的查询记录。

  • 如果 ping 其他的主机名,则会返回正常的结果。


标签:1.6,Kubernetes,8.8,dnsmasq,DNS,hosts,Pod
来源: https://blog.51cto.com/u_15127693/2825145

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有