K8s知识点总结_part2

为什么我们会需要 Pod?

容器的本质是一种特殊的进程,如果映射到系统中,容器镜像就是这个系统里的“.exe”安装包

那么 Kubernetes 呢?Kubernetes 就是操作系统

在一个真正的操作系统里,进程并不是“孤苦伶仃”地独自运行的,而是以进程组的方式,“有原则地”组织在一起。

而 Kubernetes 项目所做的,其实就是将“进程组”的概念映射到了容器技术中,并使其成为了这个云计算“操作系统”里的“一等公民”。

Pod 是 Kubernetes 里的原子调度单位。这就意味着,Kubernetes 项目的调度器,是统一按照 Pod 而非容器的资源需求进行计算的。

关于 Pod 最重要的一个事实是:它只是一个逻辑概念。

也就是说,Kubernetes 真正处理的,还是宿主机操作系统上 Linux 容器的 Namespace 和 Cgroups,而并不存在一个所谓的 Pod 的边界或者隔离环境

Pod 又是怎么被“创建”出来的呢?

答案是:Pod,其实是一组共享了某些资源的容器

具体的说:

Pod 里的所有容器,共享的是同一个 Network Namespace,并且可以声明共享同一个 Volume。

Pod的实现:

在 Kubernetes 项目里,Pod 的实现需要使用一个中间容器,这个容器叫作 Infra 容器。在这个 Pod 中,Infra 容器永远都是第一个被创建的容器,

而其他用户定义的容器,则通过 Join Network Namespace 的方式,与 Infra 容器关联在一起。这样的组织关系,叫做pod。可以用下面这样一个示意图来表达: 
 

Infra 容器一定要占用极少的资源,所以它使用的是一个非常特殊的镜像,叫作:k8s.gcr.io/pause。这个镜像是一个用汇编语言编写的、永远处于“暂停”状态的容器,解压后的大小也只有 100~200 KB 左右。

而在 Infra 容器“Hold 住”Network Namespace 后,用户容器就可以加入到 Infra 容器的 Network Namespace 当中了。

所以,如果你查看这些容器在宿主机上的 Namespace 文件,它们指向的值一定是完全一样的。

对于 Pod 里的容器 A 和容器 B 来说:

  1. 通信:它们可以直接使用 localhost 进行通信
  2. 网络:它们看到的网络设备跟 Infra 容器看到的完全一样
  3. IP地址:一个 Pod 只有一个 IP 地址,也就是这个 Pod 的 Network Namespace 对应的 IP 地址;
  4. 其他网络资源:其他的所有网络资源,都是一个 Pod 一份,并且被该 Pod 中的所有容器共享
  5. 生命周期:Pod 的生命周期只跟 Infra 容器一致,而与容器 A 和 B 无关。

Pod的基本概念

Pod的组成

由以下组件组成:

  • 容器:Pod中可以有一个或多个容器
  • 共享存储:Pod中的所有容器都可以访问共享存储卷
  • 网络:Pod中的所有容器都共享相同的网络命名空间和IP地址。

Pod的用途

Pod是K8s中最基本的计算单元,用于托管应用程序或服务。

Pod可用于:

  • 运行单个容器应用程序。
  • 运行多个相关容器应用程序。
  • 运行应用程序和sidecar容器,(sidecar容器提供支持应用程序所需的其他功能,如日志记录、监视和调试。)
  • 提供应用程序和其依赖项之间的网络通信。
  • 提供应用程序和存储之间的访问

Pod的生命周期

具有以下生命周期:

  • 创建:当Pod定义被提交到K8s API服务器时,Pod被创建
  • 运行:当Pod被调度到节点上时,Pod处于运行状态。
  • 更新:可以通过更新Pod的定义来更新Pod中的容器和其他资源
  • 扩展:可以通过创建更多的Pod实例扩展应用程序。
  • 删除:当Pod被删除时,Pod中的容器被停止并且Pod中的资源被释放

Pod的特点

具有以下特点:

  • Pod是最小的可部署单元,它封装了一个或多个容器。
  • Pod提供了容器共享网络和存储的能力。
  • Pod具有自己的IP地址和DNS名称,可以作为一个独立的服务进行访问。
  • Pod可以水平扩展,即可以通过副本集进行复制并进行负载均衡。
  • Pod可以使用亲和性和反亲和性进行节点调度,以满足特定的调度需求。

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

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

相关文章

Java SE:面向对象(下)

1. static关键字 静态区的特点:静态区里面的每一样东西都是唯一有且仅有一个的,如此时str1 "abc"即此时静态区里面已经创建了字符串abc并将abc地址赋给str1,后面在进行赋值也不会在静态区开辟一串新的"abc" 1.1 static修…

【超简版,代码可用!】【0基础Python爬虫入门——下载歌曲/视频】

安装第三方模块— requests 完成图片操作后输入:pip install requests 科普: get:公开数据 post:加密 ,个人信息 进入某音乐网页,打开开发者工具F12 选择网络,再选择—>媒体——>获取URL【先完成刷新页面】 科…

庞加莱猜想与品牌营销:网络集成化生态系统的力量

在数学界,庞加莱猜想一直是一个令人着迷的问题。而今,这一猜想与品牌营销产生了奇妙的联系。本文将结合庞加莱猜想,探讨品牌如何通过网络集成化生态系统实现低成本的市场推广,唤醒需求侧需求并扩展用户圈层。 首先,庞…

软考14-上午题-编译、解释程序翻译阶段

一、编译、解释程序【回顾】 目的:高级程序设计语言(汇编语言、高级语言)—【翻译】—>机器语言 1-1、编译方式 将高级语言书写的源程序——>目标程序(汇编语言、机器语言) 包含的工作阶段:词法分…

计算机中丢失VCRUNTIME140_1.dll

去微软官网下载安装 Visual C 下载地址:Latest supported Visual C Redistributable downloads | Microsoft Learn https://aka.ms/vs/17/release/vc_redist.x64.exe Visual Studio 2015、2017、2019 和 2022 下表列出了 Visual Studio 2015、2017、2019 和 2022 …

OSS存储引擎如何使用以及如何添加图片【建议收藏】

Aliyun OSS对象存储,可以用来做文件服务器,存放一些文件,图片等资源,那么我们使用OSS,需要经历以下步骤: 这里就从如何开通OSS服务开始进行,到如何上传一个资源文件到OSS结束。 1、阿里云注册 …

贪心算法详解

文章目录 前言一、什么是贪心算法二、贪心算法的特点1.贪心策略的提出2.贪心策略的正确性 三、学习贪心算法的方向总结 前言 在本次文章中我们将会详细介绍贪心算法的相关内容 一、什么是贪心算法 贪心算法:在解决问题时,每一步都选择最优解&#xff0…

Linux:vim的相关知识

目录 vim 是一个较为常见的编译文件的命令操作。 三种模式的区分的作用如下: 命令模式: 插入模式: 进入插入模式的标志:左下角有INSERT 底行模式: 命令模式的常见命令: 底行模式常见命令&#xff1…

初识k8s(概述、原理、安装)

文章目录 概述由来主要功能 K8S架构架构图组件说明ClusterMasterNodekubectl 组件处理流程 K8S概念组成PodPod控制器ReplicationController(副本控制器)ReplicaSet (副本集)DeploymentStatefulSet (有状态副本集&#…

借助GPT,我是如何帮同事秒解bug

背景 昨天晚上8点多,正准备下班 同事突然跑过来,问我:为什么用aws命令行下载的数据可以正常下载,但是我用Go写的,怎么下载不下来 看他抓耳挠腮,然后又说困扰了很久 我心想这么简单的问题,额。。…

系统性学习vue-vue-router

vue-router 路由的简介SPA路由 路由的基本使用安装引入使用标签式编程式 注意 嵌套(多级)路由路由传参query参数params参数 命名路由路由的props配置router-link的replace属性编程式路由导航路由跳转后退和前进 缓存路由组件两个新的生命周期钩子函数路由守卫全局前置守卫全局后…

让二叉树无处可逃

志不立,天下无可成之事。 ——王阳明 二叉树 1、树?什么是树1、1、基本概念1、2、树的相关概念1、3、树的表示方式1、4、树的实际运用 2、二叉树?只有两个分支吗?2、1、基本概念2、2、二叉树的相关定义2、3、二叉树的相关性质2、4…

C++: vector

目录 1.vector的介绍 2.vector常用的接口 1.vector构造 2.迭代器iterator的使用 3.vector空间增长 4.vector的增删改查 3.vector模拟实现 如果在reverse时使用memcpy会怎么样? 1.vector的介绍 C中的vector是一个动态数组容器,可以存储任意类型的…

simulink限幅模块-Saturation

限幅模块 限幅模块(Saturation)对输出值施加了上下限约束。当输出值超过上限时,限定于上限值输出;当输出值低于下限时,限定于下限值输出;在上下限之间时,保持原输出。Saturation模块默认包含一…

网络安全--防御保护02

第二天重要的一个点是区域这个概念 防火墙的主要职责在于控制和防护---安全策略---防火墙可以根据安全策略来抓取流量之后做出对应的动作 防火墙的分类: 单一主机防火墙:专门有设备作为防火墙 路由集成:核心设备,可流量转发 分…

为什么单片机不能直接驱动继电器和电磁阀?

为什么单片机不能直接驱动继电器和电磁阀? 在开始前我有一些资料,是我根据网友给的问题精心整理了一份「单片机的资料从专业入门到高级教程」, 点个关注在评论区回复“888”之后私信回复“888”,全部无偿共享给大家!&…

vue3源码(一)搭建开发环境

Monorepo:是管理项目代码的一个方式,指在一个项目仓库(repo)中管理多个模块/包(package) vue3源码采用Monorepo管理项目 vue3项目架构 搭建Monorepo环境 1.全局安装pnpm npm install pnpm -g # 全局安装pnpm pnpm init -y # 初始化配置文件创建.npmrc文件&#x…

Docker基础语法

目录 一.docker安装 二.docker基础名词 三.docker基础命令 四.命令别名 五.数据卷 六.挂载本地目录或文件 七.Docker镜像 八.网络 一.docker安装 1.安装yum工具 yum install -y yum-utils device-mapper-persistent-data lvm2 2.安装 docker yum源 yum-config-manag…

EXECL 单元格字符串链接 CONCAT :应用:将一行数据转为json

源: 目标 函数表示 CONCAT("data", CHAR(10), "{", CHAR(10), " ", "ulAlarmId : ", A5, CHAR(10), " ", "ulAlarmLevel : ", D5, CHAR(10)," ", "bBo…

JavaEE-微服务-Vuex

Vuex 2.1 什么是Vuex Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。 Vuex在组件之间共享数据。 2.2 使用 vue cli 构建项目 2.3 入门案例 2.3.1 定义数据 export default new Vuex.Store({state: { // 状态区域(定义变量区域)user: ,toke…