python调用kubernetesAPI简单使用方法

作者:低调说 时间:2021-05-09 23:25:21 

前言:

K8s也提供API接口,提供这个接口的是管理节点的apiserver组件,apiserver服务负责提供HTTP API,以便用户、其他组件相互通信。客户端库

安装

pip install kubernetes -i https://pypi.douban.com/simple

k8s认证方式:

  • HTTPS 证书认证:基于CA证书签名的数字证书认证

  • HTTP Token认证:通过一个Token来识别用户

HTTPS证书认证(kubeconfig)

import os
from kubernetes import client, config
config.load_kube_config(file_path)  # 指定kubeconfig配置文件
apps_api = client.AppsV1Api()  # 资源接口类实例化

for dp in apps_api.list_deployment_for_all_namespaces().items:
    print(dp)

HTTP Token认证(ServiceAccount)

from kubernetes import client, config
configuration = client.Configuration()
configuration.host = "https://192.168.3.201:16443"  # APISERVER地址
configuration.ssl_ca_cert="ca.crt"  # CA证书 /etc/kubernetes/pki/ca.crt
configuration.verify_ssl = True   # 启用证书验证
configuration.api_key = {"authorization": "Bearer " + token}  # 指定Token字符串
client.Configuration.set_default(configuration)
apps_api = client.AppsV1Api() 

这2个认证,2选1

获取Token字符串:创建service account并绑定默认cluster-admin管理员集群角色:

创建用户:

$ kubectl create serviceaccount dashboard-admin -n kube-system

用户授权:

$ kubectl create clusterrolebinding dashboard-admin --clusterrole=cluster-admin --serviceaccount=kube-system:dashboard-admin

获取用户Token:

$ kubectl describe secrets -n kube-system $(kubectl -n kube-system get secret | awk ‘/dashboard-admin/{print $1}’)

其他常用资源接口类实例化:

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

举个例子

Deployment操作:

# 先得有上面的认证,下面的代码才行
# 创建
namespace = "default"
name = "api-test"
replicas = 3
labels = {'nginx':'true'}  # 不区分数据类型,都要加引号
image = "nginx"
body = client.V1Deployment(
            api_version="apps/v1",
            kind="Deployment",
            metadata=client.V1ObjectMeta(name=name),
            spec=client.V1DeploymentSpec(
                replicas=replicas,
                selector={'matchLabels': labels},
                template=client.V1PodTemplateSpec(
                    metadata=client.V1ObjectMeta(labels=labels),
                    spec=client.V1PodSpec(
                        containers=[client.V1Container(
                            name="web",
                            image=image
                        )]
                    )
                ),
            )
        )
try:
    apps_api.create_namespaced_deployment(namespace=namespace, body=body)
except Exception as e:
    status = getattr(e, "status")
    if status == 400:
        print(e)
        print("格式错误")
    elif status == 403:
        print("没权限")
# 删除
name = "api-test"
apps_api.delete_namespaced_deployment(namespace=namespace, name=name)

但其实这个API挺绕的 ,一个创建deployment的,这里N多的类的对象。

来源:https://blog.csdn.net/hans99812345/article/details/124851132

标签:python,调用,kubernetesAPI
0
投稿

猜你喜欢

  • MYSQL自定义函数判断是否正整数的实例代码

    2024-01-19 19:14:20
  • Python中的嵌套循环详情

    2022-10-29 05:53:54
  • 以一段代码为实例快速入门Python2.7

    2021-04-24 05:00:06
  • 在Linux命令行终端中使用python的简单方法(推荐)

    2021-10-27 23:29:21
  • scrapy自定义pipeline类实现将采集数据保存到mongodb的方法

    2021-03-20 02:55:59
  • Python文件操作实战案例之用户登录

    2023-07-12 18:03:37
  • 详解python中各种文件打开模式

    2023-08-30 09:10:30
  • MySql 随机取N条数据

    2009-03-17 12:46:00
  • 详解python logging日志传输

    2021-04-20 20:43:08
  • python入门jupyter基础操作及文本用法

    2022-02-13 21:56:29
  • 运行asp.net程序 报错:磁盘空间不足

    2011-11-03 17:16:22
  • Laravel操作session和cookie的教程详解

    2023-06-01 21:28:50
  • 解析Anaconda创建python虚拟环境的问题

    2023-08-01 03:58:13
  • python变量作用域与列表入门详解

    2022-09-05 05:58:27
  • Python startswith()和endswith() 方法原理解析

    2023-05-30 02:16:06
  • php 方便水印和缩略图的图形类

    2023-10-15 15:31:28
  • vue监听路由变化的几种方式小结

    2024-05-21 10:28:41
  • 今天 平安夜 Python 送你一顶圣诞帽 @微信官方

    2021-12-10 14:24:14
  • JS中如何优雅的使用async await详解

    2024-05-02 16:19:23
  • JS组件Form表单验证神器BootstrapValidator

    2024-05-10 14:08:59
  • asp之家 网络编程 m.aspxhome.com