Kubernetes API 健康端点
Kubernetes API 服务器提供了 API 端点以指示 API 服务器的当前状态。本页描述了这些 API 端点并解释了如何使用它们。
健康检查 API 端点
Kubernetes API 服务器提供了 3 个 API 端点(healthz、livez 和 readyz)来指示 API 服务器的当前状态。healthz 端点已弃用(自 Kubernetes v1.16 起),你应该改用更具体的 livez 和 readyz 端点。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://: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://: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.34 [alpha]每个独立的健康检查都暴露一个 HTTP 端点,并且可以单独检查。独立健康检查的 schema 是 /livez/<healthcheck-name> 或 /readyz/<healthcheck-name>,其中 livez 和 readyz 可以分别用于指示你是否要检查 API 服务器的活跃度或就绪状态。<healthcheck-name> 路径可以使用上述 verbose 标志来发现,并取 [+] 和 ok 之间的路径。这些独立的健康检查不应被机器使用,但对于人工操作员调试系统可能很有帮助
curl -k https://:6443/livez/etcd