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
果家智能锁连不上服务器
只能进网络安全模式
网络安全宣传周的讲话 公安
新建查询创建数据库
什么时候数据库技术迅速发展
嘻嘻网络技术有限公司
代号探戈第五关证物数据库