深入剖析k8s-Pod篇

为什么需要Pod?

  1. 进程是以进程组的方式组织在一起。
  2. 受限制容器的“单进程模型”, 成组调用没有被妥善处理(资源调用有限),使用资源囤积则导致复杂度上升。

在k8s项目中,Pod的实现需要使用一个中间容器——Infra容器,该容器永远是第一个被创建的容器,用户定义的其他容器则通过Join Network Namespace的方式与Infra容器关联在一起。
在这里插入图片描述

initContainer

Init Container容器会按顺序逐一启动,而直到它们启动并且退出了,用户容器才会启动

nodeselector

nodeselector:disktype: ssd

意味着这个Pod只能在携带disktype:ssd标签的节点上运行,否则调度失败

NodeName

一旦Pod的这个字段被赋值,K8s则认为这个Pod已经被调度

HostAliases

定义了Pod的host文件(比如/etc/hosts)里的内容

shareProcessNamespace

这个Pod里的容器要共享PID Namespace,Pod就是要让其中的容器尽可能多地共享Linux Namespace

HostNetwork, hostIPC, hostPID

待补充

Lifecycle

  • postStart: 在容器启动后立即执行一个指定操作。虽然在Docker ENTRYPOINT执行之后,但并不严格保证顺序。
  • preStop:容器被结束之前(比如收到了SIGKILL信号)执行是同步的。

Pod的生命周期

  • Pending:Pod的YAML文件已经提交给了k8s,API对象已经创建并保存到etcd中。但是Pod里的容器因为某种原因不能被顺利创建(比如:调度不成功)。
  • Running:
  • Succeeded:一段时间就退出的Pod,反馈任务执行的结果(运行一次性任务时最为常见)。
  • Failed:Pod里至少有一个容器以不正常的状态(非0的返回码)退出。查看Events和日志。
  • Unknown:异常状态,很有可能是Master和kubelet间的通信出了问题。

特殊的Volume

Secret

Pod想要访问的加密数据存放到etcd中,可以通过Pod的容器里挂载Volume的方式去访问Secret里保存的信息。

k create secret generic user --from-file=./username.txtk create secret generic pass --from-file=./password.txt

在这里插入图片描述
也可以使用Secret.yaml来进行生成。

apiVersion: v1
kind: Secret
metadata:name: mysecret
type: Opaque
data:username: YWRtaW4=password: MTIzNDU2

但Secret对象要求这些数据需要经过Base64进行转码,同时创建出来的Secret对象只有一个,在data中以key-value的形式保存。
在这里插入图片描述

ConfigMap

使用properties文件生成ConfigMap,与Secret区别在ConfigMap保存的是无须加密、应用所需的配置信息。
在这里插入图片描述

Downward API

让Pod里的容器能够直接获取这个Pod API对象本身的信息。比如可以获取Pod的Labels字段的值

注意

通过环境变量获取这些信息的方式不具备自动更新的能力,建议使用volume文件的方式获取这些消息。

ServiceAccountToken

是一种特殊的Secret对象,每一个Pod都已经自动声明了一个类型是Secret、名为default-token-xxxx的Volume,然后自动挂载在每一个容器的一个固定目录上。
在这里插入图片描述
考虑到自动挂载默认ServiceAccountToken的潜在风险,K8s允许设置默认不为Pod里的容器自动挂载Volume

容器健康检查和恢复机制

容器健康检查-liveness

apiVersion: v1
kind: Pod
metadata:name: test-liveness-execlabels:test: liveness
spec:containers:- name: livenessimage: busyboxargs:- /bin/sh- -c- touch /tmp/healthy; sleep 30; rm -rf /tmp/healthy; sleep 600livenessProbe:exec:command:- cat- /tmp/healthyinitialDelaySeconds: 5periodSeconds: 5

也可以定义为发起HTTP或者TCP请求的方式。所以Pod其实可以暴露一个健康检查URL(/healthz)

恢复机制 restartPolicy

默认值为Always,Pod的恢复过程永远发生在当前节点上,而不会跑到别的节点上。

  • Always
  • OnFailure
  • Never:如果关心这个容器退出后的上下文环境,比如容器退出后的日志、文件和目录,就需要将restartPolicy设置为Never

PodPreset

Pod的annotation会表示该Pod被PodPreset改动过,并且修改对象只能是Pod。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/713457.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

css【详解】—— 圣杯布局 vs 双飞翼布局 (含手写清除浮动 clearfix)

两者功能效果相同&#xff0c;实现方式不同 效果预览 两侧宽度固定&#xff0c;中间宽度自适应&#xff08;三栏布局&#xff09;中间部分优先渲染允许三列中的任意一列成为最高列 圣杯布局 通过左右栏填充容器的左右 padding 实现&#xff0c;更多细节详见注释。 <!DOCTYP…

《无线网络技术》考试版笔记

第一章 无线网络介绍 什么是多径效应&#xff0c;如何去克服&#xff1a; 在发射机和接收机之间没有明显的直线路径时&#xff0c;就会产生多径传播。如果两个信号彼此叠加&#xff0c;那么接收设备就无法正确解调信号&#xff0c;无法还原为它的原始数据形式。 可以稍微调整接…

USLE模型-LS因子的计算

目录 计算坡度计算填洼计算流向计算水流长度计算水平投影![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/75e015b2d6874ce9b6652f2b8730b90f.png)计算可变的坡度指数m计算坡长因子L计算坡度因子S计算LS因子参考视频 计算坡度 准备好30米分辨率的dem 计算填洼 计…

速看!深夜悄悄分享一个电力优化代码集合包!

代码集合包如下&#xff1a; 主从博弈的智能小区定价策略及电动汽车调度策略 碳交易机制下的综合能源优化调度 两阶段鲁棒优化算法的微网多电源容量配置 冷热电多能互补综合能源系统优化调度 考虑预测不确定性的综合能源调度优化 考虑柔性负荷的综合能源系统低碳经济优化调度 考…

C语言学生成绩信息管理系统【结构体+文本】

功能描述&#xff1a; 1、录入成绩 2、显示不及格学生信息 3、统计每档学生数量 4、总成绩统计 代码&#xff1a; #include<stdio.h>#define N 30//结构体&#xff1a;typedef struct STUDENT{char id[10];//学号char name[20];//姓名float score[3];//三门成绩,分别代…

Socket网络编程(四)——点对点传输场景方案

目录 场景如何去获取到TCP的IP和Port&#xff1f;UDP的搜索IP地址、端口号方案UDP搜索取消实现相关的流程&#xff1a;代码实现逻辑服务端实现客户端实现UDP搜索代码执行结果 TCP点对点传输实现代码实现步骤点对点传输测试结果 源码下载 场景 在一个局域网当中&#xff0c;不知…

生成式人工智能治理:入门的基本技巧

GenAI 以前所未有的速度调解并扰乱了“一切照旧”&#xff0c;同时带来了令人难以置信的力量&#xff0c;但也带来了不可否认的责任。当然&#xff0c;现代企业非常熟悉技术进步。然而&#xff0c;人工智能的到来&#xff08;和实施&#xff09;无疑引起了相当大的冲击&#xf…

Linux服务:Nginx反向代理与负载均衡

一、Nginx反向代理 1、什么是反向代理&#xff1f; 代理分为两类&#xff0c;正向代理和反向代理。 ①正向代理&#xff1a;帮助用户访问服务器&#xff0c;缓存服务器内容。 ②反向代理&#xff1a;代理服务器处理用户的请求&#xff0c;决定转发请求给谁处理负载均衡的作…

Go 与 Rust:导航编程语言景观

在当今构建软件时&#xff0c;开发者在编程语言上有着丰富的选择。两种脱颖而出的语言是 Go 和 Rust - 都很强大但却截然不同。本文将从各种因素比较这两种语言&#xff0c;以帮助您确定哪种更适合您的需求。 我们将权衡它们在并发、安全性、速度、互操作性等方面的方法。我们将…

Ubuntu篇——crontab修改编辑器

输入命令: crontab -e 如果你的系统是第一次使用crontab服务&#xff0c;会首先让你选择一个编辑器 如果已经选择过编辑器&#xff0c;后续想要修改默认编辑器&#xff0c;可以输入sudo select-editor进行修改。

Node.js基础---Express中间件

1. 概念 1.什么是中间件 中间件(Middleware)&#xff0c;特指业务流程的中间处理环节 2. Express 中间件的调用流程 当一个请求到达 Express 的服务器后&#xff0c;可以连续调用多个中间件&#xff0c;从而对这次请求进行预处理 3. Express 中间件格式 Express 的中间件&…

每周一算法:双端队列广搜

题目链接 电路维修 题目描述 达达是来自异世界的魔女&#xff0c;她在漫无目的地四处漂流的时候&#xff0c;遇到了善良的少女翰翰&#xff0c;从而被收留在地球上。翰翰的家里有一辆飞行车。有一天飞行车的电路板突然出现了故障&#xff0c;导致无法启动。 电路板的整体结…

吴恩达机器学习笔记十四 多输出的分类 多类和多标签的区别 梯度下降优化 卷积层

这里老师想讲的是multiclass classification和multilable classification的区别&#xff0c;下面是我从其他地方找到的说法: Multiclass classification 多类分类 意味着一个分类任务需要对多于两个类的数据进行分类。比如&#xff0c;对一系列的橘子&#xff0c;苹果或者梨的…

Linux命令行与shell脚本编程大全-2.2

第二部分 shell脚本编程基础 第11章构建基础脚本 第12章结构化命令 第13章更多的结构化命令 第14章处理用户输入 第15章呈现数据 第16章脚本控制 第15章 呈现数据 15.1 理解输入和输出 15.1.1 标准文件描述符 Linux 系统会将每个对象当作文件来处理&#xff0c;这包括输入和…

T3SF:一款功能全面的桌面端技术练习模拟框架

关于T3SF T3SF是一款功能全面的桌面端技术练习模拟框架&#xff0c;该工具针对基于主场景事件列表的各种事件提供了模块化的架构&#xff0c;并包含了针对每一个练习定义的规则集&#xff0c;以及允许为对应平台参数定义参数的配置文件。 该工具的主模块能够执行与其他特定模…

CDN原理探究

来源于百度&#xff1a; https://baike.baidu.com/item/%E5%86%85%E5%AE%B9%E5%88%86%E5%8F%91%E7%BD%91%E7%BB%9C/4034265?frge_ala 通过上图&#xff0c;我们可以了解到&#xff0c;使用了CDN缓存后的网站的访问过程变为&#xff1a; 用户向浏览器提供要访问的域名&#xff…

幻兽帕鲁/Palworld服务器的最佳网络设置、内存和CPU配置是什么?

幻兽帕鲁/Palworld服务器的最佳网络设置、内存和CPU配置是什么&#xff1f; 对于4到8人的玩家&#xff0c;推荐的配置是4核16G的CPU和16G的内存。10到20人的玩家选择8核32G的CPU和32G或以上的内存。2到4人的玩家则建议选择4核8G的CPU和8G的内存。对于32人的玩家&#xff0c;推…

YOLOV8介绍

原文链接&#xff1a; 1、 详解YOLOv8网络结构/环境搭建/数据集获取/训练/推理/验证/导出 2、Yolov8的详解与实战 3、YOLOV8模型训练部署&#xff08;实战&#xff09;&#xff08;&#xff09;有具体部署和训练实现代码YOLOV8模型训练部署&#xff08;实战&#xff09;&…

Mybatis plus核心功能-IService

目录 1 前言 2 使用方法 2.1 继承ServiceImpl,> 2.2 基础业务开发的使用 2.3 复杂业务开发的使用 2.3 Lambda查询 2.4 Lambda更新 1 前言 我本以为Mapper层的类能够继承BaseMapper<XXX>&#xff0c;而不用我们手动写一些mapper方法已经够离谱了。没想到海油膏…

【机器学习300问】25、常见的模型评估指标有哪些?

模型除了从数据划分的角度来评估&#xff0c;我上一篇文章介绍了数据集划分的角度&#xff1a; 【机器学习300问】24、模型评估的常见方法有哪些&#xff1f;http://t.csdnimg.cn/LRyEt 还可以从一些指标的角度来评估&#xff0c;这篇文章就带大家从两个最经典的任务场景介绍…