如何在 python3 kubernetes 客户端中加载 2 个(或更多)不同的 kubeconfig?

Lê *_*uân 1 python kubernetes

我在 2 个区域有 2 个 kubernetes 集群

2个kubeconfig文件分别是kube1.kubeconfigkube2.kubeconfig

我正在使用 python 使用 kubernetes-client python 调用 kubernetes 集群

我看到它将从 env KUBECONFIG加载配置

但我的程序需要将 API 推送到 2 个不同的集群

那么有没有办法解决这些问题:

示例代码:

if <condiation a>:
  (load kube1.kubeconfig)
  (process my code)
elif <condition b>:
  (load kube2.kubeconfig)
  (process my code)
Run Code Online (Sandbox Code Playgroud)

abd*_*sco 5

您可以kubeconfig使用new_client_from_config_dict函数从不同的客户端创建单独的客户端。这为您提供了 2 个独立的客户端,而无需全局加载配置:

def make_k8s_client(kubeconfig: dict) -> kubernetes.client.CoreV1Api:
    api_client = kubernetes.config.new_client_from_config_dict(kubeconfig)
    return kubernetes.client.CoreV1Api(api_client)
    
with open('kubeconfig.yaml') as f:
    kubeconfig = yaml.safe_load(f)

k8s_1 = make_k8s_client(kubeconfig)

# a different config

with open('kubeconfig2.yaml') as f:
    kubeconfig2 = yaml.load(f)

k8s_2 = make_k8s_client(kubeconfig2)
Run Code Online (Sandbox Code Playgroud)