Python3调用k8s api

python3使用api操作k8s集群内容

  1. kubeconfig文件认证
from kubernetes import client, config
config.kube_config.load_kube_config(config_file="/root/.kube/config")
  1. 常用API
core_api = client.CoreV1Api()  		# namespace,pod,service,pv,pvc
apps_api = client.AppsV1Api()  		# deployment
networking_api = client.NetworkingV1beta1Api()  # ingress
storage_api = client.StorageV1Api()  			# storage_class
  1. 验证
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()

    # 获取ns列表
    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)

    # 获取pv列表
    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)
        # for pv in pv_list:
        #     print(pv)

    # 获取pod日志
    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)

    # 修改deployment副本数
    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
  1. 调用
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)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值