Kubernetes之Pod详解
1、Pod生命周期
- pod创建
1. API Server 在接收到创建pod的请求之后,会根据用户提交的参数值来创建一个运行时的pod对象。
2. 根据 API Server 请求的上下文的元数据来验证两者的 namespace 是否匹配,如果不匹配则创建失败
3. Namespace 匹配成功之后,会向 pod 对象注入一些系统数据,如果 pod 未提供 pod 的名字,则 API Server 会将 pod 的uid作为pod的名字
4. API Server 接下来会检查 pod 对象的必需字段是否为空,如果为空,创建失败。
5. 上述准备工作完成之后会将在 etcd 中持久化这个对象,将异步调用返回结果封装成 restful.response,完成结果反馈
6. API Server 创建过程完成,剩下的由 scheduler 和 kubelet 来完成,此时 pod 处于 pending 状态
7. Scheduler选择出最优节点
8. Kubelet启动该Pod
- pod删除
1. 用户发出删除 pod 命令
2. 将 pod 标记为“Terminating”状态。监控到 pod 对象为“Terminating”状态的同时启动pod 关闭过程,endpoints 控制器监控到pod对象关闭
将pod与service匹配的 endpoints 列表中删除Pod执行PreStop定义的内容
3. 宽限期(默认30秒)结束之后,若存在任何一个运行的进程,pod 会收到 SIGKILL 信号
4. Kubelet 请求 API Server 将此 Pod 资源宽限期设置为0从而完成删除操作
2、定义一个yaml文件
apiVersion: v1
kind: Pod
metadata:
labels:
run: nginx
name: nginx
spec:
restartPolicy: Always #容器重启策略
containers:
- image: registry.cn-beijing.aliyuncs.com/dotbalo/nginx:1.15.12-alpine
name: nginx
imagePullPolicy: IfNotPresent #拉取镜像策略
command:
- sh
- -c
- sleep 60; nginx -g "daemon off;" #模拟等待10秒, 以前台形式持续运行 #pod3种探针分别设置,一个容器仅需设置一种健康检查方法
startupProbe:
tcpSocket: # 端口检测方式
port: 80
initialDelaySeconds: 10
timeoutSeconds: 2
periodSeconds: 5
successThreshold: 1
failureThreshold: 2 readinessProbe:
httpGet:
path: /index.html #检查路径
port: 80 #http端口
scheme: HTTP #HTTP或HTTPS
initialDelaySeconds: 10
timeoutSeconds: 2
periodSeconds: 5
successThreshold: 1
failureThreshold: 2 livenessProbe:
exec: #命令检查方式
command:
- sh
- -c
- pgrep nginx
initialDelaySeconds: 10
timeoutSeconds: 2
periodSeconds: 10
successThreshold: 1
failureThreshold: 6
- spec.containers[].imagePullPolicy 参数可以指定镜像的拉取策略
- pod的重启策略restartPolicy
restartPolicy:有三种操作方式
1)Always:默认策略。容器失效时,自动重启该容器
2)OnFailure:容器以不为 0 的状态码终止,自动重启该容器
3)Never:无论何种状态,都不会重启
- pod的3种探针分别为
1、启动探针(startupProbe):Kubernetes1.16 新加的探测方式,用于判断容器内的应用程序是否已经启动。
如果配置了 startupProbe,就会先禁用其他探测,直到它成功为止。如果探测失败,Kubelet
2、存活探针(livenessProbe):用于探测容器是否在运行,如果探测失败,kubelet 会“杀死”容器并根据重启策略
进行相应的处理。如果未指定该探针,将默认为 Success
3、就绪探针(readinessProbe):一般用于探测容器内的程序是否健康,即判断容器是否为就绪(Ready)状态。
如果是,则可以处理请求,反之 Endpoints Controller 将从所有的 Service 的 Endpoints中删除
此容器所在 Pod 的 IP 地址。如果未指定,将默认为 Success
- pod的探针操作模式
1、exec:在容器内执行一个指定的命令,如果命令返回值为 0,则认为容器健康
2、tcpSocket: 通过 TCP 连接检查容器指定的端口,如果端口开放,则认为容器健康
3、httpGet:对指定的 URL 进行 Get 请求,如果状态码在 200~400 之间,则认为容器健康
- 探针其它相关参数说明
1、initialDelaySeconds:表示容器启动成功后到第一次监测的时间间隔(单位是秒)。
2、timeoutSeconds:表示超时秒数,超过就表示容器不正常(默认为l秒)。
3、periodSeconds:表示多少秒监测一次(默认为10秒)。
4、successThreshold:表示探针监测失败之后要连续监测多少次成功才算正常(默认为l次,最小为l次)。
5、failureThreshold:表示连续多少次监测失败才判定容器异常(默认为3次,最小为l次)
3、 利用定义的yaml文件创建pod
kubectl create -f nginx.yaml
4、查看是否创建成功
[root@k8s-master1 opt]# kubectl get pod
NAME READY STATUS RESTARTS AGE
nginx 1/1 Running 0 10s
5、利用命令行创建一个Pod
kubectl run nginx --image=nginx:1.15.12
6、Pod状态和Pod故障排查命令

Kubernetes之Pod详解的更多相关文章
- Kubernetes 部署策略详解-转载学习
Kubernetes 部署策略详解 参考:https://www.qikqiak.com/post/k8s-deployment-strategies/ 在Kubernetes中有几种不同的方式发布应 ...
- services资源+pod详解
services资源+pod详解 一.Service 虽然每个Pod都会分配一个单独的Pod IP,然而却存在如下两问题: Pod IP 会随着Pod的重建产生变化 Pod IP 仅仅是集群内可见的虚 ...
- 自动化集成:Kubernetes容器引擎详解
前言:该系列文章,围绕持续集成:Jenkins+Docker+K8S相关组件,实现自动化管理源码编译.打包.镜像构建.部署等操作:本篇文章主要描述Kubernetes引擎用法. 一.基础简介 Kube ...
- [Kubernetes]yaml文件详解
应前一段时间夸下的海口:[Kubernetes]如何使用yaml文件使得可以向外暴露服务,说过要写一篇关于yaml文件详解的文章出来的,今天来总结一下.yaml文件用在很多地方,但是这里以介绍在Kub ...
- Kubernetes Pod详解
目录 基本概念 pod资源配额 容器的健康检查 静态pod 基本概念 Pod是kubernetes集群中最基本的资源对象.每个pod由一个或多个业务容器和一个根容器(Pause容器)组成.Kubern ...
- kubernetes创建资源对象yaml文件例子--pod详解
apiVersion: v1 #指定api版本,此值必须在kubectl apiversion中 kind: Pod #指定创建资源的角色/类型 metadata: #资源的元数据/属性 name: ...
- kubernetes 实践四:Pod详解
本篇是关于k8s的Pod,主要包括Pod和容器的使用.Pod的控制和调度管理.应用配置管理等内容. Pod的定义 Pod是k8s的核心概念一直,就名字一样,是k8s中一个逻辑概念.Pod是docekr ...
- 使用acs-engine在Azure中国区部署kubernetes集群详解
转载请注明出处:http://www.cnblogs.com/wayneiscoming/p/7649642.html 1. acs-engine简介 ACS是微软在2015年12月推出的一项基于容器 ...
- 资深实践篇 | 基于Kubernetes 1.61的Kubernetes Scheduler 调度详解
欢迎大家前往腾讯云技术社区,获取更多腾讯海量技术实践干货哦~ 作者:腾讯云容器服务团队 源码为 k8s v1.6.1 版本,github 上对应的 commit id 为 b0b7a323cc5a4a ...
- K8S学习笔记之Kubernetes 部署策略详解
0x00 概述 在Kubernetes中有几种不同的方式发布应用,所以为了让应用在升级期间依然平稳提供服务,选择一个正确的发布策略就非常重要了. 选择正确的部署策略是要依赖于我们的业务需求的,下面我们 ...
随机推荐
- mybatis_pagehelper_selectOne的SQL语句被莫名的增加分页相关设置,暂定解决办法
在使用mybatis.以及其分页插件pagehelper时,原本的一个selectOne的sql语句被莫名(原因未知)的加上了分页相关,引起如下异常: exception is org.apache. ...
- linux 多级时间轮应用场景
参考链接: https://www.163.com/dy/article/GMGUO9UV05421U51.html
- VUE学习-条件渲染
条件渲染 v-if & v-else-if & v-else <div id="app"> <h1 v-if="type == 'VUE ...
- 解读gitee上的vue3开源项目,并记录不熟悉的API
1.vue中的getCurrentInstance: 在Vue3中,getCurrentInstance()可以用来获取当前组件实例: 2.vue中使用mitt实现兄弟组件传值: 在vue3中$on, ...
- 蓝牙mesh组网实践(常见调试问题整理)
目录 ①初始化及配网过程中出错 ②发送模型返回错误代码 ③发送方成功,接收方丢包 ①初始化及配网过程中出错 1-1.返回错误代码-16,表示给dataflash分配的单个扇区的空间不够,需要加大CON ...
- MongoDB 6.0.4 安装记录
须知:版本号x.y.z,看y:偶数版为稳定版,奇数版为开发版 (1)下载zip,解压 1 https://fastdl.mongodb.org/windows/mongodb-windows-x86_ ...
- pg9.6使用索引
使用索引 索引是用于快速数据检索操作的结构.在数据库世界中,索引与表相关联并用于有效定位数据,而无需查询数据库表中的每一行.如果表没有索引,则需要全表扫描才能找到记录,这在磁盘 I/O 和 CPU 利 ...
- echarts:双y轴图表刻度均匀分布问题
今天分享一个小问题,内容不多. 双y轴图表中,为了图表的美观,经常会隐藏一侧的y轴刻度线,仅显示一侧的刻度线.那么问题就来了,两个y轴的数据数值大小不同,常常会导致刻度线的刻度分布不均匀,该如何解决呢 ...
- JavaScript基础知识整理(对象的属性)
对象的定义 无序属性的集合,属性可以包括基本值,对象或函数. JavaScript中有两类属性,数据属性和访问器属性. 特征值 JavaScript使用特征值来描述属性的行为,因为是为实现JavaSc ...
- B - Yet Another Palindrome Problem
B - Yet Another Palindrome Problem 思路: 给一个长为n(≤5000≤5000)的数组,问是否存在一个长度至少为3的子序列是回文的.回文的定义是把序列reverse, ...