Kubernetes Python Client 初体验之node操作
今天讲一下k8s中对于各个实物节点node的操作。
首先是获取所有nodes信息:
self.config.kube_config.load_kube_config(config_file="kubeconfig.yaml")
print(self.coreApi.list_node())
函数返回的是一个名为kubernetes.client.models.v1_node_list.V1NodeList类型的数据,每个节点信息分别存储在其items属性中,items是一个List类型的数据。以此,编写了以下几个经常用到的node数据获取的API。
def get_all_nodes(self):
"""
:rtype: V1NodeList
"""
return self.coreApi.list_node()
def get_nodes_num(self):
"""
:rtype: int
"""
return len(self.get_all_nodes().items)
def get_all_nodes_name(self):
"""
:rtype: list
"""
names = []
for item in self.get_all_nodes().items:
names.append(item.metadata.name)
return names
def get_node_label_value(self, nodes, label):
"""
:type nodes: str
:type label: str
:rtype: str
"""
try:
i = self.get_all_nodes_name().index(nodes)
return self.get_all_nodes().items[i].metadata.labels[label]
except ValueError:
return None
如果需要其他不同的数据,可以自己打印get_all_nodes()的返回数据,然后定位,不外乎是数组和字典的形式。
Label是Kubernetes系统中的一个核心概念。Label以key/value键值对的形式附加到任何对象上,如Pod,Service,Node,RC(ReplicationController)/RS(ReplicaSet)等。Label可以在创建对象时就附加到对象上,也可以在对象创建后通过API进行额外添加或修改。
在对于pods的调度过程中,我们常常需要用到kubernetes的label功能,它分为nodes节点上的label和pod部署是YML文件中的label。当部署文件中选择器的label内容和node上的满足一定关系式,pods才能够被成功部署到该节点。
在上面提供的API中,我们已经能能够读取node的label值了,下面我们试着修改它。
AP如下:
def push_node_label_value(self, node, label, value):
"""
:type node: str
:type label: str
:type value: str
"""
body = {
"metadata": {
"labels": {
label: value
}
}
}
if node in self.get_all_nodes_name():
self.coreApi.patch_node(node, body)
else:
print("nods is not exist")
为了验证label是否已经真的被修改,我首先获取当前的节点label值。在master节点上执行以下命令:
kubectl get nodes --show-labels
取出其中node01的输出结果如下图:

执行函数:
push_node_label_value("node01", "hardwareType", "arm64")
之后重新查看label,得到下图

发现label成功被修改。
Kubernetes Python Client 初体验之node操作的更多相关文章
- Kubernetes Python Client 初体验之Deployment
Kubernetes官方推荐我们使用各种Controller来管理Pod的生命周期,今天写一个最常用的Deployment的操作例子. 首先是创建Deployment: with open(path. ...
- Kubernetes Python Client 初体验之安装授权
最近想做一个基于flask的云平台管理服务器,利用python调用kubenetes提供的API来实现云平台的操作.笔者使用的是Windows,kubernetes集群安装在Ubuntu和Respbi ...
- SSH初体验系列--Hibernate--2--crud操作
Ok,今天比较详细的学习一下hibernate的C(create).R(read).U(update).D(delete) 相关api... 前言 Session: 是Hibernate持久化操作的基 ...
- 聚合类新闻client初体验
初体验的产品:今日头条(ios3.6).百度新闻(ios4.4.0).ZAKER(ios4.4.5).鲜果(ios3.8.7).中搜搜悦(ios4.0.1).Flipboard(ios2.3.9) 1 ...
- python之初体验
1. Python简介: Python(英国发音:/ˈpaɪθən/ 美国发音:/ˈpaɪθɑːn/), 是一种面向对象.解释型计算机程序设计语言,由Guido van Rossum于1989年发明, ...
- pythonのdjango初体验
简单的一个列表展示,实现了增.删.插 1.通过新建项目来创建一个Django项目 2.通过pycharm中的Terminal来创建app ,命令如下: python manage.py start ...
- python 之初体验
python 关开python的介绍我这里就不解释了,这里贴出一个官方的介绍,供大家阅读 http://baike.baidu.com/link?url=U6LdVR-5RCI2TNsXzeALCcG ...
- 【学习博客】Python学习初体验
本周是正式开始学习Python的第一周.很久不写代码了,毕业第5年了,期间几乎没怎么动过手.这段时间比较规律.密集的学习又让我找回了当时的感觉,还不算陌生,我挺喜欢的这种能实实在在看到自己知识增长的状 ...
- python的初体验
最近由于毕业答辩,导致一些博客没有更新,见谅,今天我们开始一些新的内容 1.python的注释 单行注释:# 多行注释: ''' 这是多行注释 我们可以在里面写很多很多的行 ''' 2.编码风格 #c ...
随机推荐
- Electron 的断点续下载
最近用 Electron 做了个壁纸程序,需要断点续下载,在这里记录一下. HTTP断点下载相关的报文 Accept-Ranges 告诉客户端服务器是否支持断点续传,服务器返回 Content-Ran ...
- 五:request和response的使用
接着上一篇我们在搞完servlet的终极模式之后,接着就需要对发送的请求做出响应了 在这里,所谓的响应,都是返回页面的语言在浏览器上显示也就是HTML语言,所以返回的结果只有HTML语言才能在浏览器上 ...
- 如何替换Ceph的Journal
很多人会提出这样的问题: 能不能够将 Ceph journal 分区从一个磁盘替换到另一个磁盘? 怎样替换 Ceph 的 journal 分区? 有两种方法来修改Ceph的journal: 创建一个j ...
- 基于gin的golang web开发:集成swagger
在前后端分离的项目维护一份完整且及时更新的api文档会极大的提高我们的工作效率,传统项目中接口文档都是由后端开发手写的,这种文档很难保证及时性,久而久之便失去了参考意义.swagger给我们提供了一种 ...
- 使用CleanMyMac快速管理应用程序 优化Mac
CleanMyMac作为一款专业的苹果电脑清理软件,它不仅仅能单纯的卸载不用.少用的应用,同时还支持:1.清理应用程序的数据文件,将应用重置回初始状态,减少空间占用:2.自动检查应用更新,保持应用的最 ...
- 细说FL Studio中的Wasp合成器功能
FL Studio 简称FL,因其Logo像水果,故国人亲切的叫他"水果"本章节采用图文结合的方式给大家讲解FL Studio中的Wasp合成器功能.感兴趣的朋友可以一起来交流哦. ...
- 巧妙运用Camtasia制作爱豆的动感影集
对于追星族来说,收集爱豆的图片.视频是日常必做的事情,而对于进阶型的追星族来说,为爱豆自制各种精美的视频.影集等,会让自己追星之路显得更为充实. 我们可以借助Camtasia教程录制软件为爱豆制作各种 ...
- guitar pro系列教程(十九):Guitar Pro添加音符之前我们要做什么?
前面的章节我们已经讲了不少关于{cms_selflink page='index' text='Guitar Pro'}的功能之类的讲解,那一般我们在打谱之前要做的是什么呢,很多新手玩家,对这方面也是 ...
- MindManager中主题间距/线条粗细的灵活调整
在MindManager中,主题和线条是思维导图的基本元素,只有通过它们才能将要表达的思想呈现.并联系起来.因此,关于它们的属性设置就会多一点,如颜色.宽度.位置等.而调整主题之间的距离及线条的粗细, ...
- mock模拟接口返回数据
mock,是python中模拟接口返回数据 1.安装 pip install mock import unittest from mock import Mock def add(a,b): pass ...