今天讲一下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. (2)ElasticSearch在linux环境中集成IK分词器

    1.简介 ElasticSearch默认自带的分词器,是标准分词器,对英文分词比较友好,但是对中文,只能把汉字一个个拆分.而elasticsearch-analysis-ik分词器能针对中文词项颗粒度 ...

  2. AQS详解,并发编程的半壁江山

    千呼万唤始出来,终于写到AQS这个一章了,其实为了写这一章,前面也是做了很多的铺垫,比如之前的 深度理解volatile关键字 线程之间的协作(等待通知模式) JUC 常用4大并发工具类 CAS 原子 ...

  3. JS简单介绍与简单的基本语法

    1.JavaScirpt是一门编程语言,是为前端服务的一门语言. (1)基础语法 (2)数据类型 (3)函数 (4)面向对象 2.还涉及到BOM和DOM (1)BOM(操作浏览器的一些功能) (2)D ...

  4. js常用函数和事件

    1.常规函数 javascript常规函数包括以下9个函数: (1)alert函数:显示一个警告对话框,包括一个OK按钮. (2)confirm函数:显示一个确认对话框,包括OK.Cancel按钮. ...

  5. MindManager教程:高中数学函数思维导图怎么画

    说起函数,大家应该都不陌生吧,函数不论是在初中还是在高中都是需要重点学习的知识点,不仅仅是重点,更是作为难点曾出现在高考最后一道大题中.那今天我们就来做一个函数思维导图,来简单地了解一下关于函数的一些 ...

  6. 使用Folx智能速控功能,确保带宽资源的合理分配

    市面上的大部分下载软件,都会配备速度控制的功能,用于限制下载任务的带宽占用.但除此之外,Folx专业版还提供了更加智能化的速度控制功能,用户可以为速控指定更加详细的条件,比如程序限制条件.时间限制条件 ...

  7. 思维导图软件iMindMap怎么用模板制作思维导图

    随着思维导图的不断发展,市场上相关的软件也越来越多.像XMind.MindManager等.每一款软件都有它独特的亮点.作为众多思维导图软件中的一款,iMindMap算是比较亮眼的了.现在很多人都在用 ...

  8. Centos7 安装python3 pip3

    Centos7 安装python3 pip3 安装python3.6 安装 python36   yum install python36 -y   查看版本 安装完成,查看一下python版本是否正 ...

  9. CentOS6.5配置KVM

    ///确认cpu是否支持kvm egrep '(vmx|svm)' --color=always /proc/cpuinfo ///安装包 yum -y install qemu-kvm libvir ...

  10. 红黑树、TreeMap、TreeSet

    事先声明以下代码基于JDK1.8版本 参考资料 大部分图片引自https://www.jianshu.com/p/e136ec79235c侵删 https://www.cnblogs.com/skyw ...