kubectl 从 pod 中获取节点NetworkPolicy

问题描述

我尝试在 POD 内使用 Python kubectl to get nodes 运行。 我应该如何为此 Pod 设置网络策略?

我尝试将我的命名空间连接到 kube-system 命名空间,但它不起作用。

谢谢。

解决方法

根据Accessing the API from a Pod

在 pod 中定位 apiserver 的推荐方法是使用 kubernetes.default.svc DNS 名称,解析为服务 IP 依次将路由到 apiserver。

向 apiserver 进行身份验证的推荐方法是使用服务 account credential。通过 kube-system,一个 pod 与一个服务帐户相关联,并且该服务帐户的凭证(令牌)被放入该 pod 中每个容器的文件系统树中,位于 /var/run/secrets/kubernetes.io/serviceaccount/token

您只需要一个具有足够权限的服务帐户,并使用如上所述的 API 服务器 DNS 名称。示例:

# Export the token value
export TOKEN=$(cat /var/run/secrets/kubernetes.io/serviceaccount/token)

# Use kubectl to talk internally with the API server
kubectl --insecure-skip-tls-verify=true  \
--server="https://kubernetes.default.svc:443" \
--token="${TOKEN}"                \
get nodes

网络策略可能会限制并阻止此类调用,但是,默认情况下,上述方法应该有效。