CNCF之CoreDNS

2024-01-11 12:28
文章标签 coredns cncf

本文主要是介绍CNCF之CoreDNS,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

        目前我们学习云原生技术,就不得不去了解CNCF,即Cloud Native Computing Foundation,云原生计算基金会,它的宣言或理念是:

        The Cloud Native Computing Foundation (CNCF) hosts critical components of the global technology infrastructure。

        CNCF上最重要就是这些开源的项目系统了,分三大类:毕业项目Graduated Projects、孵化项目Incubating Projects和沙盒项目Sandbox Projects。

        毕业项目是合格稳定的项目系统,孵化项目正在往毕业项目努力中,沙盒项目就是一个玩具,可能系统很不稳定,不要引入到正式平台里。

        今天要介绍的是二十四个毕业项目之一的CoreDNS, 它是一个DNS服务器,用Go语言写成的,被设计成可以与容器(如Linux和Docker容器)化环境良好地结合,尤其是在非常流行的容器编排系统Kubernetes管理的环境中。       

        CoreDNS具有以下特点:

  1. 插件架构:采用插件架构,允许用户根据需要选择和组合不同的插件,从而实现功能的定制和扩展。
  2. 高性能:采用了许多优化措施,确保其高性能和低延迟。
  3. 易于配置:配置文件采用类似于Go语言的语法,易于理解和编写。
  4. 兼容性强:兼容多种DNS协议,如DNS-over-TLS、DNS-over-HTTPS等,可以与现有的DNS基础设施无缝集成。
  5. 可扩展性:由于CoreDNS采用插件架构,因此可以轻松添加新功能和扩展现有功能,以满足不断变化的需求。

        在Kubernetes环境中,CoreDNS可以作为默认的DNS服务器,为容器提供DNS解析服务。它支持将服务发现和DNS查询委托给其他DNS服务器,并提供了灵活的配置选项,以适应不同的使用场景。

        CoreDNS的官网是:CoreDNS: DNS and Service Discovery,文档地址是:CoreDNS手册

提供3种形式的安装:1)二进制;2)Docker;3)源码。我用的是源码方式,下载地址是:Release v1.11.1 · coredns/coredns · GitHub

        可执行文件是:coredns,我的目录是:

coredns  Corefile  hosts 

         Corefile文件内容是:

.:53 {
    reload 30s
    loadbalance round_robin
    hosts hosts {
        fallthrough
    }
    forward . 8.8.8.8
    log
}

        hosts文件内容是:

# database
192.168.1.10    mysql
192.168.1.11    mongodb

# kafka

192.168.1.20    kafka
192.168.1.21    kafka

        以上最简单的DNS服务使用,基本上不用做什么复杂配置就可以立即使用。

        还有docker部署方式,以及和著名的k8s配合使用,这里不详述了,需要另起一篇文章。

        从上面配置文件Corefile, 可以看到CoreDNS插件机制,使用了很多插件,如下:

errors错误信息到标准输出
reload允许自动重新加载已更改的Corefile。编辑ConfigMap配置后,请等待两分钟以使更改生效。
loadbalance循环DNS负载均衡器,可以在答案中随机A、AAAA、MX记录的顺序。
forward将域名查询请求转到预定义的DNS服务器。默认配置中,当域名不在kubernetes域时,将请求转发到预定义的解析器(/etc/resolv.conf)中。默认使用宿主机的/etc/resolv.conf配置。
hostshosts enables serving zone data from a /etc/hosts style file
log日志

         最后,为什么CoreDNS这么重要,就是我们在业务系统写服务地址时,不要写死IP地址,而是写对于的系统域名,那么在不同的客户现场环境里,我们通过hosts文件配置来实际映射到具体的IP地址,就可以实现云原生15要素:

        要素1:  One Codebase, One Application

        Heroku版本:一份基准代码,多份部署。

        要素5 Configuration, Credentials and Code

        Heroku版本:在环境中配置存储。

        在环境中存储配置,不同的环境具有不同的配置,这和要素1是配套的,代码只有一份,但配置是多份,一个客户环境一份专门的配置。

        这里hosts就是“不同的环境具有不同的配置”。

        以后我们就从这个思路来学习云原生技术,一种技术是要解决一个问题的。

这篇关于CNCF之CoreDNS的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/594355

相关文章

Kubernetes CoreDNS 无法解析外网域名的问题

k8s master机器环境 宿主机resolv.conf # cat /etc/resolv.confnameserver 172.16.100.1 pod中的resolv.conf文件如下 $ cat /etc/resolv.conf # Generated by NetworkManagernameserver 10.96.0.10 # 此ip为coredn

CNCF项目全景图介绍

本文首发在个人博客上,欢迎来踩! 云原生计算基金会(CNCF)介绍 CNCF(Cloud Native Computing Foundation)官网链接:https://www.cncf.io/ 官方的介绍如下: 云原生技术有利于各组织在公有云、私有云和混合云等新型动态环境中,构建和运行可弹性扩展的应用。云原生的代表技术包括容器、服务网格、微服务、不可变基础设施和声明式API。这些技术能

kube-promethesu调整coredns监控

K8s集群版本是二进制部署的1.20.4,kube-prometheus对应选择的版本是kube-prometheus-0.8.0 Coredns是在安装集群的时候部署的,采用的也是该版本的官方文档,kube-prometheus中也有coredns的监控配置信息,但是在prometheus的监控页面并没有发现coredns的servicemonitor.。所以我们需要一步步的去排查该问题。

coredns 被误删了,可以通过重新应用 coredns 的 Deployment 或 DaemonSet 配置文件来恢复

如果 coredns 被误删了,可以通过重新应用 coredns 的 Deployment 或 DaemonSet 配置文件来恢复。以下是恢复 coredns 的步骤: 1. 下载 coredns 配置文件 你可以从 Kubernetes 的官方 GitHub 仓库下载 coredns 的配置文件。以下是下载并应用配置文件的步骤: wget https://raw.githubusercon

ChaosMeta V0.7.0 版本发布 进入CNCF混沌工程全景图

混沌工程 ChaosMeta 的全新版本 V0.7.0 现已正式发布!该版本包含了许多新特性和增强功能,在编排界面提供了多集群管理,在代码层面支持多命令下发通道的选择。另外由蚂蚁集团发起的ChaosMeta于北京时间2024年1月10日正式进入CNCF混沌工程全景图。 ChaosMeta进入CNCF混沌工程全景图 北京时间2024年1月10日,ChaosMeta正式进入CNCF混沌

k8s集群安装后CoreDNS 启动报错plugin/forward: no nameservers found

安装k8s过程中遇到的问题: 基本信息 系统版本:ubuntu 22.04 故障现象: coredns 报错:plugin/forward: no nameservers found 故障排查: #检查coredns的配置,发现有一条转发到/etc/resolv.conf的配置 kubectl edit cm coredns -n kube-system forward .

suse 12 二进制部署 Kubernetets 1.19.7 - 第11章 - 部署coredns组件

文章目录 1.11.0、部署coredns1.11.1、测试coredns功能 suse 12 二进制部署 Kubernetes 集群系列合集: suse 12 二进制部署 Kubernetets 1.19.7 - 第00章 - 环境准备suse 12 二进制部署 Kubernetets 1.19.7 - 第01章 - 创建CA证书和kubectl集群管理命令suse 12

【CNCF】CKA+CKS ~ 限时折扣 ~ 2020年最后的大优惠 ~ 快来看看 ~ 你一定会很喜欢

【CNCF】CKA+CKS ~ 限时折扣 ~ 2020年最后的大优惠 ~ 快来看看 ~ 你一定会很喜欢   https://www.bilibili.com/video/BV1Ly4y1e7hX/     【CNCF】CKA+CKS ~ 限时折扣 ~ 2020年最后的大优惠 ~ 快来看看 ~ 你一定会很喜欢

coredns部署

coredns部署 coredns部署 一:coredns-rbac.yaml apiVersion: v1kind: ServiceAccountmetadata:name: corednsnamespace: kube-systemlabels:kubernetes.io/cluster-service: "true"addonmanager.kubernetes.io/mode:

coreDNS详解

一、介绍 1、coreDNS的功能 coreDNS的作用主要是作为DNS服务器,在集群内提供服务发现功能,也就是服务之间的互相定位的过程。他监听集群中service和pod的创建和销毁事件,当serivice或者pod被创建时,记录对应的解析记录。当其他pod通过域名来访问集群中的service或pod时,会向coreDNS服务查询解析记录,然后访问解析到的IP地址。 2、coreDNS特点