今天讲一下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操作的更多相关文章

  1. Kubernetes Python Client 初体验之Deployment

    Kubernetes官方推荐我们使用各种Controller来管理Pod的生命周期,今天写一个最常用的Deployment的操作例子. 首先是创建Deployment: with open(path. ...

  2. Kubernetes Python Client 初体验之安装授权

    最近想做一个基于flask的云平台管理服务器,利用python调用kubenetes提供的API来实现云平台的操作.笔者使用的是Windows,kubernetes集群安装在Ubuntu和Respbi ...

  3. SSH初体验系列--Hibernate--2--crud操作

    Ok,今天比较详细的学习一下hibernate的C(create).R(read).U(update).D(delete) 相关api... 前言 Session: 是Hibernate持久化操作的基 ...

  4. 聚合类新闻client初体验

    初体验的产品:今日头条(ios3.6).百度新闻(ios4.4.0).ZAKER(ios4.4.5).鲜果(ios3.8.7).中搜搜悦(ios4.0.1).Flipboard(ios2.3.9) 1 ...

  5. python之初体验

    1. Python简介: Python(英国发音:/ˈpaɪθən/ 美国发音:/ˈpaɪθɑːn/), 是一种面向对象.解释型计算机程序设计语言,由Guido van Rossum于1989年发明, ...

  6. pythonのdjango初体验

    简单的一个列表展示,实现了增.删.插 1.通过新建项目来创建一个Django项目 2.通过pycharm中的Terminal来创建app   ,命令如下: python manage.py start ...

  7. python 之初体验

    python 关开python的介绍我这里就不解释了,这里贴出一个官方的介绍,供大家阅读 http://baike.baidu.com/link?url=U6LdVR-5RCI2TNsXzeALCcG ...

  8. 【学习博客】Python学习初体验

    本周是正式开始学习Python的第一周.很久不写代码了,毕业第5年了,期间几乎没怎么动过手.这段时间比较规律.密集的学习又让我找回了当时的感觉,还不算陌生,我挺喜欢的这种能实实在在看到自己知识增长的状 ...

  9. python的初体验

    最近由于毕业答辩,导致一些博客没有更新,见谅,今天我们开始一些新的内容 1.python的注释 单行注释:# 多行注释: ''' 这是多行注释 我们可以在里面写很多很多的行 ''' 2.编码风格 #c ...

随机推荐

  1. spark-submit提交python脚本过程记录

    最近刚学习spark,用spark-submit命令提交一个python脚本,一开始老报错,所以打算好好整理一下用spark-submit命令提交python脚本的过程.先看一下spark-submi ...

  2. 聊一聊Token

    阔别了一阵,再次提笔,有些感慨. 聊聊Token吧,以前工作中总是遇到. 首先明确什么是token? 一些关键标签:服务端签发的一个字符串,客户端的请求令牌,用户第一次使用用户名密码登录后生成,在to ...

  3. redmine系统部署

    1.下载railsinstaller.注意版本,我用的是老版的 railsinstaller-3.2.0.exe 下载地址 http://railsinstaller.org/en 国外的网站比较慢, ...

  4. Docker学习第三天

    1.配置阿里容器镜像加速器 (1)登录阿里云官网搜索"镜像加速器" (2)添加如上图信息进行配置 (3)重新加载deamon和重启docker服务 sudo systemctl d ...

  5. 搭建zookeeper集群(伪集群)

    jdk环境 上传zk压缩包 解压缩 复制三份 mkdir /usr/local/zk_cluster cp -r zookeeper-3.4.6 /usr/local/zk_cluster/zooke ...

  6. level2行情是什么意思?

    level2行情是由上海证券交易所推出的实时行情信息收费服务产品,主要提供在上海证券交易所上市交易的证券产品的实时交易数据,包括十档行情,买卖队列,逐笔成交,委托总量和加权价格等数据. 投资者根据其功 ...

  7. 思维导图软件MindManager新手入门教程

    MindManager是一款创造.管理和交流思想的思维导图软件,其直观清晰的可视化界面和强大的功能可以快速捕捉.组织和共享思维.想法.资源和项目进程等等.MindManager新手入门教程专为新手用户 ...

  8. python字节自适应转化单位KB、MB、GB

    文件存储或者传输的过程中,经常需要展示传输文件的大小,或者传输量的大小,为了方便给人展示和阅读,编写一个简单的单位转换器. 1 def hum_convert(value): 2 units = [& ...

  9. win10一行代码搭建本地html项目

    最近玩了下web项目,需要部署到本地查看效果. 一:准备 1.安装python或者安装node.js 2.html项目文件 二:python搭建 1.进入html文件的路径 2.通过python命令部 ...

  10. 经典算法—BF算法(字符串匹配)

    前言 字符串的匹配算法也是很经典的一个算法,在面试的时候常常会遇到,而BF算法是字符串模式匹配中的一个简单的算法 1,什么是BF算法 BF算法,即暴力(Brute Force)算法,是普通的模式匹配算 ...