一,背景
因为k8s集群以及web服务测试,每次使用/etc/hosts配置或者写ip都不太好,所以决定搭建dns服务器做域名解析,后期可以做k8s-kube-dns的父dns服务器。
二,搭建
1. 服务器
dnsserver 192.168.89.128
2. 安装dns软件包
yum -y install bind bind-chroot bind-utils
3. 修改dns配置
vim /etc/named.conf
options {
/*此处改成any*/
listen-on port 53 { any; };
listen-on-v6 port 53 { ::1; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
recursing-file "/var/named/data/named.recursing";
secroots-file "/var/named/data/named.secroots";
/*此处改成any*/
allow-query { any; };
recursion yes;
dnssec-enable yes;
dnssec-validation yes;
/* Path to ISC DLV key */
bindkeys-file "/etc/named.root.key";
managed-keys-directory "/var/named/dynamic";
pid-file "/run/named/named.pid";
session-keyfile "/run/named/session.key";
};
logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
};
zone "." IN {
type hint;
file "named.ca";
};
/*此zone做测试域名解析使用*/
zone "ktz.com" IN {
type master;
file "ktz.com.zone";
};
/*此zone做web网站域名解析使用*/
zone "web.com" IN {
type master;
file "web.com.zone";
};
/*此zone做k8s集群域名解析使用*/
zone "k8s.com" IN {
type master;
file "k8s.com.zone";
};
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
cp -a /var/named/named.localhost /var/named/ktz.com.zone
cp -a /var/named/named.localhost /var/named/web.com.zone
cp -a /var/named/named.localhost /var/named/k8s.com.zone
$TTL 1D
@ IN SOA @ k8s.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS @
A 192.168.89.132
k8smaster A 192.168.89.132
k8snode01 A 192.168.89.133
k8snode02 A 192.168.89.134
4. 重启并开机自启,配置/etc/resolv.conf
systemctl restart named
systemctl enabled named
vim /etc/resolv.conf(修改相关服务器dns)
nameserver 192.168.89.128
5. 测试验证
k8smaster:
yum -y install bind-utils(提供nslookup命令做域名解析)
nslookup k8snode01.k8s.com
Server: 192.168.89.128
Address: 192.168.89.128#53
Name: k8snode01.k8s.com
Address: 192.168.89.133
可以正确的解析到对应的服务器,操作完成
三, 启动k8s集群服务/kube-dns,并关联本地dns服务器
1. 启动k8s集群服务, 并查看状态
k8smaster
systemctl restart docker kube-controller-manager kube-scheduler kube-apiserver
k8snode01
systemctl restart docker flanneld kubelet kube-proxy
k8snode02
systemctl restart docker flanneld kubelet kube-proxy
k8smaster
kubectl get pods -n kube-system
NAME READY STATUS RESTARTS AGE
kube-dns-85bdb85857-bjvbf 3/3 Running 0 43s
kube-dns服务仍然在正常运行
2. 将kube-dns与本地dns服务器关联
1). 测试一下kube-dns
kubectl run busybox --image=192.168.89.132:5000/busybox --command -- sleep 3600
deployment.apps/busybox created
kubectl get pods
NAME READY STATUS RESTARTS AGE
busybox-54584f87db-4prnh 1/1 Running 0 23s
kubectl get svc
mysql-service NodePort 169.169.188.11 <none> 3306:64298/TCP 12d
kubectl exec -it busybox-54584f87db-4prnh -- nslookup mysql-service
Server: 169.169.0.10
Address: 169.169.0.10:53
Name: mysql-service.default.svc.k8s.com
Address: 169.169.188.11
*** Can't find mysql-service.svc.k8s.com: No answer
*** Can't find mysql-service.k8s.com: No answer
*** Can't find mysql-service.localdomain: No answer
*** Can't find mysql-service.default.svc.k8s.com: No answer
*** Can't find mysql-service.svc.k8s.com: No answer
*** Can't find mysql-service.k8s.com: No answer
*** Can't find mysql-service.localdomain: No answer
kubectl exec busybox-54584f87db-4prnh -- ping kubernetes.default.svc.k8s.com
PING kubernetes.default.svc.k8s.com (169.169.0.1): 56 data bytes
64 bytes from 169.169.0.1: seq=0 ttl=64 time=0.028 ms
kubectl exec -it busybox-54584f87db-4prnh /bin/sh
cat /etc/resolv.conf
nameserver 169.169.0.10
search default.svc.k8s.com svc.k8s.com k8s.com localdomain
options ndots:5
可知集群dns的ip地址未169.169.0.10
ping www.baidu.com
PING www.baidu.com (112.80.248.75): 56 data bytes
64 bytes from 112.80.248.75: seq=0 ttl=127 time=2.616 ms
ping k8smaster.k8s.com
ping: bad address 'k8smaster.k8s.com'
ping公网的可以,ping本地的一个服务不行,则需要关联本地dns
2). 将本地dns服务器配置成kube-dns上游dns服务器
a. 修改 kube-dns.yaml文件中ConfigMap部分, 添加了data部分
apiVersion: v1
kind: ConfigMap
metadata:
name: kube-dns
namespace: kube-system
labels:
addonmanager.kubernetes.io/mode: EnsureExists
data:
# 配置上游dns服务器
upstreamNameservers: |
["192.168.89.128"]
b. 删除之前的kube-dns,重新创建
kubectl delete -f kube-dns.yaml
kubectl get pods -n kube-system
kubectl create -f kube-dns.yaml
kubectl get pods -n kube-system
NAME READY STATUS RESTARTS AGE
kube-dns-85bdb85857-z62nj 3/3 Running 0 9s
c. 验证
kubectl exec -it busybox-54584f87db-d97qk /bin/sh
ping k8smaster.web.com 无效 ,可以说明配置上游dns服务器无效。
继续修改kube-dns.yaml
vim kube-dns.yaml
---
apiVersion: v1
kind: ConfigMap
metadata:
name: kube-dns
namespace: kube-system
labels:
addonmanager.kubernetes.io/mode: EnsureExists
data:
stubDomains: |
{"web.com": ["192.168.89.128"]}
---
kubectl exec -it busybox-54584f87db-d97qk /bin/sh
ping todolist.web.com
PING todolist.web.com (192.168.89.132): 56 data bytes
64 bytes from 192.168.89.132: seq=0 ttl=63 time=0.234 ms
可以ping通,测试通过,可以和k8s集群外的本地服务通信了
四, 总结
使用本地域名前缀ktz.com进行验证
vim /var/named/ktz.com.zone
$TTL 1D
@ IN SOA @ ktz.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS @
A 192.168.89.133
www A 192.168.89.133
systemctl restart named
kubectl exec -it busybox-54584f87db-d97qk /bin/sh
ping www.ktz.com
PING www.ktz.com (192.168.89.133): 56 data bytes
64 bytes from 192.168.89.133: seq=0 ttl=64 time=0.037 ms
当本地再新加服务,需要域名解析,且服务不在k8s集群中,但是集群中要使用时,则只需要配置本地域名解析即可。
相关推荐
K8s(一):Kubernetes的有关概述
🔴 K8s(一):Kubernetes的有关概述
kubeproxy和service dns整体原理
ClusterIP方式访问的入口链;:NodePort方式访问的入口链;KUBE-SVC-*:相当于一个负载均衡器,将数据包平均分发给KUBE-SEP-*链;KUBE-SEP-*:通过DNAT将Service的目的IP和端口,替换为后端Pod的IP和端口,从而将流量转发到后端Pod。:通过对路由到其他节点的数据包进行SNAT,使其能够原路返回。对于NodePort类型的service,如果本节点上没有目的Pod,则本节点起到的是网关的作用,将数据路由到其他节点。在这种情况下,
【云计算•云原生】4.云原生之什么是Kubernetes
微服务上线时根据不同服务需要有一些可变配置,为了实现对微服务各个节点的灵活配置,k8s内置支持微服务的配置configmap,将配置信息写入configmap,然后configmap以环境变量的方式注入到pod中,pod中的容器可以访问这些配置。这样两层可以实现POD 在集群之间的网络连接。kubelet: 与master节点上API server交互,负责管理worker节点上的组件,运行在集群中每个节点node上。一个工作节点可以有多个 pod,主节点会考量负载自动调度 pod 到哪个节点运行。
学练结合,快速掌握Kubernetes Service
今天这篇文章里我们来讲一下里的对象。其实前面的文章《Kubernetes初体验--部署运行Go项目》里我们已经与有过一次短暂接触了,在那篇文章里我说用对象部署完应用后还需要向外界暴露入口才能通过HTTP访问到集群里的应用,当时使用的是这样一条命令,其实就是创建的对象: 那么在这篇文章里我们就来聊一下:什么是对象,在里它是干什么用的;里怎么发现;如何创建和使用;nodePort,port,targetPort都是啥;文章前面半部分理论知识多一点,稍显枯燥,后半部分会用一个实践练习给之前用部署好的应用们加上
【云计算•云原生】7.play with kubernetes在线实验环境
play with kubernetes网站链接每次登录提供4小时在线实验环境,最多可以开5个节点。
小红书x-mini签名逆向实战:Frida动态Hook与算法还原
在移动App协议分析中,请求签名机制是保障接口安全的核心技术,其本质是客户端对请求参数、时间戳、设备指纹等要素进行加密认证的过程。理解签名原理需掌握Native层加密流程、JNI调用机制及密钥动态派生逻辑。Frida作为主流动态插桩工具,能绕过符号剥离、字符串加密和控制流混淆等反分析手段,在函数执行瞬间捕获寄存器状态、内存数据与调用上下文,实现签名算法的完整还原。该技术广泛应用于合规内容监测、API自动化调用与竞品协议研究等工程场景。本文聚焦小红书x-mini签名这一典型样本,详解从JNI_OnLoad定位
CoreDNS:Kubernetes内部域名解析原理、弊端及优化方式
Kubernetes 中的 DNS 本篇主要尽可能详尽的说明 Kubernetes 的DNS解析原理,以及 Kubernetes 集群中 DNS 解析目前存在的弊端和优化方式。 在 Kubernetes 中,服务发现有几种方式: ①:基于环境变量的方式 ②:基于内部域名的方式 基本上,使用环境变量的方式很少,主要还是使用内部域名这种服务发现的方式。 其中,基于内部域名的方式,涉及到 Kubernetes 内部域名的解析,而 kubedns,是 Kubernetes 官方的 DNS 解析组件。从 1.
从Microchip SDK到STM32实战:手把手教你移植LAN9252 EtherCAT从站驱动(含EEPROM配置避坑)
本文详细介绍了如何将Microchip SDK中的LAN9252 EtherCAT从站驱动移植到STM32F407平台,包括FSMC接口配置、中断处理适配和EEPROM配置等关键步骤。通过实战指南和避坑技巧,帮助开发者快速实现高性能EtherCAT从站设备的开发,适用于工业自动化领域。
kubernetes使用组件具体介绍
1. kubernetes介绍 1.1. kubernetes介绍 kubernetes是一种开源的容器编排工具,通过调度系统维持用户预期数量和状态的容器正常运行。kubernetes提供的功能: 服务发现和负载均衡:Kubernetes 可以使用 DNS 名称或自己的 IP 地址公开容器,如果到容器的流量很大,Kubernetes 可以负载均衡并分配网络流量,从而使部署稳定。 存储编排 Kubernetes 允许您自动挂载您选择的存储系统,例如本地存储、公共云提供商等 自动部署和回滚 您可以使用
MQTT(一)C#使用 MQTTnet 快速实现 MQTT 通信(文末有完整Demo下载)
目录 MQTT(一)C#使用 MQTTnet 快速实现 MQTT 通信(文末有完整Demo下载) MQTT(二)在windows64位上安装Python环境 MQTT(三)Python客户端+net客户端+net服务端 简单通信 MQTT(四)树莓派开机自动运行Python客户端 MQTT(五)EMQ开源MQTT消息服务器 1 什么是 MQTT ? MQTT(Message Que...
AI 技术新手入门与实战指南
仅仅能对话还不够,实际应用中,我们往往需要让 AI 处理特定的业务数据。比如,从日志文件中提取错误码,或者将非结构化的用户反馈整理成 JSON 格式。这时候,自定义输入和严格的结果验证就显得尤为重要。假设我们需要让 AI 分析一段服务器日志,并只返回错误的级别和简述。请分析以下日志片段,提取所有 ERROR 级别的信息。要求输出格式为 JSON 列表,包含 'timestamp' 和 'message' 两个字段。不要输出任何多余的解释文字。日志内容: {
Kubernetes K8S之kube-prometheus概述与部署
Kubernetes K8S之kube-prometheus概述与部署
Mac---安装Navicat
把这个填充好的字符串放入刚才打开的RSA在线加解密的网站中的第二个框框(替换之前的请求码),第一个框框不动(还是之前第10步骤中的私钥),点击RSA私钥加密,这时会得到一个加密的字符串,这个就是激活码。{“K”:“你的K值”, “N”:“52pojie”, “O”:“52pojie.cn”, “DI”:“你的DI值”, “T”:你的时间戳}链接: https://pan.baidu.com/s/1mEVY4hnKdktg-p7DBIfD7A 提取码: twwg。Navicat会弹出一个对话框,点击“注册”
K8S 部署 CoreDNS 之 DNS 域名获取
CoreDNS 是 Kubernetes 默认的 DNS 服务器,负责集群内域名解析服务。它支持 Service 发现、Pod 域名解析、外部域名转发等功能,并提供负载均衡。不同 Kubernetes 版本对应不同 CoreDNS 版本,从 1.18.x 的 1.6.5 到最新 1.35.x 的 1.13.1,逐步支持 EndpointSlice 等新特性。部署时需从官方源码获取对应版本的 yaml 配置文件,包含 ServiceAccount、ClusterRole 等权限配置,确保 CoreDNS 能正
2024年最新双摄像头的实时视频拼接及目标跟踪(一)_监控视频拼接实时(1),网络相关+C C++三方库的源码分析+数据结构与算法
opencv中采用了SURF,ORB进行特征点提取,如果装的是opencv2.0版本,则可以直接用SURF,如果是3.0版本,则需要下载相应的contrib库进行安装。原理不赘述,给出其实验结果对比和分析,原始图像1SURF特征点提取网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。需要这份系统化的资料的朋友,可以添加戳这里获取一个人可以走的很快,但一群人才能走的更远!
高项备考论文:规划绩效域
高项备考论文:规划绩效域
Kubernetes(K8s)技术深度解析与实战案例
K8s以其强大的容器编排和管理能力,已经成为当今云原生应用和微服务架构的首选平台。通过本文的深入探讨和实战案例,我们可以看到K8s在运维中的强大功能和便利性。它不仅简化了应用的部署和管理流程,还提供了丰富的监控和日志收集功能,帮助我们更好地了解应用的运行状态和性能表现。未来,随着K8s生态的不断发展和完善,我们相信它将在企业运维中发挥更加重要的作用。无论是大型互联网公司还是初创企业,都可以通过K8s来实现高效、可靠、可扩展的容器化应用管理。
IP-Guard分类管理详解
大家都知道在配置IPGUARD策略前需要做分类库进行设置和分类。 1、应用程序:可以分类,例如上班时间只能用OFFICE和WPS,记事本等办公软件,可以在分类里设置一个类 ;办公软件,在未分类里找到OFFICE,WPS等拖入心建的分类里就可以在配置策略里调用。 2、网站分类也不一样,可以按照自己方式自定义。也可以导入厂家已经收集到的网站分类。 3、邮箱分类:可以提前定义好一个或...
k8s clusterip 方式service负载均衡实现三种方式及原理
kube-proxy当前实现了三种代理模式: userspace代理模式:v1.0及之前版本的默认模式,来回在用户空间和内核空间切换,存在严重的性能问题,不推荐。 iptables代理模式:从v1.1版本中开始增加了iptables mode,在v1.2版本中正式替代userspace模式成为默认模式。将k8s整个集群的service和endpoints路由都写到iptables中,当service数量较大时,同样存在严重的性能问题,且负载均衡能力比较简单,不推荐。 IPVS代理模式:v1.9之后引入,通
Probability and Statistics - 4th edition
Probability and Statistics - 4th edition
复分析 阿尔福斯(Ahlfors) 第三版答案 英文
答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案
K8s(Kubernetes)内容分享(一):K8s(Kubernetes) 介绍
容器运行时是 Kubernetes 中用于运行容器的底层组件,它负责将容器镜像转换为可以运行的进程,并提供容器的隔离、资源管理和网络管理等功能。同时,Kubernetes 还提供了一系列的资源管理机制,如资源调度、容器网络、存储编排等,控制整个容器集群的运行状态,并保证应用程序在容器集群中的高可用性和可靠性。Scheduler 是 Kubernetes 集群中的另一个重要组件,主要负责根据集群中各个节点的负载情况,以及用户的调度策略,将新创建的 Pod 分配到合适的节点上。
lwip-2.0.3
lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。
K8s 概念相关
如有需要可以参考前文。目前已经拥有了3台Ubantu虚拟机,已经具备了下一步安装部署K8s的环境,但是汤师爷说过:步子迈大了,容易扯着蛋。所以本期,先来学学K8s的理论基础。
Kube-OVN:基于OVN的开源Kubernetes网络实践
戳蓝字“优快云云计算”关注我们哦!技术头条:干货、简洁、多维全面。更多云计算精华知识尽在眼前,get要点、solve难题,统统不在话下!今天,许多企业开始运行Kub...
Kubernetes 服务发布基础
在云计算和微服务架构盛行的今天,Kubernetes(K8s)已成为容器编排的事实标准。当我们在Kubernetes中部署应用后,如何将服务稳定地暴露给外部访问,是构建可扩展微服务架构的关键环节。本文将深入解析Kubernetes中Service的核心概念、工作原理及各类实践场景,帮助你掌握服务发布的核心技术。Service 是Kubernetes中的核心抽象资源,它为一组Pod提供了稳定的网络访问地址,屏蔽了后端Pod的动态变化,实现了服务的负载均衡、服务发现和服务暴露功能。
Kubernetes (K8s) 入门指南
以上就是关于RocketMQ的一些常见用法介绍。作为一个高效的消息队列系统,掌握其基本操作对于构建可靠的消息传递平台至关重要。希望这篇博客能够帮助你更好地理解和使用RocketMQ。如果你有任何疑问或者建议,欢迎留言交流!
K8S入门系列(一):Kubernetes的历史(由来)与架构
转载:K8S历史与架构 摘要: 环境不一致使得应用部署出现了各种问题,从而产生了Docker容器来解决应用部署的问题。而大集群上容器的部署、伸缩和管理的各种问题,衍生出来了容器编排引擎,比较出名的有K8S(Kubernetes) 和 Docker Swarm。 Kubernetes是一个针对容器应用,进行自动部署,弹性伸缩和管理的开源系统。主要功能是生产环境的容器编排。 K...
3万+



被折叠的 条评论
为什么被折叠?



