该功能主要针对 高并发 dns 解析的应用,防止在高并发 dns 解析时出现性能瓶颈,不存在 dns 解析问题的应用,理论上不应该使用该功能。
该功能的实现主要依靠 pod sidecar 能力,在容器组中,增加一个 dns 容器,供 pod 中其他容器进行 dns 解析并缓存一段时间解析结果。
进入 应用发布-部署配置-编辑/新建
?,配置 sidecar dns 功能
?默认 禁用
?,选择 启用
?后,需要配置 缓存时长
? 以及 健康检查端口
。
缓存时长:dns 解析结果缓存的时间,一般配置为 30s 即可。
将康检查端口:由于该容器与其他业务容器在同一个 pod,所有容器的共享 pod 端口,因此要避免与其他容器使用的端口产生冲突。
对于 yaml 格式配置的应用,可以通过注解的方式启用 SidecarDns,注解配置示例如下:
apiVersion: apps/v1beta2 kind: Deployment metadata: name: vk-cos-use labels: app: cos spec: selector: matchLabels: app: cos template: metadata: annotations: annotation.jst.com/sidecar-dns-enable: 'on' # 必填 annotation.jst.com/sidecar-dns-request: 0.1-50 annotation.jst.com/sidecar-dns-limit: 0.5-170 annotation.jst.com/sidecar-dns-health-port: 9095 annotation.jst.com/sidecar-dns-cache-duration: 30 labels: app: cos spec: containers: - name: u1 image: "registry-vpc.cn-beijing.aliyuncs.com/lxx/cos-4g"
一共有以下5个相关注解:
annotation.jst.com/sidecar-dns-enable annotation.jst.com/sidecar-dns-request annotation.jst.com/sidecar-dns-limit annotation.jst.com/sidecar-dns-health-port annotation.jst.com/sidecar-dns-cache-duration
如果需要使用 sidecardns,该注解必须填写,且值需为 "on",表示启用 sidecardns 功能。
用于配置 sidecardns 的资源规格请求值,配置方式为 "{cpu}-{memory}",单位为C与M,非必填,默认值为 "0.1-50",表示 0.1C 50M。
用于配置 sidecardns 的资源规格限制值,配置方式为 "{cpu}-{memory}",单位为 C 与 M,非必填,默认值为 "0.5-170",表示 0.5C 170M。
用于配置 sidecardns 容器服务的健康检查端口,一般情况下不与 容器组 内其他容器端口冲突即可,非必填,默认值 9095。
用于配置 dns 解析记录缓存时长,单位 秒,非必填,默认值 30。
目前 dns 容器资源限制方式为共享模式,在资源大小为 0.1C50M 的情况下,可提供 1000+ QPS。
该 sidecar 容器一旦出现宕机,会导致 pod 重启。该问题发生概率极低,并且影响范围为单个 pod。