【发布时间】:2021-10-23 13:24:22
【问题描述】:
剧情:
我正在开发一个我们有 PROD 和 ITG 设置的 kubernetes 环境。 ITG 设置具有多集群环境,而 PROD 设置是单集群环境。 我正在尝试使用 Python 自动化一些过程,我必须处理 kubeconfig 文件,并且我正在使用 kubernetes 库。
问题:
PROD 的 kubeconfig 文件具有可用的“current-context”键,但在 ITG 的 kubeconfig 文件中缺少。
prdconfig:
apiVersion: v1
clusters:
- cluster:
insecure-skip-tls-verify: true
server: https://cluster3.url.com:3600
name: cluster-ABC
contexts:
- context:
cluster: cluster-LMN
user: cluster-user
name: cluster-LMN-context
current-context: cluster-LMN-context
kind: Config
preferences: {}
users:
- name: cluster-user
user:
exec:
command: kubectl
apiVersion: <clientauth/version>
args:
- kubectl-custom-plugin
- authenticate
- https://cluster.url.com:8080
- --hpecp-user=user
- --hpecp-token=/api/v2/session/xxxx
- --hpecp-token-expiry=1000000000
- --force-reauth=false
- --insecure-skip-tls-verify=true
itgconfig:
apiVersion: v1
clusters:
- cluster:
insecure-skip-tls-verify: true
server: https://cluster1.url.com:3600
name: cluster-ABC
- cluster:
insecure-skip-tls-verify: true
server: https://cluster2.url.com:3601
name: cluster-XYZ
contexts:
- context:
cluster: cluster-ABC
user: cluster-user
name: cluster-ABC-context
- context:
cluster: cluster-XYZ
user: cluster-user
name: cluster-XYZ-context
kind: Config
preferences: {}
users:
- name: cluster-user
user:
exec:
command: kubectl
apiVersion: <clientauth/version>
args:
- kubectl-custom-plugin
- authenticate
- https://cluster.url.com:8080
- --hpecp-user=user
- --hpecp-token=/api/v2/session/xxxx
- --hpecp-token-expiry=1000000000
- --force-reauth=false
- --insecure-skip-tls-verify=true
当我尝试使用 config.load_kube_config(os.path.expanduser('~/.kube/prdconfig')) 为 PROD 加载 kubeconfig 文件时,它可以工作。
当我尝试使用 config.load_kube_config(os.path.expanduser('~/.kube/itgconfig')) 为 ITG 加载 kubeconfig 文件时,我收到以下错误:
ConfigException:无效的 kube-config 文件。预期键 C:\Users\chowdhsi/.kube/itgconfig 中的当前上下文
虽然从错误消息中可以清楚地看出它正在将 kubeconfig 文件视为 invalid,因为它没有“current-context”键。
子图:
使用 kubectl 时,缺少的“当前上下文”没有任何区别,因为我们始终可以在命令中指定上下文。但是 'load_kube_config()' 函数强制必须有“current-context”可用。
问题:
那么,“current-context”是 kubeconfig 文件中的强制键吗?
免责声明:
我对 Kubernetes 很陌生,使用它的经验很少。
【问题讨论】:
-
您好,"当使用 kubectl 时,缺少的 "current-context" 没有任何区别,因为我们总是可以在命令中指定上下文",另外请提供您的
itgconfig kubeconfig file的编辑输出 -
By, "在使用 kubectl 时,缺少的 "current-context" 没有任何区别,因为我们总是可以在命令中指定上下文",我的意思是我们总是可以像这样使用 kubectl 指定上下文:
kubectl config --kubeconfig=config-demo use-context dev-frontend -
所以看起来有区别 "current-context:" 将默认应用为必填字段,并且要将 kubeconfig 与多个上下文一起使用,您必须指定哪个您将使用的上下文 - 是的,您可以使用此命令在上下文之间切换,但使用的上下文包含重要信息,如何连接到 api 服务器、应使用哪些凭据,因此有必要将 kubectl 指向正确的上下文。
标签: kubernetes kubernetes-cluster kubeconfig