我可以从 kube-proxy pod 查询 kube-apiserver 吗?
Can I query kube-apiserver from kube-proxy pod?
我无法直接访问 kube-apiserver pod,但我可以访问 kube-proxy pod。我可以 运行 curl https://localhost:6443/healthz
作为对 kube-apiserver
或其他东西的健康探测吗?
所有 Pods 都可以访问 API 服务器:这是由安装在 /var/run/secrets/kubernetes.io/serviceaccount/token
中的服务帐户密码授予的。
Before proceeding, you have to ensure your Pod is allowed to reach the API Server, thus not blocked by a NetworkPolicy: this requirement hasn't been declared on your question, so giving this is not the case.
所述令牌用于对 API 服务器执行操作,例如对受 RBAC 保护的资源执行 CRUD 操作。
如果您只需要检查 API 服务器的健康状况,您可以使用 /var/run/secrets/kubernetes.io/serviceaccount/ca.pem
中安装的 CA public 证书卷曲 API 服务器和环境变量 KUBERNETES_SERVICE_HOST
已经在运行时注入到 Pod 中,指向 API 服务器以及 KUBERNETES_SERVICE_PORT
,尽管 443 应该是默认值。
例子
# kubectl run -it --image curlimages/curl curl --command -- sh
If you don't see a command prompt, try pressing enter.
/ $ env | grep -i kubernetes
KUBERNETES_SERVICE_PORT=443
KUBERNETES_PORT=tcp://10.96.0.1:443
KUBERNETES_PORT_443_TCP_ADDR=10.96.0.1
KUBERNETES_PORT_443_TCP_PORT=443
KUBERNETES_PORT_443_TCP_PROTO=tcp
KUBERNETES_SERVICE_PORT_HTTPS=443
KUBERNETES_PORT_443_TCP=tcp://10.96.0.1:443
KUBERNETES_SERVICE_HOST=10.96.0.1
/ $ curl --cacert /var/run/secrets/kubernetes.io/serviceaccount/ca.crt https://$KUBERNETES_SERVICE_HOST:$KUBERNETES_SERVICE_PORT/api
-H "Authorization: Bearer $(cat /var/run/secrets/kubernetes.io/serviceaccount/token)"
{
"kind": "APIVersions",
"versions": [
"v1"
],
"serverAddressByClientCIDRs": [
{
"clientCIDR": "0.0.0.0/0",
"serverAddress": "172.20.0.2:6443"
}
]
}
我无法直接访问 kube-apiserver pod,但我可以访问 kube-proxy pod。我可以 运行 curl https://localhost:6443/healthz
作为对 kube-apiserver
或其他东西的健康探测吗?
所有 Pods 都可以访问 API 服务器:这是由安装在 /var/run/secrets/kubernetes.io/serviceaccount/token
中的服务帐户密码授予的。
Before proceeding, you have to ensure your Pod is allowed to reach the API Server, thus not blocked by a NetworkPolicy: this requirement hasn't been declared on your question, so giving this is not the case.
所述令牌用于对 API 服务器执行操作,例如对受 RBAC 保护的资源执行 CRUD 操作。
如果您只需要检查 API 服务器的健康状况,您可以使用 /var/run/secrets/kubernetes.io/serviceaccount/ca.pem
中安装的 CA public 证书卷曲 API 服务器和环境变量 KUBERNETES_SERVICE_HOST
已经在运行时注入到 Pod 中,指向 API 服务器以及 KUBERNETES_SERVICE_PORT
,尽管 443 应该是默认值。
例子
# kubectl run -it --image curlimages/curl curl --command -- sh
If you don't see a command prompt, try pressing enter.
/ $ env | grep -i kubernetes
KUBERNETES_SERVICE_PORT=443
KUBERNETES_PORT=tcp://10.96.0.1:443
KUBERNETES_PORT_443_TCP_ADDR=10.96.0.1
KUBERNETES_PORT_443_TCP_PORT=443
KUBERNETES_PORT_443_TCP_PROTO=tcp
KUBERNETES_SERVICE_PORT_HTTPS=443
KUBERNETES_PORT_443_TCP=tcp://10.96.0.1:443
KUBERNETES_SERVICE_HOST=10.96.0.1
/ $ curl --cacert /var/run/secrets/kubernetes.io/serviceaccount/ca.crt https://$KUBERNETES_SERVICE_HOST:$KUBERNETES_SERVICE_PORT/api
-H "Authorization: Bearer $(cat /var/run/secrets/kubernetes.io/serviceaccount/token)"
{
"kind": "APIVersions",
"versions": [
"v1"
],
"serverAddressByClientCIDRs": [
{
"clientCIDR": "0.0.0.0/0",
"serverAddress": "172.20.0.2:6443"
}
]
}