Kubernetes API 健康端点

Kubernetes API 服务器 提供 API 端点以指示 API 服务器的当前状态。本页面描述了这些 API 端点,并解释了如何使用它们。

健康检查 API 端点

Kubernetes API 服务器提供了 3 个 API 端点(healthzlivezreadyz)来指示 API 服务器的当前状态。healthz 端点已被弃用(自 Kubernetes v1.16 起),你应该改用更具体的 livezreadyz 端点。livez 端点可以配合 --livez-grace-period 参数使用,用于指定启动持续时间。对于优雅关停,你可以配合 /readyz 端点使用 --shutdown-delay-duration 参数。检查 API 服务器 healthz/livez/readyz 的机器应依赖 HTTP 状态码。状态码 200 表示 API 服务器是 healthy/live/ready,具体取决于调用的端点。下面显示的更详细选项供人类操作员用于调试其集群或了解 API 服务器的状态。

以下示例将展示如何与健康检查 API 端点进行交互。

对于所有端点,你可以使用 verbose 参数打印出检查项及其状态。这对于人类操作员调试 API 服务器的当前状态很有用,不适合机器消费。

curl -k https://localhost:6443/livez?verbose

或从带有身份验证的远程主机访问。

kubectl get --raw='/readyz?verbose'

输出将如下所示

[+]ping ok
[+]log ok
[+]etcd ok
[+]poststarthook/start-kube-apiserver-admission-initializer ok
[+]poststarthook/generic-apiserver-start-informers ok
[+]poststarthook/start-apiextensions-informers ok
[+]poststarthook/start-apiextensions-controllers ok
[+]poststarthook/crd-informer-synced ok
[+]poststarthook/bootstrap-controller ok
[+]poststarthook/rbac/bootstrap-roles ok
[+]poststarthook/scheduling/bootstrap-system-priority-classes ok
[+]poststarthook/start-cluster-authentication-info-controller ok
[+]poststarthook/start-kube-aggregator-informers ok
[+]poststarthook/apiservice-registration-controller ok
[+]poststarthook/apiservice-status-available-controller ok
[+]poststarthook/kube-apiserver-autoregistration ok
[+]autoregister-completion ok
[+]poststarthook/apiservice-openapi-controller ok
healthz check passed

Kubernetes API 服务器还支持排除特定的检查项。查询参数也可以像本例中一样组合使用。

curl -k 'https://localhost:6443/readyz?verbose&exclude=etcd'

输出显示 etcd 检查项已被排除。

[+]ping ok
[+]log ok
[+]etcd excluded: ok
[+]poststarthook/start-kube-apiserver-admission-initializer ok
[+]poststarthook/generic-apiserver-start-informers ok
[+]poststarthook/start-apiextensions-informers ok
[+]poststarthook/start-apiextensions-controllers ok
[+]poststarthook/crd-informer-synced ok
[+]poststarthook/bootstrap-controller ok
[+]poststarthook/rbac/bootstrap-roles ok
[+]poststarthook/scheduling/bootstrap-system-priority-classes ok
[+]poststarthook/start-cluster-authentication-info-controller ok
[+]poststarthook/start-kube-aggregator-informers ok
[+]poststarthook/apiservice-registration-controller ok
[+]poststarthook/apiservice-status-available-controller ok
[+]poststarthook/kube-apiserver-autoregistration ok
[+]autoregister-completion ok
[+]poststarthook/apiservice-openapi-controller ok
[+]shutdown ok
healthz check passed

单个健康检查

功能状态: Kubernetes v1.33 [alpha]

每个单独的健康检查都暴露一个 HTTP 端点,可以单独检查。单独健康检查的模式是 /livez/<healthcheck-name>/readyz/<healthcheck-name>,其中 livezreadyz 分别用于指示你要检查 API 服务器的存活状态或就绪状态。<healthcheck-name> 路径可以通过上面提到的 verbose 参数发现,即提取 [+]ok 之间的路径。这些单独的健康检查不应供机器消费,但对人类操作员调试系统会有所帮助。

curl -k https://localhost:6443/livez/etcd
最后修改于 2023 年 12 月 21 日太平洋标准时间下午 4:58:[en] fix schema comemnt for health-checks doc (73ede84c98)