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. 适合 Go 新手学习的开源项目——在 GitHub 学编程

    作者:HelloGitHub-小鱼干&卤蛋 故事要从 2007 年说起.因为受够了 C++ 煎熬的 Google 首席软件工程师 Rob Pike 召集 Robert Griesemer 和 ...

  2. Django 笔记2018.2.7

    1.基础知识 1.1web服务基本原理 1.2 WSGI 目前最通用的web接口规范,python默认支持,在Django中是一个库 1.3WEB基础知识 MTV (Model Template Vi ...

  3. Win10系统下安装VC6.0教程

    学习一门语言最重要的一步是搭建环境,许多人搭建在搭建环境上撞墙了,就有些放弃的心理了:俗话说,工欲善其事,必先利其器:所以接下来我们进行学习C的第一步下载编程所用的工具;当然也有其它的软件,只不过初学 ...

  4. [代码审计Day2] filter_var函数缺陷代码审计

    简介 // composer require "twig/twig" require 'vendor/autoload.php'; class Template { private ...

  5. MathType颜色设置的技巧

    MathType功能非常强大,在编辑公式时使用非常方便.运用MathType不仅可以改变公式的字体和字号,也可以改变公式字体颜色,MathType颜色设置还是有一套技术的,下面我们就一起来看看公式编辑 ...

  6. Boom 3D的保真度是什么,如何应用

    Boom 3D是一款非常优秀的3D音频软件,拥有3D音效.环境模式.空间模式.夜间模式.保真度等多种音效模式,可以为用户提供多种音效体验感. 第一.什么是保真度 或许第一次接触音频软件的朋友就会问到什 ...

  7. 苹果电脑下载器Folx有没有自动下载功能

    苹果电脑下载器Folx提供了多项自动化任务功能,供用户更好地利用电脑的空闲时间,减少自己直接参与下载的时间,从而提升下载效率. 接下来,小编将重点介绍Folx自动化工作中的任务完成后的自动化工作.自动 ...

  8. appium 启动参数配置

    启动配置参数,可以参照官网: http://appium.io/docs/en/writing-running-appium/caps/#general-capabilities from appiu ...

  9. 【性能测试】【locust】场景性能测试步骤

    场景设计 实现登陆基本功能,输出相应结果,脚本通 多用户实现随机登陆 添加初始化方法on_start: 每个用户只运行一次 添加检查点: catch_responses = True 脚本设计 # 导 ...

  10. leetcode187. 重复的DNA序列

    所有 DNA 都由一系列缩写为 A,C,G 和 T 的核苷酸组成,例如:"ACGAATTCCG".在研究 DNA 时,识别 DNA 中的重复序列有时会对研究非常有帮助.编写一个函数 ...