首页 > 其他分享 >k8s学习笔记之CoreDNS

k8s学习笔记之CoreDNS

时间:2024-08-07 15:06:41浏览次数:17  
标签:errors 配置 arpa 笔记 域名 DNS CoreDNS k8s

一、CoreDNS configMap配置参数及说明

主要讲解CoreDNS configMap及其他关键配置

部署文件(需要替换其中一些变量):https://github.com/kubernetes/kubernetes/blob/master/cluster/addons/dns/coredns/coredns.yaml.base

1.configMap配置

apiVersion: v1
kind: ConfigMap
metadata:
  name: coredns
  namespace: kube-system
  labels:
      addonmanager.kubernetes.io/mode: EnsureExists
data:
  Corefile: |
    .:53 {
        errors
        health {
            lameduck 5s
        }
        ready
        kubernetes __DNS__DOMAIN__ in-addr.arpa ip6.arpa {
            pods insecure
            fallthrough in-addr.arpa ip6.arpa
            ttl 30
        }
        prometheus :9153
        forward . /etc/resolv.conf {
            max_concurrent 1000
        }
        cache 30
        loop
        reload
        loadbalance
    }

2.配置参数说明

参数

描述

errors

错误信息到标准输出。

health

CoreDNS自身健康状态报告,默认监听端口8080,一般用来做健康检查。可以通过http://localhost:8080/health获取健康状态。

ready

CoreDNS插件状态报告,默认监听端口8181,一般用来做可读性检查。可以通过http://localhost:8181/ready获取可读状态。当所有插件都运行后,ready状态为200。

kubernetes

CoreDNS Kubernetes插件,提供集群内服务解析能力,基于kubernetes service name 进行DNS查询并返回记录给客户端

prometheus

CoreDNS自身metrics数据接口。可以通过http://localhost:9153/metrics获取prometheus格式的监控数据。

forward(或proxy)

将域名查询请求转到预定义的DNS服务器。默认配置中,当域名不在Kubernetes域时,将请求转发到预定义的解析器(/etc/resolv.conf)中。默认使用宿主机的/etc/resolv.conf配置。

cache

DNS缓存,单位秒。

loop

环路检测,如果检测到环路(cordns转发到其他DNS,其他DNS再转发到coredns),则停止CoreDNS。

reload

允许自动重新加载已更改的Corefile。编辑ConfigMap配置后,默认等待两分钟后更改生效。

loadbalance

轮询DNS解析记录,如果一个域名存在多个解析记录,可以抽取记录值随机响应,对A、AAAA、MX记录生效。

3.其他重要参数

service中:__DNS__SERVER__ :自定义 coredns svc的地址即DNS服务器地址

configMap中kubernetes cluster.local  自定义DNS解析与,如果修改则集群DNS完全解析域名如下:${SVC_NAME}.${NAMESPACE_NAME}.svc.${DNS_DOMAIN}

二、CoreDNS的扩展配置

以下为常见场景下CoreDNS配置

1.设置打印CoreDNS的解析日志,启用log插件,配置如下

  Corefile: |
    .:53 {
        errors
        log  #在errors插件下添加log,2分钟后生效
        health {
           lameduck 15s
        }

2.为指定域名配置转发

如example.com类型后缀的域名需要经过自建DNS服务器(IP为10.10.0.10)进行解析的话,可为域名配置一个单独的服务块。示例配置如下:

  Corefile: |
    .:53 {
        errors
        health {
           lameduck 15s
        }
        ready
        kubernetes cluster.local in-addr.arpa ip6.arpa {
          pods insecure
          fallthrough in-addr.arpa ip6.arpa
          ttl 30
        }
        prometheus :9153
        forward . /etc/resolv.conf {
          prefer_udp
        }
        cache 30
        loop
        reload
        loadbalance
    }
   # 此处为新增内容(forward和proxy都可以)
    example.com:53 {
        errors
        cache 30
        forward . 10.10.0.10 {
        prefer_udp
        }
    }

3.对集群外域名配置其他域名服务器

即将所有k8s集群外的域名解析转发到指定的服务器,如当前业务在阿里云,可以将k8s集群外的所有域名转发到阿里云公共DNS服务器,不使用宿主机上的/etc/resolv.conf配置,具体配置如下

  Corefile: |
    .:53 {
        errors
        health {
           lameduck 15s
        }
        ready
        kubernetes cluster.local in-addr.arpa ip6.arpa {
          pods insecure
          fallthrough in-addr.arpa ip6.arpa
          ttl 30
        }
        prometheus :9153
        forward . 10.10.0.10 10.10.0.20 {  #10.10.0.10 10.10.0.20为自定义DNS服务器
          prefer_udp
        }
        cache 30
        loop
        reload
        loadbalance
    }

4.自定义域名hosts

碰到过的实际场景:三方的域名突然失效,通过在CoreDNS中指定三方域名的IP实现业务正常运行,具体示例如下

  Corefile: |
    .:53 {
        errors
        health {
           lameduck 15s
        }
        ready
         #使用Hosts插件来配置,以下为新增
        hosts {
          127.0.0.1 www.example.com #为特定域名指定hosts,如为www.example.com指定IP为127.0.0.1
          fallthrough #保留该指令,否则会导致其他域名解析失败
        }

5.内网场景下,k8s集群外访问k8s集群内部域名

1.将svc暴露到集群外
2.使用阿里云PrivateZone添加A记录到保留的地址,如SLB

6.公网、内网下统一访问域名

1.将集群内服务foo.default.svc.cluster.local暴露到公网上,如SLB,并配置公网域名foo.example.com解析到该服务
2.集群内服务foo.default.svc.cluster.local暴露到内网上,如SLB,并配置Private Zone域名foo.example.com解析到该服务
3.在集群内部,通过Rewrite插件将foo.example.com CNAME到foo.default.svc.cluster.local。示例配置如下:
  Corefile: |
    .:53 {
        errors
        health {
           lameduck 15s
        }
        ready
        
        rewrite stop {
          name exact foo.example.com foo.default.svc.cluster.local
          answer name foo.default.svc.cluster.local foo.example.com 
        }

7.禁止对IPv6类型的AAAA记录查询返回

当业务容器不需要AAAA记录类型时,可以在CoreDNS中将AAAA记录类型拦截,返回空(NODATA),以减少不必要的网络通信。示例配置如下:

  Corefile: |
    .:53 {
        errors
        health {
           lameduck 15s
        }
        #新增以下一行Template插件,其它数据请保持不变。
        template IN AAAA .
    
    }

 

标签:errors,配置,arpa,笔记,域名,DNS,CoreDNS,k8s
From: https://www.cnblogs.com/panwenbin-logs/p/18347081

相关文章

  • java笔记6
    10.多态多态的概念多态(Polymorphism)是面向对象编程的核心概念之一,它指的是同一个接口可以被多个不同的类实现,或者同一个操作作用于不同的对象时可以有不同的解释和行为。为何要用多态多态的使用使得代码更加灵活和可扩展,它允许编写的代码可以对不同类型的对象执行不同的操作。......
  • Living-Dream 系列笔记 第76期
    UVA1328简单题。我们有结论:对于一个周期串S的子串T,它的最小循环节即为T-nxt_{\left|T\right|}。(具体请查阅往期笔记)于是,我们枚举所有前缀,检验上式是否能被当前前缀的长度整除并且不止一个循环节即可。code#include<bits/stdc++.h>usingnamespacestd;constintN=......
  • 笔记:从Aurora 8b/10b 到Aurora 64b/66b (三):自定义PHY层收发
    相较于8/10来说没那么复杂,需要考虑的情况只有八种;但是gearbox的控制需要额外的心思:每三十二周期所有操作都需要停止;这一点在收发都需要注意;RX:核心思想是利用header做检测,将夹杂在数据流中的控制包滤除掉;modulegt_phy_rx(inputwirei_rx_clk......
  • 《计算机网络 - 自顶向下方法》阅读笔记
    《计算机网络-自顶向下方法》阅读笔记应用层、运输层、网络层、数据链路层计算机网络和因特网:因特网:​ 是一个世界范围的计算机网络,互联了全世界的计算机设备计算机设备:手机,电脑,游戏机,电视等所有这些设备都称为主机(host)或端系统(endsystem)端系统通过通信......
  • 搞定你对笔记本电脑零件的所有疑问(上)
    前言​这篇文章将详细向读者介绍电脑的各个主要关键部件。先从外在开始再到内在。请注意,如果你觉得这篇文章较为啰嗦,可以选择性地浏览,毕竟这篇文章主要面向的是完全不懂的小白。开机键笔记本电脑的开机键(PowerButton)是设备上一个至关重要的硬件按钮,用于控制计算机的电......
  • NTT 学习笔记
    NTT前置知识:FFTNTT,中文“快速数论变换”,是FFT在数论领域上的实现,比FFT更快,应用更广。对于FFT,因为其涉及到复数操作,对于某些需要取模的题不再适用。并且因为需要求正弦与余弦,使用时难以避免精度误差。这时就需要用到NTT来解决问题了。我们知道FFT的实现是在复平面上找......
  • 网课-动态规划学习笔记2
    记忆化搜索记忆化搜索是一种DP的实现方法。相同点:DP中同一局部问题只计算一次——搜索的记忆化不处理对答案没有贡献的情况——对应搜索的剪枝不同点:遍历顺序优化复杂度。按数组顺序进行的DP,经常可以配合一些优化技巧进一步降低复杂度。“DP是一种算法,......
  • LabVIEW的ActorFramework笔记
    1前置知识储备自分布式计算出现以来,业界已经开始广泛研究基于消息传递编程模型的解决方案。关于消息传递,Wikipedia描述其广泛定义主要包括:远程过程调用(RemoteProcedureCalls,RPC)和消息传递接口(MessagePassingInterface,MPI)。但是,如今我们所谈到的消息传递,通常是指acto......
  • 笔记——排列组合
    蓝月の笔记——排列组合篇摘要万恶的数学!Part1加乘原理小学奥数内容加法原理:当多个方案并列(即互不影响)时,总方案数为各个方案数之和例:共有\(k\)种交通工具可以从A地到B地,第\(i\)种交通工具有\(a_i\)班次,那么从A地到B地的总方案数为\(\sum_{1\lei\lek}a_i\)乘......
  • 【论文笔记】Cross-Domain WiFi Sensing with Channel State Information: A Survey
    Cross-DomainWiFiSensingwithChannelStateInformation:ASurveyIntroduction检测领域:检测领域里,大部分用的阈值检测或者简单的学习算法,例如SVM。fallsRT-Fall:Areal-timeandcontactlessfalldetectionsystemwithcommodityWiFidevicesWiFall:Device-fr......