10.5.3 生成DNS配置文件kubedns

kubedns文件用于让虚拟机或物理裸机上的应用能够解析Kubernetes集群的服务名称,然后被Sidecar劫持和转发。通过执行如下命令可以生成kubedns文件:


NS=istio-system
PILOT_IP=$(kubectl get -n $NS service istio-pilot-ilb -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
ISTIO_DNS=$(kubectl get -n kube-system service dns-ilb -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
MIXER_IP=$(kubectl get -n $NS service mixer-ilb -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
CITADEL_IP=$(kubectl get -n $NS service citadel-ilb -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
  
echo "server=/svc.cluster.local/$ISTIO_DNS" > kubedns
echo "address=/istio-policy/$MIXER_IP" >> kubedns
echo "address=/istio-telemetry/$MIXER_IP" >> kubedns
echo "address=/istio-pilot/$PILOT_IP" >> kubedns
echo "address=/istio-citadel/$CITADEL_IP" >> kubedns
echo "address=/istio-ca/$CITADEL_IP" >> kubedns 
echo "address=/istio-policy.$NS/$MIXER_IP" >> kubedns
echo "address=/istio-telemetry.$NS/$MIXER_IP" >> kubedns
echo "address=/istio-pilot.$NS/$PILOT_IP" >> kubedns
echo "address=/istio-citadel.$NS/$CITADEL_IP" >> kubedns
echo "address=/istio-ca.$NS/$CITADEL_IP" >> kubedns

生成的kubedns文件的示例如下:


server=/svc.cluster.local/39.97.196.106
address=/istio-policy/39.97.23.205
address=/istio-telemetry/39.97.23.205
address=/istio-pilot/101.201.178.108
address=/istio-citadel/39.97.196.108
address=/istio-ca/39.97.196.108
address=/istio-policy.istio-system/39.97.23.205
address=/istio-telemetry.istio-system/39.97.23.205
address=/istio-pilot.istio-system/101.201.178.108
address=/istio-citadel.istio-system/39.97.196.108
address=/istio-ca.istio-system/39.97.196.108