kubectl:它如何发现集群配置?
kubectl: how does it discover the incluster config?
当我在 pod 中 运行 kubectl
时,它默认为 "in-cluster config"(由 /var/run/secrets/kubernetes.io/serviceaccount
中的文件定义)。如果我想用 shell=False
将 kubectl
包装在对 Python 子进程的调用中,我该如何告诉 kubectl
在哪里可以找到集群内配置?
自从我 运行 shell=False
none 的环境使它成为子进程。看来我需要明确地将一些环境变量或其他系统状态传递给 kubectl
的子进程调用以发现集群内配置。
kubectl
如何发现这个配置?有几个简单的变量可以传递吗?
您将必须根据这些值手动构建 KUBECONFIG
,因为这或多或少正是 python client does anyway 的内容。简而言之,在 python 中或通过以下命令:
kubectl config set-cluster the-cluster --server="https://${KUBERNETES_SERVICE_HOST}:${KUBERNETES_SERVICE_PORT}" --certificate-authority=/var/run/secrets/kubernetes.io/serviceaccount/ca.crt
kubectl config set-credentials pod-token --token="$(cat /var/run/secrets/kubernetes.io/serviceaccount/token)"
kubectl config set-context pod-context --cluster=the-cluster --user=pod-token
kubectl config use-context pod-context
然后你就可以开始比赛了
当我在 pod 中 运行 kubectl
时,它默认为 "in-cluster config"(由 /var/run/secrets/kubernetes.io/serviceaccount
中的文件定义)。如果我想用 shell=False
将 kubectl
包装在对 Python 子进程的调用中,我该如何告诉 kubectl
在哪里可以找到集群内配置?
自从我 运行 shell=False
none 的环境使它成为子进程。看来我需要明确地将一些环境变量或其他系统状态传递给 kubectl
的子进程调用以发现集群内配置。
kubectl
如何发现这个配置?有几个简单的变量可以传递吗?
您将必须根据这些值手动构建 KUBECONFIG
,因为这或多或少正是 python client does anyway 的内容。简而言之,在 python 中或通过以下命令:
kubectl config set-cluster the-cluster --server="https://${KUBERNETES_SERVICE_HOST}:${KUBERNETES_SERVICE_PORT}" --certificate-authority=/var/run/secrets/kubernetes.io/serviceaccount/ca.crt
kubectl config set-credentials pod-token --token="$(cat /var/run/secrets/kubernetes.io/serviceaccount/token)"
kubectl config set-context pod-context --cluster=the-cluster --user=pod-token
kubectl config use-context pod-context
然后你就可以开始比赛了