python3 中使用 kubernetes模版操纵k8s集群

本文介绍kubernetes模块在k8s集群中的使用,其实就是将对kube-apiserver的http访问封装成python可用的对象。

详细文档参考官方链接:https://github.com/kubernetes-client/python

前置条件

k8s集群:docker-desktop v1.21.5
python3: Python 3.7.0

模块安装

pip3 install kubernetes

使用

公共依赖代码段

from kubernetes import client, config
config.kube_config.load_kube_config(config_file = '/Users/wangkaixuan/.kube/config')
v1 = client.CoreV1Api()

获取命名空间

for ns in self.v1.list_namespace().items:
    print(ns.metadata.name)

创建命名空间

namespace=test
ns = client.V1Namespace()
ns.metadata = client.V1ObjectMeta(name=namespace)
self.v1.create_namespace(body=ns)
print(f"{namespace} is created successfully")

获取svc

res = self.v1.list_service_for_all_namespaces(watch=False)
for re in res.items:
    #re.kind, re.metadata.namespace, re.metadata.name,    re.spec.cluster_ip, re.spec.ports) 
    #分别是svc的类型、所在的命名空间、svc名称、svc的clusterip和port
    print(re.metadata.name)

获取pod

res = self.v1.list_pod_for_all_namespaces(watch=False)
    for re in res.items:
    #print(re.status.pod_ip, re.metadata.namespace, re.metadata.name)
    #分别是pod的ip、pod所在的命名空间、pod的名称
    print(re.metadata.name)

代码文件如下

#!/usr/bin/python3
from kubernetes import client, config
class api_client():
    def __init__(self):
        self.config = "/Users/wangkaixuan/.kube/config" 
        self.all_ns = []
        self.svc = {}
        self.all_svc = []
        self.pod = {}
        self.all_pod = []
        self.client_config = config.kube_config.load_kube_config(config_file = self.config)
        self.v1 = client.CoreV1Api()

    def get_all_ns(self):
        for ns in self.v1.list_namespace().items:
            self.all_ns.append(ns.metadata.name)
        return  self.all_ns

    def create_ns(self,namespace):
        ns = client.V1Namespace()
        ns.metadata = client.V1ObjectMeta(name=namespace)
        self.v1.create_namespace(body=ns)
        print(f"{namespace} is created successfully")
    def get_all_svc(self):
        res = self.v1.list_service_for_all_namespaces(watch=False)
        for re in res.items:
            #re.kind, re.metadata.namespace, re.metadata.name, re.spec.cluster_ip, re.spec.ports)
            #SVC.append(re.metadata.name)
            self.svc[re.metadata.namespace] = re.metadata.name
            self.all_svc.append(self.svc)
            self.svc = {} 
        return self.all_svc 
        #print(SVC_list)

    def get_all_pod(self):
        res = self.v1.list_pod_for_all_namespaces(watch=False)
        for re in res.items:
            #print(i, re.status.pod_ip, re.metadata.namespace, re.metadata.name)
            self.pod[re.metadata.namespace] = re.metadata.name 
            self.all_pod.append(self.pod)
            self.pod = {}
        return self.all_pod

#实例化
clients = api_client()
#获取所有的命名空间
nS = clients.get_all_ns()
print(nS)
#创建命名空间
#clients.create_ns('wang')
#获取命名空间下的svc
service = clients.get_all_svc()
print(service)
#获取命名空间下的pod
pods = clients.get_all_pod()
print(pods)

其他常用方法:

https://github.com/kubernetes-client/python/blob/master/kubernetes/README.md
如获取deployment,使用AppsV1Api()。

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值