python调用kubernetesAPI简单使用方法

前言:

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多的类的对象。

到此这篇关于python调用kubernetesAPI简单使用方法的文章就介绍到这了,更多相关python调用kubernetesAPI 内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • python3 kubernetes api的使用示例

    一.安装 github:https://github.com/kubernetes-client/python 安装 pip install kubernetes 二.认证 1.kubeconfig文件认证 首先引入SDK支持库.然后将 ~/.kube 的config文件的内容复制到本地目录,保存为文件kubeconfig.yaml,然后运行下面的python代码. [root@k8s-m ~]# cp .kube/config kubeconfig.yaml #使用 from kubernet

  • Python使用Kubernetes API访问集群

    通过将身份认证令牌直接传给 API 服务器,可以避免使用 kubectl 代理,像这样: 使用 grep/cut 方式: # 查看所有的集群,因为你的 .kubeconfig 文件中可能包含多个上下文 kubectl config view -o jsonpath='{"Cluster name\tServer\n"}{range .clusters[*]}{.name}{"\t"}{.cluster.server}{"\n"}{end}' #

  • python调用kubernetesAPI简单使用方法

    前言: 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 kuber

  • Python调用C语言的方法【基于ctypes模块】

    本文实例讲述了Python调用C语言的方法.分享给大家供大家参考,具体如下: Python中的ctypes模块可能是Python调用C方法中最简单的一种.ctypes模块提供了和C语言兼容的数据类型和函数来加载dll文件,因此在调用时不需对源文件做任何的修改.也正是如此奠定了这种方法的简单性. 示例如下 实现两数求和的C代码,保存为add.c //sample C file to add 2 numbers - int and floats #include <stdio.h> int add

  • docker-py 用Python调用Docker接口的方法

    官方文档:[https://docker-py.readthedocs.io/en/stable/images.html] 众所周知,Docker向外界提供了一个API来管理其中的资源.这个API可以是socket文件形式的(一般也是默认的,在/var/run/docker.sock中),也可以是TCP形式的.以前想要通过编程的方法来调用这些API还是傻傻的用subprocess等和系统层面交互的模块来调用,而docker-py这个模块则是直接把DockerAPI的调用封装了进去,让我们可以更加

  • python调用私有属性的方法总结

    当我们定义一个类的时候,有时候会定义一个私有属性来辅助开发.在其它语言中经常会用到 private 来修饰这个属性为私有属性.可是你知道么?同样为私有属性,有的开发语言中是真私有属性,有的是假私有属性. 例如 :在 OC 开发过程中出现的私有属性就是假私有属性,通过 runtime 可以很方便拿到私有属性并进行修改.同出师门,swift 中的私有属性就是真私有属性,通常需要 private 来修饰. 那么在 python 开发中,我们如何来定义一个私有属性呢?作为约定俗成,我们通常在属性的前面加

  • Python调用JavaScript代码的方法

    准备阶段: 以一段简单的JS脚本为例,将代码写入到文件中,其中,定义了一个方法,计算两个数的和. //norm.js //计算两个数的和 function add(num1, num2) {    return num1 + num2; } 方法一.PyExecJS PyExecJS 是使用最多的一种方式,底层实现方式是:在本地 JS 环境下运行 JS 代码支持的 JS 环境包含:Node.js.PyV8.PhantomJS.Nashorn 等 首先,我们需要安装依赖包 PyExecJS //p

  • python调用bash shell脚本方法

    目录 1. os.system() 1.1. demo 2. os.popen() 2.1 demo 3. commands模块 4. subprocess 4.1 demo 1. os.system() help(os.system) 1.1. demo os.system(command):该方法在调用完shell脚本后,返回一个16位的二进制数, 低位为杀死所调用脚本的信号号码,高位为脚本的退出状态码, 即脚本中exit 1的代码执行后,os.system函数返回值的高位数则是1,如果低位

  • Python有序字典简单实现方法示例

    本文实例讲述了Python有序字典简单实现方法.分享给大家供大家参考,具体如下: 代码: # -*- coding: UTF-8 -*- import collections print 'Regular dictionary:' d = {} d['a'] = 'A' d['b'] = 'B' d['c'] = 'C' for k, v in d.items(): print k, v print '\nOrderedDict:' d = collections.OrderedDict() d

  • Python操作MySQL简单实现方法

    本文实例讲述了Python操作MySQL简单实现方法.分享给大家供大家参考.具体分析如下: 一.安装: 安装MySQL 安装MySQL不用多说了,下载下来安装就是,没有特别需要注意的地方. 一个下载地址:点击打开链接 二.示例: 复制代码 代码如下: # coding=utf-8 import MySQLdb   #查询数量 def Count(cur):    count=cur.execute('select * from Student')    print 'there has %s r

  • Python文本处理简单易懂方法解析

    这篇文章主要介绍了Python文本处理简单易懂方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 自从认识了python这门语言,所有的事情好像变得容易了,作为小白,逗汁儿今天就为大家总结一下python的文本处理的一些小方法. 话不多说,代码撸起来. python大小写字符互换 在进行大小写互换时,常用到的方法有4种,upper().lower().capitalize() 和title(). str = "www.dataCASTLE.

  • 3种python调用其他脚本的方法

    1.用python调用python脚本 #!/usr/local/bin/python3.7 import time import os count = 0 str = ('python b.py') result1 = os.system(str) print(result1) while True: count = count + 1 if count == 8: print('this count is:',count) break else: time.sleep(1) print('t

随机推荐