K8S在开发测试环境落地问题处理之内网DNS解析
发表于:2025-02-23 作者:千家信息网编辑
千家信息网最后更新 2025年02月23日,相信很多朋友都已经在测试或者生产环境中使用K8S来解决自己的业务问题,以下是我们在测试环境落地的一些实践。我们把所有的Service、POD直接裸奔于开发以及测试人员(没有使用Ingress、node
千家信息网最后更新 2025年02月23日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安全错误
数据库的锁怎样保障安全
服务器四个网卡
音乐文献数据库
网络安全职业高中
数据库前20行降序排序
为什么网络安全会变得越来越好
焦作金蝶财务软件开发
自考软件开发工具知识点
百兆网口接千兆服务器
招聘网络技术高手
大连松下软件开发项目经理
微软免费e5服务器怎么样
技校网络技术类就业
软件开发最基本的资源
我的世界服务器测试小游戏
网络安全法治理层级
计算机软件开发学习多少钱
网络安全宣传字
竞记世界北京网络技术有限公司
怀化网络安全系统生产厂家
数据库新技术百度文库
网络技术第四章
客户端局域网连接数据库
数据库期末题库和答案
mysql修改数据库引擎
落实网络安全工作的报告
html怎么加密数据库
快速软件开发 京东
卓尼软件开发技术
安庆医院软件开发多少钱
浙江现代软件开发近期价格