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/bash
ns=$(kubectl get ns|awk 'NR!=1 && !/kube/ && !/istio/ && !/cattle-system/ && !/default/ && !/efk/ {print $1}')
for namespace in $ns
do
[ -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/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
另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
文章题目:K8S在开发测试环境落地问题处理之内网DNS解析-创新互联
文章地址:http://ybzwz.com/article/dpjhjj.html