Kubernetes Python Client 初体验之Deployment
Kubernetes官方推荐我们使用各种Controller来管理Pod的生命周期,今天写一个最常用的Deployment的操作例子。
首先是创建Deployment:
with open(path.join(path.dirname(__file__), "lede_test1.yml")) as f:
dep = yaml.safe_load(f)
resp = self.appApi.create_namespaced_deployment(
body=dep, namespace="default")
print("Deployment created. status='%s'" % resp.metadata.name)
在创建过程出现了很多错误,主要的原因是yaml配置文件的问题。很奇怪的是在master节点上使用kubectl apply相同的yaml文件都可以正常创建,放到python API中就有问题了。出现问题不要紧,更够学会看错误信息就能修正错误。IDE中得到的错误信息是json格式的,但是没有缩进,所以看起来很恼火,这里推荐使用https://www.json.cn/,可实现自动缩进功能,查看错误信息也就很方便了。
第一次运行后cluster返回如下信息:
{
"kind":"Status",
"apiVersion":"v1",
"metadata":{
},
"status":"Failure",
"message":"the API version in the data (apps/v1beta1) does not match the expected API version (apps/v1)",
"reason":"BadRequest",
"code":400
}
查看message中的错误提示,yaml文件的apiVersion与实际使用的API版本不一致,于是修改为apps/v1。
然后重新执行又返回如下错误:
{
"kind":"Status",
"apiVersion":"v1",
"metadata":{
},
"status":"Failure",
"message":"Deployment.apps "lede-test1" is invalid: [spec.selector: Required value, spec.template.metadata.labels: Invalid value: map[string]string{"app":"lede"}: `selector` does not match template `labels`]",
"reason":"Invalid",
"details":{
"name":"lede-test1",
"group":"apps",
"kind":"Deployment",
"causes":[
{
"reason":"FieldValueRequired",
"message":"Required value",
"field":"spec.selector"
},
{
"reason":"FieldValueInvalid",
"message":"Invalid value: map[string]string{"app":"lede"}: `selector` does not match template `labels`",
"field":"spec.template.metadata.labels"
}
]
},
"code":422
}
关键信息是selector does not match template labels
,原来是因为需要加入selector相应的label匹配信息,而我并没有写入selector,修改后终于创建成功。
在master节点上也可以看到depolyment和相应的pod正在运行.。
其中我的YAML配置文件为:
apiVersion: apps/v1
kind: Deployment
metadata:
name: lede-test1
spec:
selector:
matchLabels:
app: lede-test
replicas: 1
template:
metadata:
labels:
app: lede-test
spec:
containers:
- name: lede
image: lede-17.01.5:latest
command: ["/bin/ash", "-ce", "tail -f /dev/null"]
imagePullPolicy: Never
然后是Deployment的删除,代码如下:
resp = self.appApi.delete_namespaced_deployment(
name="lede-test1",
namespace="default",
body=client.V1DeleteOptions(
propagation_policy='Foreground',
grace_period_seconds=5))
print("Deployment deleted. status='%s'" % str(resp.status))
其中需要传入想删除Deployment的名字,运行成功后输出结果如下。
经过这次api的使用,告诉我们应该熟悉yaml配置文件的使用,要理解每个标签的含义,这样才能在以后的不同容器部署中,做出相应的配置。
Kubernetes Python Client 初体验之Deployment的更多相关文章
- Kubernetes Python Client 初体验之安装授权
最近想做一个基于flask的云平台管理服务器,利用python调用kubenetes提供的API来实现云平台的操作.笔者使用的是Windows,kubernetes集群安装在Ubuntu和Respbi ...
- Kubernetes Python Client 初体验之node操作
今天讲一下k8s中对于各个实物节点node的操作. 首先是获取所有nodes信息: self.config.kube_config.load_kube_config(config_file=" ...
- 聚合类新闻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 之初体验
python 关开python的介绍我这里就不解释了,这里贴出一个官方的介绍,供大家阅读 http://baike.baidu.com/link?url=U6LdVR-5RCI2TNsXzeALCcG ...
- pythonのdjango初体验
简单的一个列表展示,实现了增.删.插 1.通过新建项目来创建一个Django项目 2.通过pycharm中的Terminal来创建app ,命令如下: python manage.py start ...
- 【学习博客】Python学习初体验
本周是正式开始学习Python的第一周.很久不写代码了,毕业第5年了,期间几乎没怎么动过手.这段时间比较规律.密集的学习又让我找回了当时的感觉,还不算陌生,我挺喜欢的这种能实实在在看到自己知识增长的状 ...
- python的初体验
最近由于毕业答辩,导致一些博客没有更新,见谅,今天我们开始一些新的内容 1.python的注释 单行注释:# 多行注释: ''' 这是多行注释 我们可以在里面写很多很多的行 ''' 2.编码风格 #c ...
- pythonのpygame初体验
import pygame import sys from pygame.locals import * #初始化pygame pygame.init() size = width,height=60 ...
随机推荐
- oracle 相关笔记
1.查询语句执行顺序 from->where->[group by ]-> select ->distinct->count(某一列) 2.用命令执行存储过程用 exec ...
- delete和truncate/drop恢复数据的过程
使用myflash工具恢复delete操作数据,myflash工具注意事项: 该工具注意事项 1.binlog格式必须为row,且binlog_row_image=full 2.仅支持5.6与5.7 ...
- 还不懂Docker?一个故事安排的明明白白!
程序员受苦久矣 多年前的一个夜晚,风雨大作,一个名叫Docker的年轻人来到Linux帝国拜见帝国的长老. "Linux长老,天下程序员苦于应用部署久矣,我要改变这一现状,希望长老你能帮帮我 ...
- yum安装Ceph指定Jewel版本
前言 通过yum安装指定的rpm包,这个一般是 yum --showduplicates list ceph | expand ,然后去通过yum安装指定的版本即可,这个在hammer下是没有问题的, ...
- mysql 数据库存储路径更改
使用了VPS一段时间之后发现磁盘空间快满了.本人的VPS在购买的时候买了500gb的磁盘,提供商赠送了20GB的高性能系统磁盘.这样系统就有两个磁盘空间了.在初次安装mysql 的时候将数据库目录安装 ...
- oracle 11.2.0.4静默安装
oracle 11.2.0.4静默安装 1.安装包 1.1.上传安装包 xshell可用rz命令,选择安装包. mobaxterm可用左侧栏上传功能. 2.安装准备 2.1.关闭防火墙.SELinux ...
- Linux系统学习07-Centos软件安装几种方法
配置好Centos一些基础设置后,接下来就是学习平时使用最多的软件安装. windwos下软件安装非常简单,就是下载好安装包,然后双击就会自动安装. 而Centos里面安装软件的方式方法有区别,熟悉几 ...
- 利用Vmware workstation安装MS-DOS使用Turbo C 2.0
首先上各种软件的链接 链接:https://pan.baidu.com/s/1HfTDexiJSpioUnzKddUIyA 提取码:khtu 这个链接是压缩后的 链接:https://pan.baid ...
- NProgress使用教程
GitHub地址 rstacruz/nprogress: For slim progress bars like on YouTube, Medium, etc (github.com) 演示网站 N ...
- 新鲜出炉!2020年最新java面试题大全,面试突击必备!
前言 发现网上很多Java面试题都没有答案,所以花了很长时间搜集整理出来了一套Java面试题,希望对大家有帮助哈~ 打算这几天每天更新15~20题.(这样有助于你们阅读和理解!)我们先从简单的开始 1 ...