k8s,进一步理解Pod

news2025/2/23 12:53:14

比如,凡是调度、网络、存储,以及安全相关的属性,基本上是Pod 级别的

这些属性的共同特征是,它们描述的是“机器”这个整体,而不是里面运行的“程序”。比如,配置这个“机器”的网卡(即:Pod的网络定义),配置这个“机器”的磁盘(即:Pod的存储定义),配置这个“机器”的防火墙(即:Pod的安全定义)。更不用说,这台“机器”运行在哪个服务器之上(即:Pod的调度)

  • NodeSelector:是一个供用户将Pod与Node进行绑定的字段
  • HostAliases:定义了Pod的hosts文件(比如/etc/hosts)里的内容
    在这里插入图片描述

docker run里的-it(-i即stdin,-t即tty)参数。

如果你还是不太理解它们俩的作用的话,可以直接认为tty就是Linux给用户提供的一个常驻小程序,用于接收用户的标准输入,返回操作系统的标准输出。当然,为了能够在tty中输入信息,你还需要同时开启stdin(标准输入流)

  • 凡是跟容器的Linux Namespace相关的属性,也一定是Pod 级别的,如:shareProcessNamespace=true
  • 凡是Pod中的容器要共享宿主机的Namespace,也一定是Pod级别的定义

容器级别的字段:

  • 首先,是ImagePullPolicy字段,ImagePullPolicy的值默认是Always,即每次创建Pod都重新拉取一次镜像,而如果它的值被定义为Never或者IfNotPresent,则意味着Pod永远不会主动拉取这个镜像,或者只在宿主机上不存在这个镜像时才拉取(如果镜像是latest,那么每次肯定是取最新的)
  • 其次,是Lifecycle字段。它定义的是Container Lifecycle Hooks。顾名思义,Container Lifecycle Hooks的作用,是在容器状态发生变化时触发一系列“钩子”。
  • Pod对象的Status字段,还可以再细分出一组Conditions。这些细分状态的值包括:PodScheduled、Ready、Initialized,以及Unschedulable。它们主要用于描述造成当前Status的具体原因是什么
  • 在这里插入图片描述

Volumn
Volume,叫作Projected Volume,你可以把它翻译为“投射数据卷”,这些特殊Volume的作用,是为容器提供预先定义好的数据
到目前为止,Kubernetes支持的Projected Volume一共有四种:

Secret;

ConfigMap;

Downward API;

ServiceAccountToken。

  • secret对象
    Secret对象要求这些数据必须是经过Base64转码的,以免出现明文密码的安全隐患,在真正的生产环境中,你需要在Kubernetes中开启Secret的加密插件,增强数据的安全性

卷的核心是一个目录,其中可能包含一些数据,pod中的容器可以访问该目录。该目录的形成方式、支持它的介质以及它的内容由所使用的特定卷类型决定。
要使用卷,需要在.spec.volumes中指定要为pod提供的卷,并在.spec.containers[*].volumeMounts中声明加载这些卷到容器的位置。容器中的进程会看到一个文件系统视图,该视图由容器镜像的初始内容以及容器中装入的卷(如果已定义的话)组成。该进程会看到一个root文件系统,它最初与容器镜像的内容相匹配。如果允许,对该文件系统层次结构中的任何写入都会影响该进程在执行后续文件系统访问时查看的内容。在镜像中的指定路径上加载卷。对于pod中定义的每个容器,必须单独指定容器使用的每个卷的加载位置

各种不同类型的卷

与Secret类似的是ConfigMap,它与Secret的区别在于,ConfigMap保存的是不需要加密的、应用所需的配置信息。

  • 获取pod信息
    接下来是Downward API,它的作用是:让Pod里的容器能够直接获取到这个Pod API对象本身的信息,Downward API能够获取到的信息,一定是Pod里的容器进程启动之前就能够确定下来的信息
    在这里插入图片描述

  • 授权
    像这样的Service Account的授权信息和文件,实际上保存在它所绑定的一个特殊的Secret对象里的。这个特殊的Secret对象,就叫作ServiceAccountToken。任何运行在Kubernetes集群上的应用,都必须使用这个ServiceAccountToken里保存的授权信息,也就是Token,才可以合法地访问API Server。
    这种把Kubernetes客户端以容器的方式运行在集群里,然后使用default Service Account自动授权的方式,被称作“InClusterConfig”,也是我最推荐的进行Kubernetes API编程的授权方式。

  • 健康检查
    在Kubernetes中,你可以为Pod里的容器定义一个健康检查“探针”(Probe)。这样,kubelet就会根据这个Probe的返回值决定这个容器的状态,而不是直接以容器镜像是否运行(来自Docker返回的信息)作为依据。
    在容器启动5 s后开始执行(initialDelaySeconds: 5),每5 s执行一次(periodSeconds: 5)

  • 恢复机制
    Pod的恢复过程,永远都是发生在当前节点上,而不会跑到别的节点上去,
    Pod恢复机制,也叫restartPolicy。它是Pod的Spec部分的一个标准字段(pod.spec.restartPolicy),默认值是Always,即:任何时候这个容器发生了异常,它一定会被重新创建。
    而如果你想让Pod出现在其他的可用节点上,就必须使用Deployment这样的“控制器”来管理Pod,哪怕你只需要一个Pod副本
    在这里插入图片描述
    readinessProbe的字段。虽然它的用法与livenessProbe类似,但作用却大不一样。readinessProbe检查结果的成功与否,决定的这个Pod是不是能被通过Service的方式访问到,而并不影响Pod的生命周期。

  • 如何追加信息到Pod
    比如,开发人员只需要提交一个基本的、非常简单的Pod YAML,Kubernetes就可以自动给对应的Pod对象加上其他必要的信息,比如labels,annotations,volumes等等。而这些信息,可以是运维人员事先定义好的。
    运维人员就可以定义一个PodPreset对象。在这个对象中,凡是他想在开发人员编写的Pod里追加的字段,都可以预先定义好
    PodPreset里定义的内容,只会在Pod API对象被创建之前追加在这个对象本身上,而不会影响任何Pod的控制器的定义

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

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

相关文章

Unity 使用LineRenderer制作模拟2d绳子

效果展示: 实现如下: 首先,直接上代码: using System.Collections; using System.Collections.Generic; using UnityEngine;public class LineFourRender : MonoBehaviour {public Transform StartNode;public Transform MidNod…

博物馆导览系统方案(一)背景需求分析与核心技术实现

维小帮提供多个场所的室内外导航导览方案,如需获取博物馆导览系统解决方案可前往文章最下方获取,如有项目合作及技术交流欢迎私信我们哦~撒花! 一、博物馆导览系统的背景与市场需求 在数字化转型的浪潮中,博物馆作为文化传承和知…

14.在 Vue 3 中使用 OpenLayers 自定义地图版权信息

在 WebGIS 开发中,默认的地图服务通常会带有版权信息,但有时候我们需要根据项目需求自定义版权信息或添加额外的版权声明。在本文中,我们将基于 Vue 3 的 Composition API 和 OpenLayers,完成自定义地图版权信息的实现。 最终效果…

详解下c语言中的typedef

相信学习过c语言的很多同学都对typedef很陌生,感觉它离自己很遥远,自己很少用到。但实际上,我们看很多地方,包括很多大神级别的代码中,它却又经常使用。今天我们就详细描述下它,使我们对它有一个更深的认识…

19. Three.js案例-创建一个带有纹理映射的旋转平面

19. Three.js案例-创建一个带有纹理映射的旋转平面 实现效果 知识点 WebGLRenderer (WebGL渲染器) WebGLRenderer 是 Three.js 中用于渲染场景的主要类。它利用 WebGL 技术在浏览器中绘制 3D 图形。 构造器 new THREE.WebGLRenderer(parameters)参数类型描述parametersobj…

Ensemble Learning via Knowledge Transfer for CTR Prediction 论文阅读

Abstract:点击率(CTR)预测在推荐系统和网络搜索中起着关键作用。虽然许多现有的方法利用集成学习来提高模型性能,但它们通常将集成限制在两个或三个子网络中,很少探索更大的集成。在本文中,我们研究了更大的集成网络&a…

苍穹外卖项目练习总结

做这个练习项目已经接近两年之久,现在拿出来复习一遍,主要就是里面处理问题的流程,以及整体思考的逻辑需要重新回顾一遍,后续会逐渐总结这一段时间以来学习到的知识。 项目整体包含两部分,一个是管理端,一…

数学拯救世界(三)———破魔

题目一: 还记不记得,出现带分数的话可以怎么办? 题目二: 还记不记得,昨天讲的重叠数 题目三: 提公因数,抓住问题本质 题目四:

JAVA |日常开发中连接Sqlite数据库详解

JAVA |日常开发中连接Sqlite数据库详解 前言一、SQLite 数据库概述1.1 定义与特点1.2 适用场景 二、Java 连接 SQLite 数据库的准备工作2.1 添加 SQLite JDBC 驱动依赖2.2 了解 JDBC 基础概念 三、建立数据库连接3.1 代码示例3.2 步骤解析 四、执行 SQL 语句4.1 创建…

对 JavaScript 说“不”

JavaScript编程语言历史悠久,但它是在 1995 年大约一周内创建的。 它最初被称为 LiveScript,但后来更名为 JavaScript,以赶上 Java 的潮流,尽管它与 Java 毫无关系。 它很快就变得非常流行,推动了 Web 应用程序革命&…

解谜类游戏《迷失岛2》等如何抽象出一套通用高效开发框架?

解谜类游戏以精妙的谜题设计和引人入胜的故事叙述为特点,考验着玩家的智慧与观察力。《迷失岛2》与《南瓜先生2九龙城寨》正是这一领域的佳作。游戏以独特的艺术风格和玩法设计吸引了大量玩家,而它们背后隐藏着一套强大的框架。 上海胖布丁游戏的技术总…

CID引流电商

ClickID技术是基于多家媒体平台开发的电商引流服务,通过媒体提供的宏参数,间接解决电商平台订单数据的回传问题,帮助账户收集到极致精准的数据模型,搭建不同媒体往各平台引流的桥梁。简单来说就是通过ClickID数据监测到另外一个平…

保姆级教程Docker部署Redis镜像

目录 1、创建挂载目录和配置文件 2、运行Redis镜像 3、查看redis运行状态 1、创建挂载目录和配置文件 # 创建宿主机Redis配置文件存放目录 sudo mkdir -p /data/docker/redis/conf# 创建Redis配置文件 cd /data/docker/redis/conf sudo touch redis.conf 到Github上找到Redi…

如何将快捷指令添加到启动台

如何将快捷指令添加到启动台/Finder/访达(Mac) 1. 打开快捷指令创建快捷指令 示例创建了一个文件操作测试的快捷指令。 2. 右键选择添加到程序坞 鼠标放在待添加的快捷指令上。 3. 右键添加到访达 鼠标放在待添加的快捷指令上。 之后就可以在启…

【AI学习】Mamba学习(二十):Mamba是一种线性注意力

论文《Demystify Mamba in Vision: A Linear Attention Perspective 》从线性注意力的视角,对Mamba 进行了阐释。 论文名称:Demystify Mamba in Vision: A Linear Attention Perspective (Arxiv 2024.05) 论文地址:https://arxiv.org/pdf/24…

Bootstrap-HTML(三)Bootstrap5列表组全解析

Bootstrap-HTML(三)Bootstrap5列表组全解析 前言(一)HTML 列表基础回顾1.无序列表2.有序列表3.定义列表 二、无样式的有序列表和无序列表内联列表 三、Bootstrap5 列表组1.基础的列表组2.设置禁用和活动项3.链接项的列表组4.移除列…

【CSP CCF记录】202212-2第28次认证 训练计划

题目 样例1输入 10 5 0 0 0 0 0 1 2 3 2 10 样例1输出 1 1 1 1 1 10 9 8 9 1 样例1解释 五项科目间没有依赖关系,都可以从第 1 天就开始训练。 10天时间恰好可以完成所有科目的训练。其中科目 1 耗时仅 1天,所以最晚可以拖延到第 10 天再开始训练&…

java 18 异常处理

一,异常概念 基本概念Java语言中,将程序执行中发生的不正常情况称为“异常”。(开发过程中的语法错误和逻辑错误不是异常) 执行过程中所发生的异常事件可分为两大类: 1)Error(错误):Java虚拟机无法解决的严重问题。如:JVM系统内部…

【Spark】 groupByKey与reduceByKey的区别

groupByKey 操作:将相同键的所有值收集到一个集合中。实现:不会在map端进行局部聚合,而是直接将所有相同键的数据传输到reduce端进行聚合。缺点:由于没有本地聚合,groupByKey会导致大量的数据传输和shuffle&#xff0c…