istio如何使用dns proxy

背景

istio dns proxy可以用于提升dns解析性能和可用性

介绍

cni模式(无需设置CAPTURE_ALL_DNS)

  1. istiod设置PILOT_ENABLE_IP_AUTOALLOCATE: "true"环境变量
  2. 开启dns proxy
    针对全局,设置istiod configmap中的proxyMetadata,添加
        ISTIO_META_DNS_CAPTURE: "true"
针对部分,设置pod注解,添加
  annotations:
    proxy.istio.io/config: |
      proxyMetadata:
        ISTIO_META_DNS_CAPTURE: "true"

非cni模式

  1. istiod设置PILOT_ENABLE_IP_AUTOALLOCATE: "true"环境变量
  2. 开启dns proxy
    针对全局,设置istiod configmap中的proxyMetadata,添加
        CAPTURE_ALL_DNS: "true"
        ISTIO_META_DNS_CAPTURE: "true"
针对部分,设置pod注解,添加
  annotations:
    proxy.istio.io/config: |
      proxyMetadata:
        CAPTURE_ALL_DNS: "true"
        ISTIO_META_DNS_CAPTURE: "true"

补充

为什么不使用ISTIO_META_DNS_AUTO_ALLOCATE

ISTIO_META_DNS_AUTO_ALLOCATE分配serviceentry的address不稳定,需要改为设置istiod的PILOT_ENABLE_IP_AUTOALLOCATE

如果需要创建serviceentry

  1. serviceentry放在一个没有pod的namespace中,设置exportTo: '.'
  2. 等待erviceentry分配出status.addresses,修改exportTo: '*'

原因:
controller 给serviceentry分配status.addresses是有时间窗口的,如果直接将serviceentry exportTo给其他pod,可能会引入流量路由问题

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容