Kubernetes:缓慢的 DNS

标签 kubernetes

我有一个 Kubernetes 集群,它是使用 AWS 中的 kube-up.sh 脚本初始化的,当从另一个 pod 中查找一项服务时,偶尔会出现非常慢的 DNS 查找。这是基本图片:

    (browser)
        |
        V
      (ELB)
        |
        V
(front-end service)
        |
        V
  (front-end pod)
        |
        V
 (back-end service)
        |
        V
  (back-end pod)
        |
        V
    (database)

我在前端和后端级别安装了计时日志记录,它们的数量对于某些请求 大相径庭。偶尔我们会看到一个请求,FE nginx 日志记录说需要 8.3 秒,但后端 gunicorn 进程说需要 30 毫秒。

根据 this blog post 中的示例,我可以exec 进入 FE pod 并对后端端点执行 curl 以获取计时数据,它看起来像这样:

        time_namelookup:  3.513
           time_connect:  3.513
        time_appconnect:  0.000
       time_pretransfer:  3.513
          time_redirect:  0.000
     time_starttransfer:  3.520
                        ----------
             time_total:  3.520

所以缓慢似乎来自 DNS。我们为暂存设置了一个单独的集群,这种事情似乎并没有发生在那里,所以我不确定该怎么做。大多数请求在合理的时间内发生,不到 50 毫秒,但每十分之一左右的请求需要几秒才能解决。

我找到了 this thread这听起来像是 SkyDNS 对 etcd 的使用可能是问题所在,但我不确定如何验证或修复它。而且这种情况发生得方式太频繁了,不可能定期丢失配置值(我们的流量不是那么高)。

最佳答案

此处修复了一个错误 (https://github.com/kubernetes/kubernetes/pull/13345),该错误已被证明会在 Kubernetes 集群 1.0.5 及更早版本中导致此问题。该问题已在 1.0.6 release 中修复.

关于Kubernetes:缓慢的 DNS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32614729/

相关文章:

azure - 使用托管标识将 Azure Key Vault 与 Azure Kubernetes 服务集成

google-compute-engine - 来自容器引擎上Kubernetes的Google Compute Engine VM的DNS和路由

ssl - 确保 Kubernetes Engine 证书的兼容性

postgresql - 如何使用 Docker/Kubernetes 为 PostgreSQL 故障转移集群建模?

apache-spark - 通过 Airflow 调度在 Kubernetes 上运行的 Spark 作业

vagrant - 输出 : mount. nfs:不支持请求的 NFS 版本或传输协议(protocol)

redis - 连接到 Kubernetes Redis 服务时出现 Connection Refused 错误

docker - 无法安装到Kubernetes中的NFS Pod

kubernetes - Kubernetes local/csi PV 内容是否同步到新节点?

kubernetes - k3d 负载均衡器类型的服务没有外部 IP