K8S在开发测试环境落地问题处理之内网DNS解析
2018-10-28 22:07
806 查看
相信很多朋友都已经在测试或者生产环境中使用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/bash svc=$(kubectl get svc --all-namespaces|awk '/-/ && NR!=1 && !/kube-system/ {print $1,$2,$4}'|sed 's#-#.#g') echo "$svc"|while read line do namespace=`echo $line|awk '{print $1}'` [ -d $namespace ] || mkdir -p ${namespace} [ -f ${namespace}/dns ] || touch ${namespace}/dns domain=`echo $line|awk '{print $2}'` dns_record=`echo $line|awk '{print $2"="$3}'` [ `grep ${dns_record} ${namespace}/dns|wc -l` ] && sed -i "/${domain}/d" ${namespace}/dns && echo ${dns_record}>>${namespace}/dns 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/v1beta1 kind: Deployment metadata: 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: v1 kind: Service metadata: name: dns namespace: {namespace} labels: name: dns spec: ports: - protocol: TCP port: 53 targetPort: 53 name: dnstcp - protocol: UDP port: 53 targetPort: 53 name: dnsudp selector: name: dns
相关文章推荐
- ArcGIS API for javascript开发笔记(二)——解决ArcGIS Service中的服务在内网环境下无法进行javascript预览问题
- windows7上面安装opencv python开发环境,并处理cv2.VideoCapture()打不开视频文件的问题
- 开发和测试环境应用任务日志丢失问题
- 开发人员处理生产环境系统问题经验之谈
- vmare Ubuntu 下Hadoop 开发环境搭建eclipse win10 远程连接 安装与问题处理
- ArcGIS API for javascript开发笔记(二)——解决ArcGIS Service中的服务在内网环境下无法进行javascript预览问题
- Java开发环境配置(2)--jdk配置和 多个JDK问题处理
- 利用 webpack 处理开发与线上环境静态资源切换问题
- EasyNVR流媒体直播开发时VS2010环境中ffmpeg av_register_all崩溃问题处理
- react 开发 PC 端项目(一)项目环境搭建 及 处理 IE8 兼容问题
- vue利用axios处理开发环境和生成环境的跨域问题
- 关于OPhone开发环境下重装ADT后无法找到库文件和无法启动模拟器的问题处理
- 使用OSS JavaScript的sdk进行web端直传,开发环境下测试没有问题,但部署到服务器上或者打包到IOS原生包中出现了问题。
- Windows7系统下Netbeans+PHPUnit搭建PHP单元测试开发环境及PHPUnit-Code-Coverage问题处理
- QT学习——QT命令行开发环境搭建的几个问题以及处理
- maven(多个模块)项目 部署 开发环境 问题处理历程【异常Name jdbc is not bound in this Context 异常java.lang.NoSuchMethodE】
- 奇怪的svn问题 内网开发环境经常报500错误,要重新建svn库才好
- Hadoop+OpenCV的集群化图像处理开发环境建设与测试研究
- 如何处理asp.net的webapi项目的测试环境与生产环境的help页面可见/不可见问题。
- Delphi xe10 安卓开发环境配置问题处理1