版本确定:

k8s 1.14
kubernetes python包: 10.0.1
pip install kubernetes

1 使用~/.kube/config文件,然后执行代码:

这种方式是使用配置文件的方式

  1. from kubernetes import client, config
  2. # Configs can be set in Configuration class directly or using helper utility
  3. config.load_kube_config()
  4. v1 = client.CoreV1Api()
  5. print("Listing pods with their IPs:")
  6. ret = v1.list_pod_for_all_namespaces(watch=False)
  7. for i in ret.items:
  8. print("%s\t%s\t%s" % (i.status.pod_ip, i.metadata.namespace, i.metadata.name))

2 使用基于RABC的访问控制

可以首先创建一个叫做admin-user的账号且绑定admin-cluster这个角色(注意第7行的三个破折号要写上)
配置文件:

  1. apiVersion: v1
  2. kind: ServiceAccount
  3. metadata:
  4. name: admin-user
  5. namespace: kube-system
  6. ---
  7. apiVersion: rbac.authorization.k8s.io/v1
  8. kind: ClusterRoleBinding
  9. metadata:
  10. name: admin-user
  11. roleRef:
  12. apiGroup: rbac.authorization.k8s.io
  13. kind: ClusterRole
  14. name: cluster-admin
  15. subjects:
  16. - kind: ServiceAccount
  17. name: admin-user
  18. namespace: kube-system

创建好了叫做admin-user账号且绑定cluset-admin角色之后就开始查询token

kubectl describe secret ** -n kube-system

代码:
在如下代码中6443就是apiserver的安全端口,非安全端口是8080

class ClientKubernetes(object):

    def __init__(self):
        """
        method one:   copy ~/.kube/config to local~/.kube then do the following

        config.load_kube_config()
        self.client = client.CoreV1Api()

        method two:  as you can see in below
        """
        ApiToken = "***"
        configuration = client.Configuration()
        setattr(configuration, 'verify_ssl', False)
        client.Configuration.set_default(configuration)
        configuration.host = "https://ip:6443"
        # configuration.verify_ssl = False
        # configuration.debug = True
        configuration.api_key = {"authorization": "Bearer " + ApiToken}
        client.Configuration.set_default(configuration)
        self.clientInstance = client.CoreV1Api(client.ApiClient(configuration))
        self.clientIngress = client.ExtensionsV1beta1Api()
        self.apis_api = client.AppsV1Api()

参考: https://blog.csdn.net/jinguangliu/article/details/89284287