我们在k8s和非k8s中运行服务。非k8s服务在Consul注册。我们正在考虑在我们的堆栈中添加istio,理想情况下,我们希望k8s服务调用非k8s服务。所以,我对此几乎没有问题
1)Pilot的单个实例是否支持查询k8和consul?
2)可以配置为支持这样的环境吗?
我尝试阅读istio文档,但无法找到Pilot是否可以配置为同时查询consul和k8s。文档/博客的参考链接也很有用。提前致谢!
答案 0 :(得分:0)
从Kubernetes v1.6开始, kube-dns 支持使用外部解析程序配置custom dns zones(例如.consul.local
),以及外部DNS服务器用于向"其他区域提供请求“。
要使用此功能,应正确配置两件事:
将dnsPolicy设置为“ClusterFirst”后,首先会发送DNS查询 kube-dns中的DNS缓存层。从这里开始,后缀为 检查请求,然后转发到相应的DNS。在这 例如,发送具有集群后缀的名称(例如“.cluster.local”) 到kube-dns。具有存根域后缀的名称(例如;“。acme.local”) 将被发送到配置的自定义解析程序。最后,请求 不匹配任何这些后缀将被转发到上游 DNS。
以下是为区域.consul.local
和自定义上游服务添加自定义地图的示例。
apiVersion: v1
kind: ConfigMap
metadata:
name: kube-dns
namespace: kube-system
data:
stubDomains: |
{“consul.local”: [“10.150.0.1”]}
upstreamNameservers: |
["8.8.8.8", "8.8.4.4"]
要应用此配置,请将其保存到文件kube-dns-consul-stubdomain.yml
并运行命令(根据需要调整区域名称和服务器IP):
kubectl create -f kube-dns-consul-stubdomain.yml
这是使用dnsPolicy
进行pod配置的示例apiVersion: v1
kind: Pod
metadata:
name: busybox
namespace: default
spec:
containers:
- image: busybox
command:
- sleep
- "3600"
imagePullPolicy: IfNotPresent
name: busybox
restartPolicy: Always
hostNetwork: true
dnsPolicy: ClusterFirst
您可以找到这些资源,这有助于了解私有DNS区域功能的详细信息: