Pod对象的基本概念

概念

pod是k8s的基本调度单元  pod扮演的是传统部署环境中的虚拟机角色 容器扮演的运行在虚拟机中的用户进程

Pod对象字段

NodeSelector       提供用户将Pod与Node进行绑定的字段  Pod只能运行在满足NodeSelector的节点上 否则会调度失败

NodeName          一旦Pod的这个字段被赋值 k8s就会被认为此Pod已经通过了调度 调度的结果就是赋值的节点名字(可以用来调试)

HostAliases        定义Pod的hosts文件(/etc/hosts) 里面的内容

凡是跟 Linux Namespace相关的属性 都是Pod级别的

Init Containers字段

Init Containers的生命周期 会先于所有的Containers 并且严格按照定义的顺序执行

Containers字段

ImagePullPolicy  拉取镜像的策略方式

Lifecycle   容器状态发送变化时触发的钩子操作

postStart  在容器启动后立即执行的一个操作  和容器的ENTRYPOINT命令是异步执行的 postStart启动时候ENTRYPOINT有可能并没有执行完

postStart 执行失败该pod也会处于失败状态

preStop 容器被杀死之前执行 preStop操作是同步执行的 它会阻塞当前容器的杀死流程 直到preStop执行完毕才能运行容器退出

Pod的生命周期

Pending           Pod的YAML文件已经提交给k8s API对象已经保存到etcd中 但是Pod中的某些容器还没有被创建

Running           Pod已经被成功调度 包含的容器都已经被创建 并且至少有一个容器正在运行

Succeeded      Pod中所有的容器都已经正常运行完毕并且已经退出(一次性任务)

Failed               Pod中至少有一个容器以不正常的状态(非0的返回码)退出

Unknown          意味着Pod的状态不能持续的被kubelet汇报给apiserver(可能是主从节点通信问题)

Ready和Running的区别        Running 只代表容器自身的进程是正常运行的 但不能表示容器中提供服务的主进程是正常的(nginx返回500)等

Pod的Volume类型

投射数据卷(projected)

Secret       把pod想要访问的加密数据存储在etcd中   通过pod中的容器以挂载volume的方式来访问

这些保存在etcd里面的信息会以文件的方式出现在容器的volume目录中一旦etcd中的数据发生变化volume里面的内容也会被自动更新

由kubelet组件定时进行维护 所以这些内容的更新可能会有一定的时延 需要有重试和超时处理机制

configMap

明文存储配置文件信息

Downward

获取宿主机和Pod本身的一些属性信息 downwardApi能够获取到的信息一定是Pod里面的容器进程启动之前就能够确定下来的信息

pod里容器运行后才能出现的信息就不能被获取到了 这种情况要获取可以用sidecar容器来获取相关信息

serviceAccountToken

apiserver访问授权信息

Service Account介绍

是k8s系统内置的一种服务账户 它是k8s进行权限分配的对象

service Account的授权信息和文件实际上保存在它所绑定的一个特殊的Secret对象中 这个特殊的Secret对象就叫做ServiceAccountToken

k8s在每个pod创建的时候 自动在它的spec.volumes部分添加了默认的ServiceAccountToken定义然后给每个容器加上对应的volumeMounts字段

Pod中的容器固定路径的授权文件路径     /var/run/secrets/kubernetes.io/serviceaccount

容器健康检查和恢复机制

为Pod里的容器定义一个健康检查的探针

kubelet会根据这个探针的返回值来决定这个容器的状态 而不是直接以容器是否运行(Docker返回的信息)做为是否健康的依据

pod的恢复机制是重新创建一个新容器 而不是重启一个容器

pod一旦与某个宿主机进行了绑定 默认就不会离开这个节点 哪怕这个节点已经宕机了

如果需要在节点宕机后使pod自动切换到其它节点 就必须使用pod控制器(Deployment)来管理pod  这就是单纯的pod和控制器管理的pod的区别

livenessProbe探针

exec          shell命令

httpGet

tcpSocket

livenessProbe的检查结果   影响的是Pod的生命周期 会导致Pod里面的容器发生异常时候自动重新创建新的容器   Pod的恢复策略

readinessProbe探针

语法和livenessProbe一样  但是作用却不一样 readlinessProbe检查出的结果成功与否 决定着这个Pod能否通过Service的方式被访问到

而不影响Pod的生命周期

Pod预设置

可以首先创建一个PodPreset的对象  然后通过selector选中相关Pod的定义   在创建Pod对象的时候自动把两者的字段进行合并

PodPreset只会影响被创建出来的pod实例 并不会影响创建pod的各种控制器的定义(Deployment)

k8s一切皆对象

1.应用抽象成Pod对象

2.应用的配置抽象成ConfigMap对象

3.应用要访问的密码抽象成Secret对象

4.Pod进行批量化,自动化修改的工具对象抽象成PodPreset对象

原文地址:https://www.cnblogs.com/yxh168/p/10919898.html

时间: 2024-08-30 16:48:54

Pod对象的基本概念的相关文章

Kubernetes — 深入解析Pod对象:基本概念(一)

在上一篇文章中,我详细介绍了 Pod 这个 Kubernetes 项目中最重要的概念. 现在,你已经非常清楚:Pod,而不是容器,才是 Kubernetes 项目中的最小编排单位.将这个设计落实到 API 对象上,容器(Container)就成了 Pod 属性里的一个普通的字段.那么,一个很自然的问题就是:到底哪些属性属于 Pod 对象,而又有哪些属性属于 Container 呢? 要彻底理解这个问题,你就一定要牢记我在上一篇文章中提到的一个结论:Pod 扮演的是传统部署环境里“虚拟机”的角色.

kubernetes概述之深入理解pod对象

一.深入理解Pod对象 1.Pod容器的分类 Pod的概念: 最小部署单元 一组容器的集合 一个Pod中的容器共享网络命名空间 Pod是短暂的 Pod的容器分类: Infrastructure Container:基础容器 -- 维护整个Pod的网络空间 一般这里的pause镜像的作用就是维护pod的网络空间 InitContainers:初始化容器 -- 先与业务容器开始执行 Containers:业务容器 -- 并行启动 2.镜像拉取策略 IfNotPresent:默认值,镜像在宿主机上不存

PHP面向对象编程 对象的基本概念

再次梳理一下面向对象编程的要点. 此文是以php为例,但思想是通用的. 总结的PHP面向对象编程笔记 对象的基本概念 对象的基本构成 对象包含两部分 一.对象的组成元素 是对象的数据模型,用于描述对象的数据. 又被称为对象的属性,或对象的成员变量. 二.对象的行为 是对象的行为模型,用于描述对象能够做什么. 又被称为对象的方法. 对象的特点 1 每个对象都是独一无二的 2 对象是一个特定事物,他的职能是完成特定功能 3 对象是可以重复利用的 面向对象的基本概念 面向对象就是在编程的时候数据结构形

php类与对象的基本概念

php面向对象设计 对象相比数组的优点:不仅可以存储多个数据,还可以将函数存在对象中 对象的三大特性:封装.继承.多态 面向对象编程(object oriented programming 即oop),其达到了编程代码的重用性.灵活性和扩展性更加简洁.容易维护.php又不是纯的面向对象编程,其也可以是面向过程编程. 1.面向对象和面向过程的区别? 面向过程:就是在整个项目中最小单位都是由函数组成的 面向对象:就是在整个项目中最小单位都是由对象组成的 2.什么是对象 对象,可以说世间万物都是.就是

kubernetes-深入理解pod对象(七)

Pod中如何管理多个容器 Pod中可以同时运行多个进程(作为容器运行)协同工作.同一个Pod中的容器会自动的分配到同一个 node 上.同一个Pod中的容器共享资源.网络环境和依赖,它们总是被同时调度. 注意在一个Pod中同时运行多个容器是一种比较高级的用法.只有当你的容器需要紧密配合协作的时候才考虑用这种模式.例如,你有一个容器作为web服务器运行,需要用到共享的volume,有另一个"sidecar"容器来从远端获取资源更新这些文件,如下图所示: Pod中可以共享两种资源:网络和存

JavaScript中原型对象的基本概念

在之前我们学习对象的时候,讲到了创建对象的方式,一个是通过构造函数创建一个新的对象,一个是对象字面量的方式创建对象. 讲到对象就必须要认识原型对象的概念了. 1 原型对象的概念 构造函数有一个默认的属性prototype属性,这个属性指向了一个对象,这个对象就是这个构造函数的原型对象了. 同时这个原型对象种有一个constructor属性,这个属性指向的是构造函数本身. 2 原型对象中的功能 原型对象中的属性和方法,可以被实例对象所共享(不同实例对象调用的原型函数中的属性和方法为同一个). 3

java学习笔记3--类与对象的基本概念(1)

本文地址:http://www.cnblogs.com/archimedes/p/java-study-note3.html,转载请注明源地址. 1.面向对象的程序设计方法概述 面向对象的程序设计 与结构化程序设计方法相比,更符合人类认识现实世界的思维方式,已成为程序设计的主流方向 涉及的主要概念:抽象.封装.继承.多态 对象 现实世界中:万物皆对象,都具有各自的属性,对外界都呈现各自的行为 程序中:一切都是对象,都具有标识 (identity), 属性和行为(方法),通过一个或多个变量来保存其

字符串-函数、对象、方法 概念问题

引用自:https://mp.weixin.qq.com/s/4y8XjA-ZGc_KzAnGJ_PF6Q 作  者:  邹琪鲜 PythonerCN 3月12日 3.4函数.对象.方法 在前面的学习过程中,我们已经用到了一些函数和方法,也提到过对象这个词,但你可能会发现,前面提到的函数和方法,看着好像有些类似,比如ord( ).turtle.right( ).现在我们要对字符串做更多的操作,就会用到更多的方法和函数,在这之前,我们先搞清楚一些概念. 3.4.1函数 函数是用来解决特定问题的一段

《三》深入理解Pod对象

Pod容器分类 最小部署单元 一组容器的集合 一个Pod中的容器共享网络命名空间 Pod是短暂的 Infrastructure Container:基础容器? 维护整个Pod网络空间InitContainers:初始化容器? 先于业务容器开始执行Containers:业务容器? 并行启动 镜像拉取策略(imagePullPolicy) IfNotPresent:默认值,镜像在宿主机上不存在时才拉取 Always:每次创建 Pod 都会重新拉取一次镜像 Never: Pod 永远不会主动拉取这个镜