一、Pod的生命周期

init container -- Post start  --  running -- pre stop -- main container

创建Pod经历的过程:->apiServer->etcd保存->scheculer->etcd调度结果->当前节点运行pod(把状态发回apiServer)->etcd保存

Pod的状态:Pending  Running  Failed   Succeeded  Unkown

Pod生命周期中的重要行为:

1、初始化行为(init container)

2、容器探测:

    存活性状态检测(liveness):存活不代表容器能够提供服务。用于判断容器是否健康,如果不包含此探针,则默认Success,决定Pod状态。

    就绪性状态检测(readiness):容器中服务是否正常,是否能够提供服务。用于判断容器是否启动完成并准备接收请求。

    【存活性探测(spec.containers.livenessprobe)和就绪性探测(spec.containers.readinessprobe)都拥有以下三种探针:ExecAction、TCPSocketAction、HTTPGetAction】

    就绪性探测与service调度性存在重要关系。如果不做就绪性探测,只要标签匹配上,pod一旦创建就被绑定为service的后端, service直接将用户请求调度到已存活但未就绪的pod上,那么在一段时间内用户请求可能是失败的。

  3、容器的重启策略:

  pod.spec.restartPolicy <string>   # 容器的重启策略字段

  pod.spec.restartPolicy:#容器的重启策略。有三种,Always(只要退出就重启,默认),OnFailure(当容器终止运行且退出码不为0时, 由kubelet自动重启该容器),Never(只要退出就不重启)。kubelet重新启动的已退出容器将以指数退避延迟(10秒,20秒,40秒......)重新启动,上限为300s,并在成功执行十分钟后重置。

# Pod一旦调度成功,就永远在已调度的节点上,不会重新调度,除非节点挂了或pod被删除了,才会被重新调度。

  4、lifecycle

  启动后钩子(spec.containers.lifecycle.postStart):容器创建后立即执行,如果执行失败,容器终止,重启与否取决于重启策略。

  终止前钩子(spec.containers.lifecycle.preStop):exec  httpGet  tcpSocket

Tips:容器的command比lifecycle的postStart exec command先执行。

 二、常用命令

# kubectl logs            #获取pod 中的日志
# kubectl get pods --show-labels #展示所有pod的标签
# kubectl get pods -L app #显示有app标签的标签值
# kubectl get pods -l app,release #过滤出有标签app,release标签的pod资源
# kubectl label --help #给资源对象打标签
# kubectl get pods –l release=canary,app=myapp #等值标签选择器,“与”
# kubectl label nodes node1 disktype=ssd #给node1打标,disktype=ssd

# 许多资源支持内嵌字段,matchLabels或matchExpressions来定义标签选择器

matchLabels:直接给定键值

matchExpressions:基于给定的表达式来定义使用的标签选择器

{key:”KEY”,operator:”OPERATOR” ,values:[VALUE1,VALUE2,VALUE3]}   #操作符一般是逻辑表达式,(In、 NotIn),values的值必须为非空列表,(Exists、NotExists),values的值必须为空列表等。

3.Pod控制器应用进阶的更多相关文章

  1. 6and7.Pod控制器应用进阶

    Pod控制器应用进阶:imagepullpolicy: 镜像获取策略 Always,Never,IfNoPresent 暴露端口: portslabels 标签可以后期添加修改. ========== ...

  2. 05-kubernetes Pod控制器应用进阶

    目录 Pod 资源 标签 给资源打标签 标签选择器 Pod 生命周期 实际操作 livenessProbe 实战 livenessProbe exec 测试 livenessProbe httpGet ...

  3. Kubernetes 学习6 Pod控制器应用进阶

    一.资源配置清单 1.自主式Pod资源 2.资源的清单格式,大多数清单格式都遵循如下条件: a.一级字段:apiVersion(group/version),kind,metadata(name,na ...

  4. 五,pod控制器应用进阶

    目录 Pod 资源 标签 给资源打标签 标签选择器 Pod 生命周期 pod状态探测 livenessProbe 状态探测 livenessProbe exec 测试 livenessProbe ht ...

  5. Kubernetes 学习7 Pod控制器应用进阶2

    一.容器探测器 1.所谓的容器探测无非就是我们在里面设置了一些探针,或者称之为传感器来获取相应的数据作为判定其存活与否或就绪与否的标准,目前k8s所支持的存活性和就绪性探测方式都是一样的. 2.k8s ...

  6. 6、Kubernetes Pod控制器应用进阶

    定义pod时,在spec字段中常用的定义字段有哪些? master ~]# kubectl explain pods.spec.containers KIND: Pod VERSION: v1 RES ...

  7. kubernetes系列07—Pod控制器详解

    本文收录在容器技术学习系列文章总目录 1.Pod控制器 1.1 介绍 Pod控制器是用于实现管理pod的中间层,确保pod资源符合预期的状态,pod的资源出现故障时,会尝试 进行重启,当根据重启策略无 ...

  8. 9.Pod控制器概念和基本操作2

    利用一个简单的例子来启动一个deployment的Pod控制器 [root@master song]# cat deploy.yml apiVersion: apps/v1 kind: Deploym ...

  9. k8s学习笔记之六:Pod控制器(kube-controller-manager)

    第一章.什么是kube-controller-manager? Controller Manager 由 kube-controller-manager 和 cloud-controller-mana ...

随机推荐

  1. Python_元组、字典内建方法详解

    目录 目录 前言 软件环境 元组Tuple count 查询一个元素在Tuple中的数量 index 查询元素在Tuple中的索引号 元组的遍历 字典Dictionary 创建一个字典对象 简单的创建 ...

  2. mingw gcc 静态 static 编译 dav1d libdav1d.a

    export CC=/mingw/bin/gcc export CXX=/mingw/bin/g++ meson --prefix "/usr/local" build --bui ...

  3. 使用xUnits来实现单元测试

    目录 前言 单元测试 xUnit 小结 附录 前言 从开始敲代码到现在,不停地都是在喊着记得做测试,记得自测,测试人员打回来扣你money之类的,刚开始因为心疼钱(当然还是为了代码质量),就老老实实自 ...

  4. How do I add a Foreign Key Field to a ModelForm in Django?

    What I would like to do is to display a single form that lets the user: Enter a document title (from ...

  5. HtML5与CSS3基础

    HTML标签 1.<a></a> 超链接标签 属性 href:跳转页面的连接 name:实现定锚功能,跳转同一页面不同位置(例返回顶部) target: (self, pare ...

  6. python pytorch numpy DNN 线性回归模型

    1.直接奉献代码,后期有入门更新,之前一直在学的是TensorFlow, import torch from torch.autograd import Variable import torch.n ...

  7. 【VS开发】使用 NuGet 管理项目库

    NuGet 使用 NuGet 管理项目库 Phil Haack 无论多么努力,Microsoft 也没办法提供开发人员所需要的每一个库. 虽然 Microsoft 在全球的员工人数接近 90,000, ...

  8. flask 重定向详解

    from flask import Flask,request,redirect,url_for app = Flask(__name__) @app.route('/') def hello_wor ...

  9. 史上最详细 Linux 用户与用户组知识

    1.用户和用户组文件 在 linux 中,用户帐号,用户密码,用户组信息和用户组密码均是存放在不同的配置文件中的. 在 linux 系统中,所创建的用户帐号和其相关信息 (密码除外) 均是存放在 / ...

  10. 为 JS 的字符串,添加一个 format 的功能。

    <script> String.prototype.format = function (kwargs) { var ret = this.replace(/\{(\w+)\}/g, fu ...