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的更多相关文章

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

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

  2. Kubernetes Python Client 初体验之node操作

    今天讲一下k8s中对于各个实物节点node的操作. 首先是获取所有nodes信息: self.config.kube_config.load_kube_config(config_file=" ...

  3. 聚合类新闻client初体验

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

  4. python之初体验

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

  5. python 之初体验

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

  6. pythonのdjango初体验

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

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

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

  8. python的初体验

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

  9. pythonのpygame初体验

    import pygame import sys from pygame.locals import * #初始化pygame pygame.init() size = width,height=60 ...

随机推荐

  1. nginx配置代理缓存

    nginx可以实现反向代理的配置,并且可以使用缓存来加速,本文是简单的实现功能的配置,暂时没有做其他的优化的部分的配置,从网上的资料来看,很多配置都是没有讲哪些是必须配置的,我自己在配置过程中就发现没 ...

  2. 06、MyBatis 逆向工程

    1.MyBatis逆向简介   mybatis需要程序员自己编写sql语句,mybatis官方提供逆向工程,可以针对单表自动生成mybatis执行所需要的代码(mapper.java.mapper.x ...

  3. [PHP安全特性学习]is_numeric()函数安全漏洞

    简介 PHP函数的安全特性-is_numerice() 函数 简介 PHP is_numeric() 函数 is_numeric() 函数用于检测变量是否为数字或数字字符串. 语法: bool is_ ...

  4. OCR之前这些因素必须考虑到!

    用久了ABBYY FineReader 14OCR文字识别软件,相信大家都知道图像质量对OCR质量有很大的影响,本文将给大家讲解下在识别图像之前,有哪些因素需要考虑到! 1.OCR语言 ABBYY F ...

  5. Boom 3D带你聆听《我们的乐队》音乐盛宴

    说到前段时间大热的音乐类综艺节目,<我们的乐队>肯定值得一提.<我们的乐队>是由谢霆锋.萧敬腾.王俊凯担任导师,以团队的形式组成各种风格的乐队,并通过同场比拼,最终选出获胜的乐 ...

  6. 【移动自动化】【四】获取Toast

    什么是Toast Android中的Toast是一种简易的消息提示框. 如何识别Toast 使用 xpath 查找 推荐 //*[@class='android.widget.Toast'] (固定这 ...

  7. Jsoup获取网页内容(并且解决中文乱码问题)

    1. 根据连接地址获取网页内容,解决中文乱码页面内容,请求失败后尝试3次 private static Document getPageContent(String urlStr) { for (in ...

  8. jQuery 根据value设置radio默认选中

    jQuery 根据value设置radio默认选中:HTML: <input type="radio" name="type" value="1 ...

  9. 求1-1e11内的素数个数(HDU 5901 Count primes )

    参考链接:https://blog.csdn.net/Dylan_Frank/article/details/54428481 #include <bits/stdc++.h> #defi ...

  10. 音乐制作:用FL Studio做电子音乐

    电音制作,自然少不了适合做电音的软件,市面上可以进行电音制作的软件不少,可是如果在这些软件中只能选择一款的话,想必多数人会把票投给FL Studio,毕竟高效率是永远不变的真理,今天就让我们来看看如何 ...