营销网站分为哪几种,网站中文名,dreamwearver做网站地图,wordpress怎样搭建外贸网站CoreDNS 作为 Kubernetes 集群的域名解析组件#xff0c;如果性能不够可能会影响业务#xff0c;本文介绍几种 CoreDNS 的性能优化手段。合理控制 CoreDNS 副本数考虑以下几种方式:根据集群规模预估 coredns 需要的副本数#xff0c;直接调整 coredns deployment 的副本数:k…CoreDNS 作为 Kubernetes 集群的域名解析组件如果性能不够可能会影响业务本文介绍几种 CoreDNS 的性能优化手段。合理控制 CoreDNS 副本数考虑以下几种方式:根据集群规模预估 coredns 需要的副本数直接调整 coredns deployment 的副本数:kubectl -n kube-system scale --replicas10 deployment/coredns为 coredns 定义 HPA 自动扩缩容。安装 cluster-proportional-autoscaler 以实现更精确的扩缩容(推荐)。禁用 ipv6如果 K8S 节点没有禁用 IPV6 的话容器内进程请求 coredns 时的默认行为是同时发起 IPV4 和 IPV6 解析而通常我们只需要用到 IPV4当容器请求某个域名时coredns 解析不到 IPV6 记录就会 forward 到 upstream 去解析如果到 upstream 需要经过较长时间(比如跨公网跨机房专线)就会拖慢整个解析流程的速度业务层面就会感知 DNS 解析慢。CoreDNS 有一个 template 的插件可以用它来禁用 IPV6 的解析只需要给 CoreDNS 加上如下的配置:template ANY AAAA {rcode NXDOMAIN
}这个配置的含义是给所有 IPV6 的解析请求都响应空记录即无此域名的 IPV6 记录。优化 ndots默认情况下Kubernetes 集群中的域名解析往往需要经过多次请求才能解析到。查看 pod 内 的 /etc/resolv.conf 可以知道 ndots 选项默认为 5:意思是: 如果域名中 . 的数量小于 5就依次遍历 search 中的后缀并拼接上进行 DNS 查询。举个例子在 debug 命名空间查询 kubernetes.default.svc.cluster.local 这个 service:域名中有 4 个 .小于 5尝试拼接上第一个 search 进行查询即 kubernetes.default.svc.cluster.local.debug.svc.cluster.local查不到该域名。继续尝试 kubernetes.default.svc.cluster.local.svc.cluster.local查不到该域名。继续尝试 kubernetes.default.svc.cluster.local.cluster.local仍然查不到该域名。尝试不加后缀即 kubernetes.default.svc.cluster.local查询成功返回响应的 ClusterIP。可以看到一个简单的 service 域名解析需要经过 4 轮解析才能成功集群中充斥着大量无用的 DNS 请求。怎么办呢我们可以设置较小的 ndots在 Pod 的 dnsConfig 中可以设置:然后业务发请求时尽量将 service 域名拼完整这样就不会经过 search 拼接造成大量多余的 DNS 请求。不过这样会比较麻烦有没有更好的办法呢有的请看下面的 autopath 方式。启用 autopath启用 CoreDNS 的 autopath 插件可以避免每次域名解析经过多次请求才能解析到原理是 CoreDNS 智能识别拼接过 search 的 DNS 解析直接响应 CNAME 并附上相应的 ClusterIP一步到位可以极大减少集群内 DNS 请求数量。启用方法是修改 CoreDNS 配置:kubectl -n kube-system edit configmap coredns修改红框中圈出来的配置:加上 autopath kubernetes。默认的 pods insecure 改成 pods verified。需要注意的是启用 autopath 后由于 coredns 需要 watch 所有的 pod会增加 coredns 的内存消耗根据情况适当调节 coredns 的 memory request 和 limit。部署 NodeLocal DNSCache参考 k8s 官方文档 Using NodeLocal DNSCache in Kubernetes clusters如果是使用 TKE 并且 kube-proxy 转发模式为 iptables可以直接在扩展组件中安装此扩展组件扩展组件说明请参考 TKE 官方文档如果使用的 ipvs 模式可以参考 TKE IPVS 模式安装 localdns。使用 DNSAutoscaler社区有开源的 cluster-proportional-autoscaler 可以根据集群规模自动扩缩容支持比较灵活的扩缩容算法。如果使用的是 TKE已经将其产品化成 DNSAutoscaler 扩展组件在扩展组件中直接安装即可组件说明请参考 TKE 官方文档。