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


猜你喜欢
- 1、plt.legendplt.legend(loc=0)#显示图例的位置,自适应方式说明:'best' :
- 一、mariadb与mysql简介1、mariadb简介MariaDB由MySQL的创始人Michael Widenius(英语:Micha
- 如下:re.split(pattern, string, [maxsplit], [flags])pattern:表示模式字符串,由要匹配的
- 本文给出了几个表单常用的js验证函数,有检查、\等特殊字符的,有检查是否含有空格,检查是否为Email 地址,也有检查是否是小数或负数的,检
- 目录1. DeepSource2. Codacy3. SonarQube4. Veracode5. Checkmarx6. Coverity
- 组件<template><div> <input id="upload_file&quo
- 前言最近项目中遇到用 SQL Server的程序,以前没用过这个数据库,于是尝试将其转换为 MySQL 的格式,可是不想在本地安装 SQL
- 最近对爬虫比较感兴趣,所以就学了一下,看人家都在网上爬取那么多美女图片养眼,我也迫不及待的试了一下,不多说,切入正题。其实爬取图片和你下载图
- 看到张宴的博客上关于"http/rest客户端的文章",怎样安装啥的直接都跳过,下面直接进入测试阶段,测试环境:虚拟机
- (1)、函数y = sin(x)(2)、数据准备#数据准备X=np.arange(-np.pi,np.pi,1) #定义样本点X,从-pi到
- 本文实例为大家分享了Android九宫格图片展示的具体代码,供大家参考,具体内容如下#!/usr/bin/env python# -*- c
- python的新式类是2.2版本引进来的,我们可以将之前的类叫做经典类或者旧式类。为什么要在2.2中引进new style class呢?官
- 用户体验已经是一个老生常谈的话题了。我非常赞同某位达人所说的,用户体验设计应该贯穿于产品从萌芽到出生的整个过程,产品原型、视觉设计、前端开发
- 1. 导入包我们这次的任务是随机生成一些离散的点,然后用直线(y = w *x + b )去拟合首先看一下我们需要导入的包有torch 包为
- 能够为数据库数据提供的最简单的用户界面之一就是窗体,窗体可以一次性呈现出来自同一记录的各个域。本文通过python3+pyqt5改写实现了p
- 测试代码:输出简单的ul li1.asp代码如下:<% response.write "<ul>" r
- pymysql 模块的使用一、pymysql的下载和使用(1)pymysql模块的下载pip3 install pymysql(2)pymy
- 不使用int()函数的情况下把字符串转换为数字,如把字符串"12345"转换为数字12345。方法一:利用str函数既然
- 本文研究的主要是Django rest framework的相关内容,分享了example,具体如下。Django REST框架是构建Web
- 使用云服务器时,我们有时会连接数据库,但在使用Navicat Premium15来连接时,总会遇到报错。常规连接方式,以腾讯云服务器中的My