pod生命周期:

状态:pending 挂起

没有节点满足条件

running 运行

Failed

sucess

unkonwn

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

初始化容器

容器探测:liveness probe  探测容器是否活着 探测容器 存活性探针

readindess probe 探测容器中主程序是否正常提供服务 就绪性探针

restartPolicy:容器重启策略

Always,OnFailure,Never,Default to always

pod终止过程:发送指令给容器并有等待机制

查看liveness, readindess

kubectl explain pods.spec.containers

探针类型有三种:探测容器

ExecAction:

TCPSocketAction:套接字探针

HTTPGetAction:

liveness Probe探测情况

kubectl explain pods.spec.containers.livenessProbe

例如

kubectl explain pods.spec.containers.livenessProbe.exec

liveness Probe探针类型:三种只用其中一种

exec <Object>

tcpSocket          <Object>

httpGet    <Object>

附加属性

failureThreshold       <integer> 探测几次失败,才认为失败

periodSeconds <integer>   探测间隔时间 单位秒

timeoutSeconds       <integer> 每次探测超时时间响应

initialDelaySeconds <integer>  容器初始化后延迟的探测时间,容器第一次探测时间 默认容器一启动就开始探测

readinessProbe就绪行探测的属性与livenessProbe一样

kubectl explain pods.spec.containers.readinessProbe

livenessProbe实例:

exec<Object>

kubectl explain pods.spec.containers.livenessProbe.exec

实例:

vim  leveness-exec.yaml

apiVersion: v1

kind: Pod

metadata:

name: liveness-exec-pod

namespace: default

spec:

containers:

- name: liveness-exec-container

image: busybox:latest

imagePullPolicy: IfNotPresent

command: ["/bin/sh","-c","touch /tmp/healthy;sleep 30;rm -f /tmp/healthy;sleep 3600"] 容器初始化命令

livenessProbe:

exec:   exec探针 执行

command: ["test","-e","/tmp/healthy"]  探测命令 返回true false 返回false的话restartPolicy容器重启策略执行 restart

initialDelaySeconds: 2 容器初始化后2秒探测

periodSeconds: 3  探针返回true 间隔3秒再探测

kubectl create -f leveness-exec.yaml

kubectl get pods –w

kubectl describe pods liveness-exec-pod

livenessProbe

tcpSocket探针

kubectl explain pods.spec.containers.livenessProbe.tcpSocket

livenessProbe

httpGet探针

kubectl explain pods.spec.containers.livenessProbe.httpGet

实例:

cp leveness-exec.yaml liveness-httpdget.yaml

vim liveness-httpdget.yaml

apiVersion: v1

kind: Pod

metadata:

name: liveness-httpget-pod

namespace: default

spec:

containers:

- name: liveness-httpget-container

image: ikubernetes/myapp:v1

imagePullPolicy: IfNotPresent

ports:

- name: http

containerPort: 80

livenessProbe:

httpGet:  探针

port: http  port的name

path: /index.html  请求的网页 网页请求不到,restartPolicy重启策略执行restart,重启之后 容器文件会重置

initialDelaySeconds: 1 容器初始化1秒后探测

periodSeconds: 3 间隔3秒探测

kubectl create -f liveness-httpdget.yaml

kubectl get pods –w

kubectl describe pods liveness-httpget-pod

查看Liveness:结果

实验过程:

kubectl exec -it liveness-httpget-pod -- /bin/sh   进入容器

rm -rf /usr/share/nginx/html/index.html

kubectl describe pods liveness-httpget-pod  显示 restart count

就绪性探测实例:

cp liveness-httpdget.yaml readiness-httpget.yaml

vim readiness-httpget.yaml

apiVersion: v1

kind: Pod

metadata:

name: readiness-httpget-pod

namespace: default

spec:

containers:

- name: readiness-httpget-container

image: ikubernetes/myapp:v1

imagePullPolicy: IfNotPresent

ports:

- name: http

containerPort: 80

readinessProbe:

httpGet:

port: http

path: /index.html 能够访问就会显示就绪 ready 1,访问不到就会显示不就绪 ready为0

initialDelaySeconds: 1

periodSeconds: 3

kubectl create -f readiness-httpget.yaml

kubectl get pods

实验过程

kubectl exec -it readiness-httpget-pod -- /bin/sh

rm -rf /usr/share/nginx/html/index.html

kubectl get pods

kubectl get pods 此时显示ready状态为0

kubectl exec -it readiness-httpget-pod -- /bin/sh

touch   /usr/share/nginx/html/index.html

kubectl get pods  此时ready为1  因为已经能够探测到了

kubectl describe pods readiness-httpget-pod  查看Readiness

容器启动后勾子,结束前勾子

kubectl explain pods.spec.containers.lifecycle

postStart <Object>

kubectl explain pods.spec.containers.lifecycle.postStart

实例:

vim poststart-pod.yaml

apiVersion: v1

kind: Pod

metadata:

name: poststart-pod

namespace: default

spec:

containers:

- name: busybox-httpd

image: busybox:latest

imagePullPolicy: IfNotPresent

lifecycle:

postStart:

exec:

command: ["/bin/sh","-c","mkdir -p /data/web/html;echo Home_Page>> /data/web/html/index.html"] 容器初始化后执行

command: ["/bin/sh",”-c”,”sleep 3600”] 容器启动 时执行  既容器初始化前就已经执行 先执行

kubectl create  -f  poststart-pod.yaml

kubectl get pods

登录检查勾子执行的结果

kubectl exec -it poststart-pod -- /bin/sh

ls /data/web/html/

cat  /data/web/html/index.html

preStop    <Object>

kubectl explain pods.spec.containers.lifecycle.preStop

注释:/bin/httpd  -f  -h /data/web/html

在前台执行 指定家目录

k8sd之pod生命周期的更多相关文章

  1. Kubernetes1.3:POD生命周期管理

    转:http://blog.csdn.net/horsefoot/article/details/52324830 (一)  核心概念 Pod是kubernetes中的核心概念,kubernetes对 ...

  2. Pod生命周期和健康检查

    Pod生命周期和健康检查 Pod的生命周期涵盖了前面所说的PostStart 和 PreStop在内 Pod phase Pod的status定义在 PodStatus对象中,其中有一个phase字段 ...

  3. Kubernetes Pod 生命周期

    一. Pod Hook Kubernetes 为我们提供了生命周期钩子,就是我们所说的Pod Hook,Pod Hook是由kubelet发起的,当容器中的进程启动前或者容器中的进程终止之前运行.这是 ...

  4. 2.k8s.Pod生命周期,健康检查

    #Pod生命周期,健康检查 pod创建过程 Init容器 就绪探测 存活探测 生命周期钩子 #Pod创建过程 master节点:kubectl -> kube-api -> kubenle ...

  5. k8s学习-pod生命周期

    4.2.pod生命周期 创建一个pod的时候过程如下: 1.容器环境初始化: 2.pause执行网络.容器卷等初始化工作: 3.所有的InitC按顺序执行,每个InitC执行完后才能执行下一个,且必须 ...

  6. 容器编排系统之Pod生命周期、健康/就绪状态探测以及资源限制

    前文我们了解了在k8s上的资源标签.标签选择器以及资源注解相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/14141080.html:今天我们来聊下k8 ...

  7. 【三】Kubernetes学习笔记-Pod 生命周期与 Init C 介绍

    一.容器生命周期 Init C(初始化容器)只是用于 Pod 初始化的,不会一直随着 Pod 生命周期存在,Init C 在初始化完成之后就会死亡. 一个 Pod 可以有多个 Init C,也可以不需 ...

  8. pod生命周期

    Pod生命周期 我们一般将pod对象从创建至终这段时间范围成为pod的生命周期,它主要包含以下的过程: pod创建过程 运行初始化容器(init container)过程 运行主容器(main con ...

  9. k8s的pod生命周期

    pod的生命周期: 1.init container 2.main contianer (1) post start hook :容器启动后做什么操作(可以命令查看kubectl explain po ...

  10. Pod 生命周期和重启策略

    Pod 在整个生命周期中被系统定义为各种状态,熟悉 Pod 的各种状态对于理解如何设置 Pod 的调度策略.重启策略是很有必要的. Pod 的状态 状态值 描述 Pending API Server ...

随机推荐

  1. Thor: 统一AI模型网关的革新之选

    Thor: 统一AI模型网关的革新之选 项目价值 Thor(雷神托尔)作为一个强大的AI模型管理网关,解决了当前AI领域一个关键痛点:不同AI服务商的API格式各异,集成成本高.Thor通过将各种AI ...

  2. 26考研高数习题:1.1. 分段&复合函数

    §1.1. 分段&复合函数 更详细的考研数学精讲请访问「荒原之梦考研数学」 Ultra 版:www.zhaokaifeng.com 001 题目 设 \(g⁡⁡\left(x\right) = ...

  3. autMan奥特曼机器人-安装或更新golang依赖

    autMan2.3.4及以上需要更新中间件或安装golang依赖,参照下列步骤: 一.直装版本 ssh下进入autMan文件夹下plugin/scripts下面输入以下指令: go get -u gi ...

  4. STM32实战——DHT11温湿度获取并展示

    介绍 DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器,包括一个电阻式感湿元件和一个NTC测温元件,可以用来测量温度和湿度. 硬件连线 注意 本实验使用STM32F103C8T ...

  5. 添加xxx.so到环境变量里

    点击查看代码 libxxx.so 文件位于 /usr/local/lib 目录下,你可以按照以下步骤操作: 创建配置文件: echo "/usr/local/lib" | sudo ...

  6. Selenium Webdriver 介绍

    在前两篇文章中,主要介绍了Selenium IDE 工具及其使用和它的特点,也使用Selenium IDE和Firebug构建了一些脚本.本文,我们开始介绍不同类型的web元素及其定位策略 我们已经非 ...

  7. MongoDB入门介绍与案例分析

    一.MongoDB 数据库定位 首先我们来看一下 MongoDB 是什么样的数据库.数据库分两大类: OLTP(Online Transaction Processing)联机事务处理. OLAP(O ...

  8. Django实战项目-学习任务系统-用户管理

    接着上期代码框架,开发第6个功能,用户管理,查看用户信息和学生用户属性值,尤其是总积分值,还可以查看积分流水明细,完成任务奖励积分,兑换物品消耗积分. 第一步:编写第6个功能-用户管理 1,编辑模型文 ...

  9. Creo 4.0二次开发工具框架搭建

    一.新建MFC DLL工程  二.配置项目属性 附加依赖项中输入:netapi32.lib;psapi.lib;mpr.lib;wsock32.lib;protk_dll_NU.lib;protk_d ...

  10. SCRAPY入门学习(待完善)

    Scrapy介绍 Scrapy 是用 Python 实现的一个为了爬取网站数据.提取结构性数据而编写的应用框架. Scrapy 常应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中. 通常我们 ...