可以将一个导频实例配置为查询k8和consul吗?

时间:2018-05-20 21:24:11

标签: kubernetes microservices consul istio

我们在k8s和非k8s中运行服务。非k8s服务在Consul注册。我们正在考虑在我们的堆栈中添加istio,理想情况下,我们希望k8s服务调用非k8s服务。所以,我对此几乎没有问题

1)Pilot的单个实例是否支持查询k8和consul?
2)可以配置为支持这样的环境吗?

我尝试阅读istio文档,但无法找到Pilot是否可以配置为同时查询consul和k8s。文档/博客的参考链接也很有用。提前致谢!

1 个答案:

答案 0 :(得分:0)

从Kubernetes v1.6开始, kube-dns 支持使用外部解析程序配置custom dns zones(例如.consul.local),以及外部DNS服务器用于向"其他区域提供请求“。

要使用此功能,应正确配置两件事:

  1. 将自定义区域添加到kube-dns ConfigMap
  2. 将广告连播dnsPolicy设置为ClusterFirst值
    (搜索详细信息" Pod的DNS策略"链接文档)
  3.   

    将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区域功能的详细信息: