python3使用api操作k8s集群内容
- kubeconfig文件认证
from kubernetes import client, config
config.kube_config.load_kube_config(config_file="/root/.kube/config")
- 常用API
core_api = client.CoreV1Api()
apps_api = client.AppsV1Api()
networking_api = client.NetworkingV1beta1Api()
storage_api = client.StorageV1Api()
- 验证
from kubernetes import config, client
class K8s:
def __init__(self):
config.load_kube_config("pre.kubeconfig")
self.core_api = client.CoreV1Api()
self.apps_api = client.AppsV1Api()
def get_ns_list(self):
ns_info = []
for ns in self.core_api.list_namespace().items:
ns_info.append(ns.metadata.name)
print(ns_info)
def get_pv(self):
pv_list = []
for pv in self.core_api.list_persistent_volume().items:
pv_list.append(pv.metadata.name)
print(pv.metadata.name)
def get_pod_logs(self, pod_name, ns_name="default"):
pod_logs = self.core_api.read_namespaced_pod_log(namespace=ns_name, name=pod_name)
print(pod_logs)
def scale_deploy_replicas(self, deploy_name, ns_name="default", replicas_new=1):
old_resp = self.apps_api.read_namespaced_deployment(name=deploy_name, namespace=ns_name)
old_resp.spec.replicas = replicas_new
res = self.apps_api.replace_namespaced_deployment(name=deploy_name, namespace=ns_name, body=old_resp)
if res:
return 0
- 调用
if __name__ == '__main__':
k8s_client = K8s()
k8s_client.get_ns_list()
k8s_client.get_pv()
k8s_client.get_pod_logs(pod_name="nginx1-b97c459f7-x4pz8")
k8s_client.scale_deploy_replicas(deploy_name="nginx1", replicas_new=1)