主頁 >  其他 > 基于 CoreDNS 和 K8s 構建云原生場景下的企業級 DNS

基于 CoreDNS 和 K8s 構建云原生場景下的企業級 DNS

2022-09-21 09:11:36 其他

容器作為近些年最火熱的后端技術,加快了很多企業的數字化轉型行程,目前的企業,不是在使用云原生技術,就是在轉向云原生技術的程序中,在容器化行程中,如何保持業務的平穩遷移,如何將現有的一些服務設施一并進行容器化遷移,也是眾多企業較為關注的點,

以 DNS 為例,如何構建一個云原生的企業 DNS 系統?

CoreDNS 簡介

CoreDNS 是一個 Go 語言撰寫的靈活可擴展的 DNS 服務器,在 Kubernetes 中,作為一個服務發現的配置中心,在 Kubernetes 中創建的 Service 和 Pod 都會在其中自動生成相應的 DNS 記錄,Kubernetes 服務發現的特性,使 CoreDNS 很適合作為企業云原生環境的 DNS 服務器,保障企業容器化和非容器化業務服務的穩定運行,

構建企業 DNS 服務器時,一般會有以下需求:

  • 用戶外網域名訪問服務;
  • 混合云業務遷移、資料共享、容災;
  • 開發代碼 IP 寫死導致架構可用性、彈性無法實作;
  • 統一 DNS 管理需求,含上下級平臺對接;
  • DNS 劫持等網路安全風險;
  • 存量代碼固定域名訪問;
  • 集群外域名訪問;

相比于 Bind 開源方案或 Windows Server DNS 商業 DNS 服務器,CoreDNS 有以下優勢:

  • 無商業許可要求,降低投資成本;
  • 輕量化,通過插件實作功能添加;
  • 支持 DNS,DNS over TLS,DNS over HTTP/2,DNS over gRPC 協議;
  • 提供 kubernetes 服務發現;
  • 支持對接 Route53/Google Cloud DNS/AzureDNS;
  • 支持集成 Prometheus, OpenTracing,OPA,帶來更全面的運維體驗;
  • 支持整合容器管理平臺,提供統一 DNS 系統運維,

構建企業云原生 DNS 前,對 CoreDNS 做一個更深入的了解,

CoreDNS 運行原理與插件介紹

CoreDNS 基于 Caddy 框架實作模塊化設計,每個插件承載相應的具體功能,對于 DNS 系統而言,CoreDNS 使用 File,ETCD 插件等加載 DNS 記錄,使用 Kubernetes 插件實作集群服務發現,外部 DNS 請求到達 CoreDNS 后,根據插件呼叫鏈依次處理 DNS 請求,

CoreDNS 社區官方提供了 50 多種插件,開發者亦可根據需求開發個性化的外部插件,CoreDNS 常用插件如下圖,根據使用場景,可分為運維、DNS 處理、后端資料存盤等三個類別,

CoreDNS 定義 Corefile 組態檔,服務器在加載 Corefile 后處理 DNS 請求,對于以下插件,只需在 Corefile 中參考即可,之后 CoreDNS 會使用插件鏈進行呼叫,插件鏈可參考以下鏈接: https://github.com/coredns/coredns/blob/master/plugin.cfg

設計一個基于 CoreDNS 的分層 DNS 架構

在熟悉 CoreDNS 特性后,可設計企業的 DNS 架構:

DNS 架構以外網 DNS、內網 DNS、磁區 DNS 組成:

外網 DNS:

  • 使用 DNSSEC、DOT、DOH 等保障 DNS 安全;
  • 快取 DNS 記錄;
  • 構建 DNS 實體自動伸縮,應對高 QPS 需求;

內網 DNS:

  • Kubernetes 服務發現;
  • 構建上游 DNS 區域;

磁區 DNS:

  • 建立開發、測驗、UAT、生產等區域 DNS;
  • NodeLocalDNS 提高性能;
  • 設定轉發器處理遞回 DNS 請求;

KubeSphere 部署 CoreDNS

由于 CoreDNS 是一個 CNCF 畢業的云原生專案,是目前支持云原生最好的一個 DNS 服務器,用戶可直接在 KubeSphere 應用商店一鍵安裝,KubeSphere 提供了基于 Helm 模板的應用商店,支持云原生應用的生命周期管理,提供開發人員應用上傳、測驗,版本提交,應用管理人員進行審核、發布等流程管理,用戶在應用商店選擇 CoreDNS 應用后,可按需部署于不同集群的不同專案中,并自定義應用模板配置:

服務發現與 DNS 配置

部署 CoreDNS 后,對于運維人員來說,CoreDNS 的配置大體分為兩類:一類為 Kubernetes 配置,一類為 DNS 配置,CoreDNS 提供了 Kubernetes 插件,支持在 kubernetes 集群中讀取區域資料,并根據 Pod 和 Service 的域名記載相應的 A 記錄和 PTR 記錄,

這是一個 Kubernetes 集群中的 CoreDNS corefile 默認配置,CoreDNS 會在 53 埠讀取 cluster.local 后綴的 Kubernetes 集群 A 記錄和 PTR 記錄,并將 CoreDNS 收集到的監控指標通過 9153 埠輸出到集群內的 Prometheus,而 Kubernetes 不同型別 Service 的 DNS 記錄格式,CoreDNS 也有相應標準進行記錄,

設定完 Kubernetes 后,可以設定其他業務需求的 DNS 配置,如:

  • 設定不同的存根域;
  • 設定存根域靜態 DNS 條目;
  • 面對存量代碼,設定域名重寫;
  • 面對集群外服務,設定 DNS 轉發;
  • 設定日志和監控集成;
  • 設定快取、健康、就緒檢查及鏈路追蹤;

根據以上配置,就構建了一個基礎的企業云原生 DNS 系統:

DNS 服務暴露

對于集群外的服務而言,存量業務可能還是一些虛擬化和裸機的應用,若和集群網路無法互聯,如何在業務遷移時訪問新的 DNS 服務?

KubeSphere 提供了一個開源專案——OpenELB 來解決云原生環境下的服務暴露問題,這是一個 CNCF 的沙箱專案,OpenELB 通過物理環境的交換機使用 BGP 協議將 LoadBalancer 型別服務的 ExternalIP 宣告出去,在 IP 可達的環境下集群外部業務即可通過 EIP 訪問 Kubernetes 服務資源,

對于集群外需要設定 DNS 服務器的服務資源,可通過 OpenELB 使用 EIP 暴露 CoreDNS ,即可訪問 DNS 服務 ,

在 KubeSphere 3.3 版本,用戶可在開啟集群網關 / 專案網關時,在網關訪問 LoadBalancer 模式下,選擇“OpenELB”負載均衡提供商,之后創建的 LoadBalancer 服務都會從 OpenELB 建立的 EIP Pool 中分配 EIP,供集群外部訪問,

DNS 監控運維

為保障 CoreDNS 穩定運行,運維人員還需在基礎設施側完善 DNS 系統的日志、監控、告警、通知功能,KubeSphere 提供了簡單易用的監控面板、日志管理與落盤,多維度的告警策略和訊息,以及對接多個企業應用(郵件,釘釘, 企業微信)的通知系統,時刻關注業務運行狀態,

此處以一個系統管理員視角,展示了在 KubeSphere 日志系統搜尋 NXDOMAIN 型別 DNS 回復的結果,

通過 KubeSphere 自定義監控面板,設定一個基于 CoreDNS 指標的監控面板,KubeSphere 內置了眾多監控面板,用戶可直接使用模板構建亦可使用 PromQL 創建面板:



通過 KubeSphere 告警和通知組件,用戶可基于預置規則模板(CPU、記憶體、磁盤、網路、例外率)或使用 PromQL 陳述句自定義告警規則,此處定義當 CoreDNS CPU 用量大于等于 0.1Core 系統觸發告警:

KubeSphere 針對租戶設計了通知模板,包含多種通知系統集成,此處使用郵件將“重要告警”,“危險告警”條件的告警訊息發送給郵件接收人,

當告警觸發后,即可在告警訊息和通知歷史處查看到相應的條目,此時用戶也會收到一封告警郵件了:

在高并發 DNS 請求場景中,還需對 CoreDNS 進行自動伸縮設計,通常考慮到服務高可用性和性能考量,可參考以下計算規格和調度策略設計:

  • 副本打散,跨可用區 / 節點,
  • 避免所在節點 CPU、記憶體過高,
  • 通常設計副本數為 2,QPS 與 CPU 消耗正相關,單 CPU——1w+QPS
  • Kubernetes 集群下,CoreDNS 副本數與集群節點配置 1:8,
  • 業務峰值 CPU 占用 >1Core,水平擴容,

通過 KubeSphere 自動伸碩訓制,可設定基于 CPU 用量的自動伸縮策略,保障 CoreDNS 在瞬時高并發場景穩定運行,

總結

以上就是建設一個云原生的 DNS 系統的全部內容了,可以看出,在云原生時代,新的技術層出不窮,IT 系統的部門和人員也越發趨于協同作戰,以往構建一個 DNS 系統可能只需要安裝一套穩定能進行 DNS 決議的系統,并實作主備切換即可,在應用驅動基礎架構轉型的云原生時代,基礎服務應用還更需要考慮異構系統的連接,靈活簡便的安裝升級管理,更強大的可靠性和自愈能力,日志監控通知系統的完善,還有更適合實際業務需求的彈性設計,來加速應用現代化,推動業務應用持續轉型,

本文由博客一文多發平臺 OpenWrite 發布!

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/509177.html

標籤:其他

上一篇:虛擬機環境配置1

下一篇:利用 Kubernetes 內置 PodTemplate 管理 Jenkins 構建節點

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • 2023年最新微信小程式抓包教程

    01 開門見山 隔一個月發一篇文章,不過分。 首先回顧一下《微信系結手機號資料庫被脫庫事件》,我也是第一時間得知了這個訊息,然后跟蹤了整件事情的經過。下面是這起事件的相關截圖以及近日流出的一萬條資料樣本: 個人認為這件事也沒什么,還不如關注一下之前45億快遞資料查詢渠道疑似在近日復活的訊息。 訊息是 ......

    uj5u.com 2023-04-20 08:48:24 more
  • web3 產品介紹:metamask 錢包 使用最多的瀏覽器插件錢包

    Metamask錢包是一種基于區塊鏈技術的數字貨幣錢包,它允許用戶在安全、便捷的環境下管理自己的加密資產。Metamask錢包是以太坊生態系統中最流行的錢包之一,它具有易于使用、安全性高和功能強大等優點。 本文將詳細介紹Metamask錢包的功能和使用方法。 一、 Metamask錢包的功能 數字資 ......

    uj5u.com 2023-04-20 08:47:46 more
  • vulnhub_Earth

    前言 靶機地址->>>vulnhub_Earth 攻擊機ip:192.168.20.121 靶機ip:192.168.20.122 參考文章 https://www.cnblogs.com/Jing-X/archive/2022/04/03/16097695.html https://www.cnb ......

    uj5u.com 2023-04-20 07:46:20 more
  • 從4k到42k,軟體測驗工程師的漲薪史,給我看哭了

    清明節一過,盲猜大家已經無心上班,在數著日子準備過五一,但一想到銀行卡里的余額……瞬間心情就不美麗了。最近,2023年高校畢業生就業調查顯示,本科畢業月平均起薪為5825元。調查一出,便有很多同學表示自己又被平均了。看著這一資料,不免讓人想到前不久中國青年報的一項調查:近六成大學生認為畢業10年內會 ......

    uj5u.com 2023-04-20 07:44:00 more
  • 最新版本 Stable Diffusion 開源 AI 繪畫工具之中文自動提詞篇

    🎈 標簽生成器 由于輸入正向提示詞 prompt 和反向提示詞 negative prompt 都是使用英文,所以對學習母語的我們非常不友好 使用網址:https://tinygeeker.github.io/p/ai-prompt-generator 這個網址是為了讓大家在使用 AI 繪畫的時候 ......

    uj5u.com 2023-04-20 07:43:36 more
  • 漫談前端自動化測驗演進之路及測驗工具分析

    隨著前端技術的不斷發展和應用程式的日益復雜,前端自動化測驗也在不斷演進。隨著 Web 應用程式變得越來越復雜,自動化測驗的需求也越來越高。如今,自動化測驗已經成為 Web 應用程式開發程序中不可或缺的一部分,它們可以幫助開發人員更快地發現和修復錯誤,提高應用程式的性能和可靠性。 ......

    uj5u.com 2023-04-20 07:43:16 more
  • CANN開發實踐:4個DVPP記憶體問題的典型案例解讀

    摘要:由于DVPP媒體資料處理功能對存放輸入、輸出資料的記憶體有更高的要求(例如,記憶體首地址128位元組對齊),因此需呼叫專用的記憶體申請介面,那么本期就分享幾個關于DVPP記憶體問題的典型案例,并給出原因分析及解決方法。 本文分享自華為云社區《FAQ_DVPP記憶體問題案例》,作者:昇騰CANN。 DVPP ......

    uj5u.com 2023-04-20 07:43:03 more
  • msf學習

    msf學習 以kali自帶的msf為例 一、msf核心模塊與功能 msf模塊都放在/usr/share/metasploit-framework/modules目錄下 1、auxiliary 輔助模塊,輔助滲透(埠掃描、登錄密碼爆破、漏洞驗證等) 2、encoders 編碼器模塊,主要包含各種編碼 ......

    uj5u.com 2023-04-20 07:42:59 more
  • Halcon軟體安裝與界面簡介

    1. 下載Halcon17版本到到本地 2. 雙擊安裝包后 3. 步驟如下 1.2 Halcon軟體安裝 界面分為四大塊 1. Halcon的五個助手 1) 影像采集助手:與相機連接,設定相機引數,采集影像 2) 標定助手:九點標定或是其它的標定,生成標定檔案及內參外參,可以將像素單位轉換為長度單位 ......

    uj5u.com 2023-04-20 07:42:17 more
  • 在MacOS下使用Unity3D開發游戲

    第一次發博客,先發一下我的游戲開發環境吧。 去年2月份買了一臺MacBookPro2021 M1pro(以下簡稱mbp),這一年來一直在用mbp開發游戲。我大致分享一下我的開發工具以及使用體驗。 1、Unity 官網鏈接: https://unity.cn/releases 我一般使用的Apple ......

    uj5u.com 2023-04-20 07:40:19 more