首页 > 解决方案 > 使用 python 客户端访问 Kubernetes 集群

问题描述

我有我的 kubernetes 集群,它部署在云中,我有一个本地代理,我应该使用它来从我的桌面连接我的 k8s 集群。通过运行代理,我可以毫无问题地使用 kubectl 访问我的集群。现在我想看看我是否可以单独使用 python 客户端实用程序来消除 kubectl 命令行实用程序。

因此,在我的第一个要求中,我消除了 kubectl,并且可以使用以下代码访问我的集群。问题是,我的访问令牌仅在 15 分钟内有效,发布后我必须使用 kubectl 运行我的代理才能在我的 kubeconfig 文件中更新我的刷新令牌,这样我就可以在接下来的 15 分钟内使用它。

所以我的问题并寻求一些建议,1.有什么方法可以通过使用 kubernetes python 客户端和本地代理来完全消除 kubectl。2. 如何自动获取刷新的令牌,这样我就不必每 15 分钟运行一次代理。

任何想法/文档/示例表示赞赏。

   from kubernetes import client, config

   def main():
     try:
        #config.load_kube_config('kubeconfig',persist_config=True)
        config.load_kube_config('kubeconfig')
        kube_host = config.kube_config.Configuration._default.host+":443"
        kube_api_key = config.kube_config.Configuration._default.api_key
        aConfiguration = client.Configuration()

        # Specify the endpoint of your Kube cluster
        aConfiguration.host = kube_host

        aConfiguration.verify_ssl = False
        aConfiguration.api_key = kube_api_key
        aApiClient = client.ApiClient(aConfiguration)

        # Do calls
        v1 = client.CoreV1Api(aApiClient)
        api_response = v1.list_namespaced_pod('default')
        print(api_response)
    except Exception as e:
        print("Exception when calling CoreV1Api->list_namespaced_pod: %s\n" % e)


     if __name__ == '__main__':
          main()

标签: pythonkuberneteskubectl

解决方案


这是答案:https ://stackoverflow.com/a/48377444/5936468

您可以创建一个服务帐户并将其令牌用于身份验证


推荐阅读