1

我正在尝试从 kubernetes 配置 php phabricator 示例,但在创建复制控制器之后。POD 从未处于就绪状态。它显示在以下状态:

NAME                           READY     STATUS             RESTARTS   AGE
phabricator-controller-z0nk3   0/1       CrashLoopBackOff   5          2m

以下是控制器 yaml:

{
  "kind": "ReplicationController",
  "apiVersion": "v1",
  "metadata": {
    "name": "phabricator-controller",
    "labels": {
      "name": "phabricator"
    }
  },
  "spec": {
    "replicas": 1,
    "selector": {
      "name": "phabricator"
    },
    "template": {
      "metadata": {
        "labels": {
          "name": "phabricator"
        }
      },
      "spec": {
        "containers": [
          {
            "name": "phabricator",
            "image": "fgrzadkowski/example-php-phabricator",
            "ports": [
              {
                "name": "http-server",
                "containerPort": 80
              }
            ]
          }
        ]
      }
    }
  }
}

有人可以建议我如何解决这个问题吗?

4

2 回答 2

4

这个 Pod 正在崩溃循环。您可以判断,因为重新启动的次数大于零。

kubectl describe pods <pod-name>

应提供更多详细信息以帮助调试。随心所欲

kubectl logs <pod-name>
于 2015-09-28T03:09:19.430 回答
0

实际上跟踪问题kubectl describe pods <pod-name>并且kubectl logs <pod-name>确实是跟踪问题的默认方式,不幸的是在我的情况下它没有帮助(起初。)所有日志都很好,或者至少没有给出错误或出现问题的线索。然而,Readiness 和 Liveness 探测显示该应用程序没有通过...

那么魔鬼藏在哪里呢?在我的情况下,增加 Readiness 和 Liveness 探针的“initialDelaySeconds”和/或“timeoutSeconds”的值就可以了。

我的第一个假设是应用程序没有足够的时间达到“就绪状态”。然而应用程序仍然没有准备好并且实际上失败了...... !!!但是!!! 扩展这些值会增加部署尝试时间,因此我能够访问更多日志。而我得到了什么???“由于超时,数据库连接尝试失败”。所以没有连接到数据库,应用程序实际上已经死了。棘手的时刻是 - 超时不会很快出现,您需要再等一下......至少“initialDelaySeconds”和/或“timeoutSeconds”的默认值无法给我所需的时间来查看“数据库连接超时”。

当防火墙规则设置为允许应用程序与数据库通信时,问题就消失了!

于 2022-01-31T16:24:51.873 回答