首页 > 其他分享 >K3s 修改 CoreDNS 配置,持久生效

K3s 修改 CoreDNS 配置,持久生效

时间:2024-07-18 15:53:47浏览次数:10  
标签:持久 K3s custom kingsd coredns CoreDNS server

K3s 启动后,会自动帮我们安装好 CoreDNS,不需要手动安装。如果你想修改 CoreDNS 的配置,常用的有两种方式:

  • 直接修改 CoreDNS 的 configmap 来调整 CoreDNS 的参数,例如:kubectl -n kube-system edit configmap coredns

  • 修改 K3s manifests 中的 CoreDNS 配置文件,文件位置:/var/lib/rancher/k3s/server/manifests/coredns.yaml

这两种方式虽然简单,但都有相同的弊端:当你重启 K3s 服务或者升级 K3s 时,由于 K3s 会重新初始化 manifests 中的 CoreDNS 等配置,所以会覆盖掉你通过以上两种方式修改的 coredns 配置。

如果你想修改 K3s 中 CoreDNS 中的配置,并且持久生效的话,可以通过额外的 coredns-custom configmap 安装到 CoreDNS 容器中,并从包含的文件中导入覆盖和额外的 CoreDNS 配置。

下面是一个示例,可以在 CoreDNS 中通过 hosts plugin 添加域名映射记录:

 
# cat host.yaml
apiVersion: v1
kind: ConfigMap
metadata:
  name: coredns-custom
  namespace: kube-system
data:
  demo.server: |
    test.kingsd.top {
      hosts {
        127.0.0.1 test.kingsd.top
      }
    }

注意:

ConfigMap 的 name 一定刚要是 coredns-custom 才能够被 coredns 的 deployment 识别并挂载。

可通过查看 coredns pod 的日志来确认配置是否被重现加载并生效:

 

root@k3s1:~/coeredns# kubectl -n kube-system logs -f coredns-597584b69b-5lpfl
[WARNING] No files matching import glob pattern: /etc/coredns/custom/*.server
.:53
[WARNING] No files matching import glob pattern: /etc/coredns/custom/*.server
[INFO] plugin/reload: Running configuration SHA512 = b941b080e5322f6519009bb49349462c7ddb6317425b0f6a83e5451175b720703949e3f3b454a24e77f3ffe57fd5e9c6130e528a5a1dd00d9000e4afd6c1108d
CoreDNS-1.9.4
linux/amd64, go1.19.1, 1f0a41a
[WARNING] No files matching import glob pattern: /etc/coredns/custom/*.server
[INFO] Reloading
[INFO] plugin/reload: Running configuration SHA512 = 1b52ff608bf13ce36aecfb99d526714404a5e7f5e257fb01d1778e125d758ad03854dfd57e00f809da3d774f72e55e1c9f35cd4087024d98a6ca1b58ff631a43
[INFO] Reloading complete

最后,在其他 pod 中验证 CoreDNS 的配置是否生效:

 
root@k3s1:~# kubectl exec -it nginx-deployment-7588dc757d-krt5k bash
root@nginx-deployment-7588dc757d-krt5k:/# ping test.kingsd.top
PING test.kingsd.top (127.0.0.1) 56(84) bytes of data.
64 bytes from localhost (127.0.0.1): icmp_seq=1 ttl=64 time=0.033 ms

--- test.kingsd.top ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.033/0.033/0.033/0.000 ms

标签:持久,K3s,custom,kingsd,coredns,CoreDNS,server
From: https://www.cnblogs.com/gongzb/p/18309721

相关文章

  • consul本地kv数据持久化
    在macOS上(linux同理),如果你希望Consul在重启后能够保留KV数据,可以通过以下步骤配置Consul使用持久化存储。使用文件系统作为后端存储你可以将Consul配置为使用本地文件系统来持久化KV数据。下面是具体的步骤:1.创建数据存储目录首先,创建一个目录来存储Consul的数据。这个目录......
  • 使用Spring Data JPA实现持久化层的简化开发
    使用SpringDataJPA实现持久化层的简化开发大家好,我是微赚淘客系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!在现代的Java应用开发中,SpringDataJPA为我们提供了一种简单而强大的方式来操作数据库,本文将深入探讨如何利用SpringDataJPA简化持久化层的开发。一、Spring......
  • 基于EF Core存储的Serilog持久化服务
    前言Serilog是.NET上的一个原生结构化高性能日志库,这个库能实现一些比内置库更高度的定制。日志持久化是其中一个非常重要的功能,生产环境通常很难挂接调试器或者某些bug的触发条件很奇怪。为了在脱离调试环境的情况下尽可能保留更多线索来辅助解决生产问题,持久化的日志就显得很......
  • 可持久化数据结构
    P4735转化到区间求\(\text{xor}\x\)后的最大值,用Trie。那么需要知道区间是否有在Trie树某个子树内的节点,用可持久Trie,或者离线扫右端点并记录左端点时间戳即可。第二个做法可以不离线,同样使用可持久Trie,但是求区间时不使用减法,而是只使用插入前\(r\)个数的Trie,通过......
  • Mybatis-Plus最优化持久层开发
    Mybatis-plus:最优化持久层开发一:Mybatis-plus快速入门:1.1:简介:Mybatis-plus(简称MP)是一个Mybatis的增强工具,在mybatis的基础上只做增强不做改变;提高效率;自动生成单表的CRUD功能;提供了丰富的条件拼接方式;全自动ORM类型持久层框架;(不仅提供数据库操作的方法,还会提供sql语句......
  • Redis高可用之持久化、主从复制
    一、Redis高可用策略概述持久化持久化是最简单的高可用方法,主要作用是数据备份,即将数据存储在硬盘,保证数据不会因进程退出而丢失。主从复制主从复制是高可用Redis的基础,主要实现了数据的多机备份,以及对于读操作的负载均衡和简单的故障恢复哨兵在主从复制的基础上,......
  • eBPF 容器持久化map到宿主机上
    问题现象k8s上启动pod后,使用主机网络的容器,加载eBPF程序到网口上,持久化map只能保存在容器文件系统/sys/fs/bpf中。容器复位后,新容器与原来eBPF程序使用的不是同一个map。问题分析新容器使用新的文件系统,无法找回原来的/sys/fs/bpf挂载点,需要持久化到宿主机上。k8s挂载传播,实现......
  • 手写持久层框架------无需写sql语句即可完成对单表的CRUD操作。
    目的:巩固知识点技术栈:java+mysql+反射+自定义注解+泛型+jdbc持久层框架:与数据库交互的一层成为持久层。完成orm操作o(Object对象) r:(relative关系)  m:(mapping映射)。实体类---数据库表  属性---表的字段  实体类对象----一条记录  集合----表中多条记录手......
  • CoreDNS 概述及运维实践
     概述什么是DNS?域名系统(英语:DomainNameSystem,缩写:DNS)是互联网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。DNS使用TCP和UDP端口53。DNS不仅方便了人们访问不同的互联网服务,更为很多应用提供了,动态服务发现和全局负载均衡......
  • 君方智能设计平台-对象持久化技术方案
    1.背景介绍1.1序列化功能序列化是将复杂的图形对象、数据结构或对象转换成一种可被存储、传输或分享的格式的过程。这个格式通常是二进制或文本形式,能够轻松地保存在文件中或通过网络发送到其他应用程序。序列化的目的是将数据持久化,使其在不同时间和地点能够被还原为原始......