千家信息网

K8S在开发测试环境落地问题处理之内网DNS解析

发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,相信很多朋友都已经在测试或者生产环境中使用K8S来解决自己的业务问题,以下是我们在测试环境落地的一些实践。我们把所有的Service、POD直接裸奔于开发以及测试人员(没有使用Ingress、node
千家信息网最后更新 2025年12月02日K8S在开发测试环境落地问题处理之内网DNS解析

相信很多朋友都已经在测试或者生产环境中使用K8S来解决自己的业务问题,以下是我们在测试环境落地的一些实践。我们把所有的Service、POD直接裸奔于开发以及测试人员(没有使用Ingress、nodeport、LB,直接使用静态路由+NAT),这样我们的测试以及开发人员可直接访问SVC和POD,这个后期我们单独拿出来细讲。由于我们是移动端原生开发居多,因此大部分都需要借助WIFI+DNS服务器来完成我们APP的测试。但是内网站点多,服务多,需要经常维护DNS服务器,可不可以根据我们的Service自动去维护我们的DNS服务器呢。

思路:
1.获取K8S容器云中所有namespace下的所有Service,然后制定规则如所有的web服务以完整的域名作为服务名,比如我们的api.abc.com那么服务名就是api-abc-com,然后把kube-system过滤掉
2.根据上述获取到的namespace、域名、ClusterIP写入到对应文件夹下的DNS配置文件,如果存在则删除再增加,如果不存在则自动添加
3.将各个命名空间的DNS配置文件进行加载

#!/bin/bashns=$(kubectl get ns|awk 'NR!=1 && !/kube/ && !/istio/ && !/cattle-system/ && !/default/ && !/efk/ {print $1}')for namespace in $nsdo        [ -d $namespace ] || mkdir -p ${namespace}        [ -f ${namespace}/dns ] || touch ${namespace}/dns        svc=$(kubectl get svc -n$namespace|awk '/-/ && NR!=1 {print $1,$3}'|sed 's#-#.#g')        echo "$svc"|while read line        do                domain=`echo $line|awk '{print $1}'`                dns_record=`echo $line|awk '{print $1"="$2}'`                [ `grep ${dns_record} ${namespace}/dns|wc -l` ] && sed -i "/${domain}/d" ${namespace}/dns && echo ${dns_record}>>${namespace}/dns        done        names=`cat ${namespace}/dns | grep -v '^#|^//' | tr '\n' ','|sed 's/,$//g'`        sed "s#{namespace}#${namespace}#g" ~/yaml/dns/deploy.yaml | sed "s#{names}#${names}#g"|kubectl apply -f -done

查看DNS的deploy-svc.yaml

apiVersion: extensions/v1beta1kind: Deploymentmetadata:  name: dns  namespace: {namespace}spec:  selector:    matchLabels:      name: dns  replicas: 1  template:    metadata:      labels:        name: dns    spec:      containers:      - name: bind        image: cytopia/bind        ports:        - containerPort: 53          protocol: TCP          name: dnstcp        - containerPort: 53          protocol: UDP          name: dnsudp        env:        - name: EXTRA_HOSTS          value: "{names}"        - name: DNS_FORWARDER          value: "114.114.114.144,8.8.4.4"   #此处为外网的DNS服务器---apiVersion: v1kind: Servicemetadata:  name: dns  namespace: {namespace}  labels:    name: dnsspec:  ports:  - protocol: TCP    port: 53    targetPort: 53    name: dnstcp  - protocol: UDP    port: 53    targetPort: 53    name: dnsudp  selector:    name: dns
服务 测试 服务器 开发 文件 环境 人员 域名 配置 问题 落地 可不 业务 大部分 容器 就是 思路 文件夹 朋友 空间 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 茌平软件开发项目管理在线咨询 数据库防火墙测试 长沙软件开发实习生招聘 山西网络安全和信息化厅职责 图数据库支持sql吗 我的世界离线服务器登录不了 长城24小时网络安全知识问 南京招聘软件开发业务员 服务器挂机什么系统最好 加强网络安全防范值班 华为云服务器 安全 奉贤区软件开发质量保证 华润机电工程数据库 网络安全法主要规定哪些方面 怎么关闭服务器安全模式 计算机网络技术泛洪的概念 淄博华信网络技术有限公司 网络安全专家咨询委员会 和知网数据库一样的网站 锐思数据库怎么找无风险利率 北京gps守时模块服务器 mysql怎么开启本地数据库 网络安全战队logo 果家智能锁连不上服务器 只能进网络安全模式 网络安全宣传周的讲话 公安 新建查询创建数据库 什么时候数据库技术迅速发展 嘻嘻网络技术有限公司 代号探戈第五关证物数据库
0