问题描述
我尝试在 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
网络策略可能会限制并阻止此类调用,但是,默认情况下,上述方法应该有效。