首页 > 解决方案 > 我正在尝试在 Aws eks 集群上部署 microsoft 流体框架,但 pod 进入 CrashLoopBackOff

问题描述

当我获得其中一个具有 CrashLoopBackOff 状态的 pod 的日志时

kubectl logs alfred

它返回以下错误。

error: alfred service exiting due to error {"label":"winston","timestamp":"2021-11-08T07:02:02.324Z"}
    at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:66:26) {
  errno: 'ENOTFOUND',
  code: 'ENOTFOUND',
  syscall: 'getaddrinfo',
  hostname: 'mongodb'
} {"label":"winston","timestamp":"2021-11-08T07:02:02.326Z"}
error: Client Manager Redis Error: getaddrinfo ENOTFOUND redis {"errno":"ENOTFOUND","code":"ENOTFOUND","syscall":"getaddrinfo","hostname":"redis","stack":"Error: getaddrinfo ENOTFOUND redis\n    at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:66:26)","label":"winston","timestamp":"2021-11-08T07:02:02.368Z"}

我是 Kubernetes 和 Aws Eks 的新手。期待提供帮助。谢谢

标签: dockerkubernetesmicroservicesamazon-eksfluid-framework

解决方案


如果您在 getaddrinfo 看到错误,它是一个用于解析 dns 名称并连接外部服务的程序/函数。它正在尝试访问一个 redis 集群。好像您的 EKS 集群没有连接。

但是,如果您将 redis 作为 EKS 集群的一部分运行,请确保在应用程序代码中提供/更新 kubernetes 服务 dns,或者将其设置为可以在部署之前设置的环境变量。

它的 redis 和 mongodb,也正如错误所说,您将主机名作为 redis 和 mongodb 提供,除非您将其映射到 /etc/hosts 文件中,否则它不会解析为 IP 地址,这实际上是不真实的。

提供正确的主机名,Pod 就会出现。这是根本原因。


推荐阅读