为K8s的coredns配置上游DNS服务器

  • 一、背景描述
  • 二、如何修改coredns达到目的
  • 三、修改coredns 解析指定域名走指定dns
    • ①、get coredns configmap
    • ②、修改coredns configmap
    • ③、查询现有coredns pod并逐个重启
    • ④、验证解析是否正确

一、背景描述

有一个项目需要部署到客户内网,并通过nat映射实现外网访问!
项目中有多个服务之间调用是走的外网域名,项目采用k8s集群容器部署,客户的网络情况导致服务之间通过外网域名互调时总是 connection time out!
通过在容器中解析服务域名是没问题,然而telnet 域名对应ip + 端口超时。
现在想到的解决办法就是,内网做一个dns服务器,将服务之间调用的域名通过内网dns做一个解析,然后将k8s集群机器dns指向内网dns。这样做到的目的就是内网调用走内网ip!

按上面修改之后k8s宿主机是走内网了,然而容器依然还是走的外网ip,再进容器解析域名发现依然是解析到外网ip上!

通过度娘得知:
在Kubelet配置中通过使用–cluster-dns=10.10.10.2参数指定的coredns地址会被写入容器的/etc/resolv.conf配置中。
并且在kublet配置中通过resolv-conf参数可以指定一个主机上的DNS配置文件,但在默认DNS策略下主机上DNS配置文件中仅仅只有search部分会被加到容器内,nameserver不会被添加到容器中,要想添加自定义的上游DNS可以通过修改coredns的configmap配置来实现。

二、如何修改coredns达到目的

①、直接修改coredns上游dns服务器。
②、修改coredns添加 hosts 解析
③、根据域名指定上游dns服务器

本文通过第三种方式,指定容器内解析域名 example.com 域名,及改域名的三级、四级域名时指向外部dns服务器。

三、修改coredns 解析指定域名走指定dns

①、get coredns configmap

kubectl -n kube-system edit configmap coredns

②、修改coredns configmap

通过命令:kubectl edit configmap coredns -n kube-system
在coredns configmap 中添加这么一段配置

    example.com:53 {errors cache 30forward . 172.16.1.1reload}

example.com 为需要解析的域名
172.16.1.1 为外部dns服务器

以下为完整configmap文件

apiVersion: v1
kind: ConfigMap
metadata:annotations:labels:eks.amazonaws.com/component: corednsk8s-app: kube-dnsname: corednsnamespace: kube-system
data:Corefile: |.:53 {errorshealthkubernetes cluster.local in-addr.arpa ip6.arpa {pods insecureupstream 172.16.0.1fallthrough in-addr.arpa ip6.arpa}prometheus :9153proxy . 172.16.0.1cache 30loopreloadloadbalance}example.com:53 {errors cache 30forward . 172.16.1.1reload}consul.local:53 {errorscache 30proxy . 10.150.0.1}

③、查询现有coredns pod并逐个重启

kubectl get pod -n kube-system |grep coredns
kubectl delete pod core-dns-xxxx -n kube-system

④、验证解析是否正确

验证方式一:

kubectl run busybox --restart=Never --image=busybox -- sleep 3600
kubectl exec busybox -- nslookup example.com

验证方式二
以下复制别人的文章,host 解析的域名适当变更测试即可。

[root@k8s-master-1 coredns]#  kubectl run -it --rm --restart=Never --image=infoblox/dnstools:latest dnstools
If you don't see a command prompt, try pressing enter.
dnstools# host 0DJ01YUR.sobeydemo.com
0DJ01YUR.sobeydemo.com has address 100.64.148.116
0DJ01YUR.sobeydemo.com has IPv6 address 2002:6440:9474::6440:9474
dnstools# host minio.chinamcloud.com
minio.chinamcloud.com has address 100.64.139.66
Host minio.chinamcloud.com not found: 3(NXDOMAIN)
Host minio.chinamcloud.com not found: 3(NXDOMAIN)
dnstools#

参考:http://www.ksky.net/archives/67
参考:https://www.cnblogs.com/lixinliang/p/14519011.html
参考:https://blog.csdn.net/bingfan5073/article/details/100958025
参考:https://www.cnblogs.com/keithtt/p/13204497.html
参考:https://blog.51cto.com/foxhound/2483880

【为K8s的coredns配置上游DNS服务器】相关推荐

  1. dns服务器响应配置,没有配置的dns服务器响应

    没有配置的dns服务器响应 内容精选 换一换 本节介绍如何配置WAF的对外协议与源站协议.根据您的业务场景的不同,WAF提供灵活的协议类型配置.假设您网站为www.example.com,WAF可配置 ...

  2. Mac配置本地DNS服务器

    目录 1.安装Homebrew 1.1官网 1.2安装命令 1.3可能出现的错误 1.3.1解决方法1 1.3.2解决方法2 1.4常用命令 2.安装Dnsmasq 2.1安装 2.2启动 2.3重启 ...

  3. Linux系统(Centos 7)配置主DNS 服务器实例

    配置主DNS 服务器实例    下面将结合具体实例介绍缓存DNS.主 DNS.辅助DNS等各种 DNS 服务器的配置. 1.案例环境及需求    某校园网要架设一台DNS 服务器负责long.com  ...

  4. CentOS7 linux 配置辅助DNS服务器

    实验环境: 物理机操作系统:windows 10 VMware版本:VMware Workstation16 镜像版本:CentOS-7-x86_64-DVD-1611 实验需求:   授权DNS服务 ...

  5. CentOS7.6域名服务器配置(一)使用Bind配置主从DNS服务器

    CentOS7.6 使用Bind配置主从DNS服务器 一.环境信息说明 1.1 实现场景 配置实现在一个服务器上配置多域名解析(多区域文件) 配置域名反向解析(这个如果不配置邮件服务器,则不是很重要, ...

  6. dns服务器响应名称,在没有配置的 DNS 服务器响应之后,名称xxxx的名称解析超时。...

    日志名称:          System 来源:            Microsoft-Windows-DNS-Client 日期:            2016/8/2 23:19:51 事 ...

  7. 简述使用BIND配置本地DNS服务器(centos 6.8)

    DNS简介: DNS,Domain Name System,域名系统,用于Internet上域名和IP地址的相互映射,使得用户不用记忆主机IP地址,仅通过与之对应的域名就可以访问该主机. 关于BIND ...

  8. windows服务器增加dns,windows server 2008配置之DNS服务器

    一.设置固定IP地址和DNS 1.点击右下角网络图标,选择网络和共享中心. 2.选择右边的管理网络连接 3.右击本地连接,选择属性 4.选择Internet协议版本4(TCP/IPv4),点属性 5. ...

  9. linux dns 泛域名,linux配置从dns服务器泛域名解析负载均衡【实验】

    实验一 实验名称:搭建从dns服务器 步骤1:基本环境 两台dns服务器,一主一从,一台客户机做测试同一网段能够ping通 步骤2:安装软件包 由于我的主dns服务器已经打好了,参考上一实验,这里直接 ...

最新文章

  1. 改进型 clock 页面置换算法实现_ID生成算法雪花算法介绍及实现
  2. 缓解数据包丢失对WAN的影响是当务之急—Vecloud微云
  3. Leetcode 33.搜索旋转排序数组 (每日一题 20210707)
  4. 《Effective STL》学习笔记(第二部分)
  5. OpenGL实现3D立体显示
  6. 数据结构——排序算法(含动态图片)
  7. python实战讲解_Python数据可视化实战讲解
  8. 微软 WPF 框架源码现已托管至 GitHub
  9. http 请求_HTTP请求方法有哪些?
  10. PhoneGap在Microsoft Visual Studio Express For Windows Phone上编译出错的解决方案
  11. php如何写代码禁用广告,不再显示广告案例(php操作cookie)
  12. 计算机硬件英语单词有哪些,计算机硬件英语词汇
  13. Tomcat 6.0 安装与启动
  14. Postman安装与简单使用
  15. vector初始化方法(待补充)
  16. java前后端分离,前端部署的方式
  17. 小学计算机专业说课稿模板,小学信息技术说课稿集锦
  18. manjaro 配置 独立显卡驱动
  19. 关于 trello 和 slack 的感想及使用经验
  20. 《磨菇书三四章整理》

热门文章

  1. 电商婴幼儿产品数据分析
  2. 微信GIF表情制作小程序
  3. php up,PHP中 __wakeup()方法详解
  4. 《数据结构》—— 串的模式匹配算法
  5. Swagger访问地址
  6. 史上最简单的扫雷(C语言实现)
  7. QT 正则表达式——表征字符串的特征
  8. 决定代理ip网速的原因有哪些
  9. 几种连续型随机变量分布总结
  10. (数据结构)树的Child_Brother表示法