本文介绍 CoreDNS 相关配置以及验证方法,实验环境为 Kubernetes 1.11,搭建方法参考kubeadm安装kubernetes V1.11.1 集群

busybox 的槽点

开始之前先吐槽一下busybox中的nslookup命令。这个命令应该是实现的不是很完全,导致我在测试DNS的成功,得到了错误的信息。先来看一下

[root@devops-101 ~]# kubectl run busybox1 --rm -it --image=docker.io/busybox /bin/sh
If you don't see a command prompt, try pressing enter.
/ # nslookup kubernetes.default
Server: 172.17.0.10
Address: 172.17.0.10:53 ** server can't find kubernetes.default: NXDOMAIN *** Can't find kubernetes.default: No answer

看起来像是DNS没有响应,慢着,使用带nslookup的alphine试一下。

[root@devops-101 ~]# kubectl run dig --rm -it --image=docker.io/azukiapp/dig /bin/sh
If you don't see a command prompt, try pressing enter.
/ # dig @172.17.0.10 kubernetes.default.svc.cluster.local +noall +answer ; <<>> DiG 9.10.3-P3 <<>> @172.17.0.10 kubernetes.default.svc.cluster.local +noall +answer
; (1 server found)
;; global options: +cmd
kubernetes.default.svc.cluster.local. 5 IN A 172.17.0.1
/ # nslookup kubernetes.default
Server: 172.17.0.10
Address: 172.17.0.10#53 Name: kubernetes.default.svc.cluster.local
Address: 172.17.0.1 / # nslookup www.baidu.com
Server: 172.17.0.10
Address: 172.17.0.10#53 Non-authoritative answer:
www.baidu.com canonical name = www.a.shifen.com.
Name: www.a.shifen.com
Address: 220.181.112.244
Name: www.a.shifen.com
Address: 220.181.111.188 / # nslookup kubernetes.default
Server: 172.17.0.10
Address: 172.17.0.10#53 Name: kubernetes.default.svc.cluster.local
Address: 172.17.0.1

好好的啊!就是这个原因,busybox坑了我好几天。

CoreDNS

CoreDNS在Kubernetes1.11版本已经做为GA功能释放,成为Kubernetes默认的DNS服务替代了Ku be-DNS,目前是kubeadm、kube-up、minikube和kops安装工具的默认选项。

Stubdomain and upstreamnameserver in kube-dns translates to the proxy in CoreDNS. The federation in kube-dns has an equivalent federation in CoreDNS.

配置文件

使用kubeadm安装CoreDNS,会使用ConfigMap做为配置文件。这份配置文件,会默认使用宿主机的DNS服务器地址。

[root@devops-101 ~]# kubectl -n kube-system get configmap coredns -oyaml
apiVersion: v1
data:
Corefile: |
.:53 {
errors
health
kubernetes cluster.local in-addr.arpa ip6.arpa {
pods insecure
upstream
fallthrough in-addr.arpa ip6.arpa
}
prometheus :9153
proxy . /etc/resolv.conf
cache 30
reload
}
kind: ConfigMap
metadata:
creationTimestamp: 2018-08-20T07:01:55Z
name: coredns
namespace: kube-system
resourceVersion: "193"
selfLink: /api/v1/namespaces/kube-system/configmaps/coredns
uid: ec72baa4-a446-11e8-ac92-080027b7c4e9

配置文件各项目的含义

名称 含义
errors 错误会被记录到标准输出
health 可以通过http://localhost:8080/health查看健康状况
kubernetes 根据服务的IP响应DNS查询请求,kubeadm的Cluster DomainService CIDR默认为cluster.local10.95.0.0/12,可以通过--service-dns-domain--service-cidr参数配置。
prometheus 可以通过http://localhost:9153/metrics获取prometheus格式的监控数据
proxy 本地无法解析后,向上级地址进行查询,默认使用宿主机的 /etc/resolv.conf 配置
cache 缓存时间

检查COreDNS运行状况

检查Pod状态

[root@devops-101 ~]# kubectl -n kube-system get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE
coredns-78fcdf6894-52gp9 1/1 Running 4 4h 172.16.0.11 devops-101
coredns-78fcdf6894-mkvqn 1/1 Running 4 4h 172.16.0.10 devops-101
etcd-devops-101 1/1 Running 4 3h 192.168.0.101 devops-101

检查部署

[root@devops-101 ~]# kubectl -n kube-system get deployments
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
coredns 2 2 2 2 4h

验证可以采用本文刚开始部分提到的方法。

参考资料

  1. nslookup not working with flannel as network: nameserver 10.96.0.10
  2. 使用 kubeadm 搭建 kubernetes1.10 集群
  3. CoreDNS for Kubernetes Service Discovery, Take 2
  4. Migration from kube-dns to CoreDNS
  5. Deploying Kubernetes with CoreDNS using kubeadm
  6. dns service discovery fails on 1.11 with coredns (new default)

CoreDNS介绍的更多相关文章

  1. (转)CoreDNS介绍

    转:https://www.colabug.com/4171614.html 本文介绍 CoreDNS 相关配置以及验证方法,实验环境为 Kubernetes 1.11,搭建方法参考 kubeadm安 ...

  2. 【手打】coredns单台使用

    目录: coredns介绍 coredns安装 corendns配置 coredns介绍 CoreDNS 其实就是一个 DNS 服务,而 DNS 作为一种常见的服务发现手段,所以很多开源项目以及工程师 ...

  3. Consul学习笔记(详细)

    常见的注册中心: Netflix Eureka Alibaba Nacos HashiCorp Consul Apache Zookeeper CoreOS Etcd CNCF CoreDNS 介绍 ...

  4. Kubernetes系列之Coredns and Dashboard介绍篇

    本次系列使用的所需部署包版本都使用的目前最新的或最新稳定版,安装包地址请到公众号内回复[K8s实战]获取 介绍 项目地址:https://github.com/coredns/coredns Core ...

  5. kubernetes之监控Prometheus实战--prometheus介绍--获取监控(一)

    Prometheus介绍 Prometheus是一个最初在SoundCloud上构建的开源监控系统 .它现在是一个独立的开源项目,为了强调这一点,并说明项目的治理结构,Prometheus 于2016 ...

  6. Kubernetes系列之Helm介绍篇

    本次系列使用的所需部署包版本都使用的目前最新的或最新稳定版,安装包地址请到公众号内回复[K8s实战]获取 介绍 Helm 是 Deis 开发的一个用于 Kubernetes 应用的包管理工具,主要用来 ...

  7. 二进制搭建kubernetes多master集群【开篇、集群环境和功能介绍】

    本文主要说明kubernetes集群使用组建的版本和功能介绍.. 一.组件版本 Kubernetes 1.12.3 Docker 18.06.1-ce Etcd 3.3.10 Flanneld 0.1 ...

  8. Elastic Beats介绍

    需要学习的地方:概念,用法,模块使用 Elastic Beats介绍 Elastic Stack传统上由三个主要组件(Elasticsearch,Logstash和Kibana)组成,早已脱离了这种组 ...

  9. kubernetes之coredns玩法

    一.概述 新版本的kubernetes默认使用了coredns,这里就不赘述了.直达车:https://coredns.io/.https://kubernetes.io/docs/tasks/adm ...

随机推荐

  1. P1890 gcd区间

    P1890 gcd区间我一开始80分暴力,模拟100做法dpO(n^2+m)f[i][j]表示i到j的 gcd初始化f[i][i]=i;f[i][j]=gcd(f[i][j-1],a[j]);这样查询 ...

  2. Windows密码破解工具ophcrack

    Windows密码破解工具ophcrack   Windows用户密码都采用哈希算法加密进行保存.Kali Linux内置了专用破解工具ophcrack.该工具是一个图形化界面工具,支持Windows ...

  3. mysql三大特性、三范式、五大约束

    1.数据库的三大特性 '实体':表 '属性':表中的数据(字段) '关系':表与表之间的关系 2.数据库设计三大范式 a:确保每列保持原子性(即数据库表中的所有字段值是不可分解的原子值) b:确保表中 ...

  4. poj 1511 优先队列优化dijkstra *

    题意:两遍最短路 链接:点我 注意结果用long long #include<cstdio> #include<iostream> #include<algorithm& ...

  5. [Java]struts2-spring整合时配置监听器

    1.struts2-spring整合时配置监听器 [在web.xml中] <!-- 上下文载入器监听器,确保web服务器启动时,直接完成spring容器的初始化 --/> [Ctrl + ...

  6. [Java]Spring框架

    在这里学习Spring框架: >>spring&struts框架学习 >>spring >>Java回顾之Spring基础 >>IBM Java ...

  7. DIV+javascript实现首尾相连循环滚动效果

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  8. 使用 IntraWeb (15) - 基本控件之 TIWEdit、TIWMemo、TIWText

    TIWEdit //单行文本框, 通过 PasswordPrompt 属性可以作为密码框 TIWMemo //多行文本框 TIWText //相当于多行的 TIWLabel 或不能编辑的 TIWMem ...

  9. java学习:JMM(java memory model)、volatile、synchronized、AtomicXXX理解

    一.JMM(java memory model)内存模型 从网上淘来二张图: 上面这张图说的是,在多核CPU的系统中,每个核CPU自带高速缓存,然后计算机主板上也有一块内存-称为主内(即:内存条).工 ...

  10. spring-boot 速成(4) 自定义配置

    spring-boot 提供了很多默认的配置项,但是开发过程中,总会有一些业务自己的配置项,下面示例了,如何添加一个自定义的配置: 一.写一个自定义配置的类 package com.example.c ...