容器组_概述

news2024/11/18 11:38:06
在这里插入图片描述

📕作者简介: 过去日记,致力于Java、GoLang,Rust等多种编程语言,热爱技术,喜欢游戏的博主。
📘相关专栏Rust初阶教程、go语言基础系列、spring教程等,大家有兴趣的可以看一看
📙Java并发编程系列,设计模式系列、go web开发框架 系列正在发展中,喜欢Java,GoLang,Rust,的朋友们可以关注一下哦!


文章目录

    • 容器组_概述
      • 什么是 Pod 容器组
      • Pod 如何管理多个容器
      • 使用 Pod 容器组
      • 容器组和控制器
      • Pod Template
      • Termination of Pods

容器组_概述

什么是 Pod 容器组

Pod(容器组)是 Kubernetes 中最小的可部署单元。一个 Pod(容器组)包含了一个应用程序容器(某些情况下是多个容器)、存储资源、一个唯一的网络 IP 地址、以及一些确定容器该如何运行的选项。Pod 容器组代表了 Kubernetes 中一个独立的应用程序运行实例,该实例可能由单个容器或者几个紧耦合在一起的容器组成。

Kubernetes 集群中的 Pod 存在如下两种使用途径:

  • 一个 Pod 中只运行一个容器。“one-container-per-pod” 是 Kubernetes 中最常见的使用方式。此时,您可以认为 Pod 容器组是该容器的 wrapper,Kubernetes 通过 Pod 管理容器,而不是直接管理容器。
  • 一个 Pod 中运行多个需要互相协作的容器。您可以将多个紧密耦合、共享资源且始终在一起运行的容器编排在同一个 Pod 中,可能的情况有:
    • Content management systems, file and data loaders, local cache managers 等
    • log and checkpoint backup, compression, rotation, snapshotting 等
    • data change watchers, log tailers, logging and monitoring adapters, event publishers 等
    • proxies, bridges, adapters 等
    • controllers, managers, configurators, and updaters

每一个 Pod 容器组都是用来运行某一特定应用程序的一个实例。如果您想要水平扩展您的应用程序(运行多个实例),您运行多个 Pod 容器组,每一个代表应用程序的一个实例。Kubernetes 中,称其为 replication(复制副本)。Kubernetes 中 Controller(控制器)负责为应用程序创建和管理这些复制的副本。

Pod 如何管理多个容器

Pod 的设计目的是用来支持多个互相协同的容器,是的他们形成一个有意义的服务单元。一个 Pod 中的多个容器很自然就可以随 Pod 被一起调度到集群中的同一个物理机或虚拟机上。Pod 中的容器可以:

  • 共享资源、依赖
  • 互相通信
  • 相互协商何时以何种方式结束运行

某些 Pod 除了使用 app container (工作容器)以外,还会使用 init container (初始化容器),初始化容器运行并结束后,工作容器才开始启动。

Pod 为其成员容器提供了两种类型的共享资源:网络和存储

  • 网络 Networking
    • 同一个 Pod 中的所有容器 IP 地址都相同
    • 同一个 Pod 中的不同容器不能使用相同的端口,否则会导致端口冲突
    • 同一个 Pod 中的不同容器可以通过 localhost:port 进行通信
    • 同一个 Pod 中的不同容器可以通过使用常规的进程间通信手段,例如 SystemV semaphores 或者 POSIX 共享内存
  • 存储 Storage
    • Pod 中可以定义一组共享的数据卷。Pod 中所有的容器都可以访问这些共享数据卷,以便共享数据。Pod 中数据卷的数据也可以存储持久化的数据,使得容器在重启后仍然可以访问到之前存入到数据卷中的数据。请参考 数据卷 Volume

使用 Pod 容器组

您应该尽量避免在 Kubernetes 中直接创建单个 Pod。因为在 Kubernetes 的设计中 Pod 是一个相对来说存活周期短暂,且随时会丢弃的实体。在 Pod 被创建后,将被调度到集群中的一个节点上运行。Pod 将一直保留在该节点上,直到 Pod 以下情况发生:

  • Pod 中的容器全部结束运行
  • Pod 被删除
  • 由于节点资源不够,Pod 被驱逐
  • 节点出现故障(例如死机)

Pod 本身并不能自愈(self-healing)。如果一个 Pod 所在的 Node (节点)出现故障,或者调度程序自身出现故障,Pod 将被删除;同理,当因为节点资源不够或节点维护而驱逐 Pod 时,Pod 也将被删除。Kubernetes 通过引入 Controller(控制器)的概念来管理 Pod 实例。在 Kubernetes 中,更为推荐的做法是使用 Controller 来管理 Pod,而不是直接创建 Pod。

容器组和控制器

用户应该始终使用控制器来创建 Pod,而不是直接创建 Pod,控制器可以提供如下特性:

  • 水平扩展(运行 Pod 的多个副本)
  • rollout(版本更新)
  • self-healing(故障恢复)
    例如:当一个节点出现故障,控制器可以自动地在另一个节点调度一个配置完全一样的 Pod,以替换故障节点上的 Pod。

在 Kubernetes 中,广泛使用的控制器有:

  • Deployment
  • StatefulSet
  • DaemonSet

控制器通过其中配置的 Pod Template 信息来创建 Pod。

Pod Template

Pod Template 是关于 Pod 的定义,但是被包含在其他的 Kubernetes 对象中。控制器通过 Pod Template 信息来创建 Pod。正是由于 Pod Template 的存在,Kuboard 可以使用一个工作负载编辑器来处理不同类型的控制器。

Termination of Pods

Pod 代表了运行在集群节点上的进程,而进程的终止有两种方式:

  • gracefully terminate (优雅地终止)
  • 直接 kill,此时进程没有机会执行清理动作

当用户发起删除 Pod 的指令时,Kubernetes 需要:

  • 让用户知道 Pod 何时被删除
  • 确保删除 Pod 的指令最终能够完成

Kubernetes 收到用户删除 Pod 的指令后:

  1. 记录强制终止前的等待时长(grace period)
  2. 向 Pod 中所有容器的主进程发送 TERM 信号
  3. 一旦等待超时,向超时的容器主进程发送 KILL 信号
  4. 删除 Pod 在 API Server 中的记录

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

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

相关文章

Vitis HLS 学习笔记--S_AXILITE 寄存器及驱动

目录 1. 简介 2. S_AXILITE Registers 寄存器详解 2.1 “隐式”优势 2.2 驱动程序文件 2.3 硬件头文件 2.4 硬件头文件中 SC/COR/TOW/COH 的解释 2.5 驱动控制过程 3. 总结 1. 简介 回顾此博文《Vitis HLS 学习笔记--Syn Report解读(1)-CSDN博…

程序员与土地的关系

目录 一、土地对人类的重要性 二、程序员与土地的关系 二、程序员如何利用GIS技术改变土地管理效率? 四、GIS技术有哪些运用? 五、shapely库计算多边形面积的例子 一、土地对人类的重要性 土地资源对人类是至关重要的。土地是人类赖…

国产操作系统上如何比较软件版本 _ 统信UOS _ 麒麟KOS _ 中科方德

原文链接:国产操作系统上如何比较软件版本 | 统信UOS | 麒麟KOS | 中科方德 Hello,大家好啊!在国产操作系统上管理软件版本是确保系统安全性和功能稳定性的关键一环。今天,我将向大家展示如何通过编写脚本在国产操作系统上检查软件…

JAVASE练手项目-ATM

此项目使用到的技术主要是面向对象和JAVA的常用API和ArrayList实现。可以用来做JAVA的基础练手或者是期末作业。 主要功能是:用户开户,登录,存钱,取钱,转账,注销,修改密码。 注:下…

【消息队列】RabbitMQ五种消息模式

RabbitMQ RabbitMQRabbitMQ安装 常见的消息模型基本消息队列SpringAMQPWorkQueue消息预取发布订阅模式Fanout ExchangeDirectExchangeTopicExchange 消息转换器 RabbitMQ RabbitMQ是基于Erlang语言开发的开源消息通信中间件 官网地址:https://www.rabbitmq.com/ R…

python 反引号怎么打

切换到英文输入法模式下。 找到电脑键盘 Esc 下面的键。 敲两下就出现反引号了。

在一台交换机上配置VLAN

实验环境 实验拓扑图结构如图12.12所示,其中PC1和PC3属于VLAN 2,PC2属于 VLAN 3,PC1的IP地址为192.168.0.2/24,PC2的IP地址为192.168.1.2/24,PC3的 IP地址为192.168.0.3/24。 图12.12 需求描述 要求处于相同VLAN中的主…

正版Office-Word使用时却提示无网络连接请检查你的网络设置 然后重试

这是购买电脑时自带的已经安装好的word。看纸箱外壳有office标记,但是好像没有印系列号。 某天要使用。提示:无网络连接请检查你的网络设置。 经过网上高手的提示: 说要勾选勾选ssl3.0、TLS1.0、1.1、1.2。 我的截图 我电脑进去就缺1.2. …

【数据结构】串?在计算机中还有这样一种数据结构

串的基本概念与基本操作 导言一、串的定义及其重要术语1.1 串的定义1.2 串的重要术语1.3 ASCII码值1.4 转义字符 二、串的三要素2.1 串的逻辑结构2.2 串的存储结构2.3 串的运算 结语 导言 大家好,很高兴又和大家见面啦!!! 看到今…

手把手实现一个简约酷美美的版权声明模块

1. 导语 版权声明在很多网站都有用到,出场率还是很高的。所以今天就实现一个属于自己分风格的版权声明模块,技术上采用原生的前端三剑客: HTMLCSSJavaScript(可能会用到) 比如CSDN的版权声明是这样的 2. 需求分析 先看看成品吧,这篇文字结…

初始计算机网络

TCP/IP TCP/IP模型 TCP/IP网络模型:对于不同设备之间的通信,就需要网络通信,而设备是多样性的,所以要兼容多种多样的设备,就协商出了一套通用的网络协议。 TCP/IP分层 这个网络协议是分层的,每一层都有…

向gitee推送项目

步骤很详细,直接上教程 在gitee新建项目并复制链接 在当前项目目录打开git bash 输入以下指令进行初始化 git init配置个人信息 git config --global user.name 你的昵称 git config --global user.email 账号绑定的邮箱 5. 绑定远程仓库地址 git remote add ori…

机器人正反向运动学(FK和IK)

绕第一个顶点可以沿Z轴转动,角度用alpha表示 绕第二个点沿X轴转动,角度为Beta 第三个点沿X轴转动,记作gama 这三个点构成姿态(pose) 我们记第一个点为P0,画出它的本地坐标系,和世界坐标系一样红…

Java面试八股之Java中数组有没有length()方法?String呢?为什么?

Java中数组有没有length()方法?String呢?为什么? 数组: 数组没有名为length()的方法,但有一个属性叫做length。可以通过数组名直接访问这个属性来获取数组的长度(即元素个数)。这是一个整数值&…

3-2 STM32c8t6实现流水灯

实物接线如下: 软件代码 #include "stm32f10x.h" // Device header #include "delay.h" int main(void) {RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE); //开启时钟GPIO_InitTypeDef GPIO_InitStructure;GPIO_Init…

中国移动首批12个智算中心节点投产暨移动云智算产品体系正式发布

4月28日,中国移动在苏州隆重举办了2024中国移动算力网络大会。其中,以“智算凌云 慧联九州”为主题的一体化算力网络新基建论坛上,中国移动重磅发布了首批12个智算中心节点投产和智算产品体系。 中国移动响应国家号召,依托算力网络…

深度学习之基于YOLOv5智慧交通拥挤预警检测系统

欢迎大家点赞、收藏、关注、评论啦 ,由于篇幅有限,只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 一、项目背景 随着城市化进程的加速和人口规模的不断增长,交通拥挤问题日益严重。传统的交通拥挤预警方…

goget配置多个golang 运行环境

一台主机安装多个golang 运行环境 本环境 windows10 为 基础 mac linux也可以按照此方法操作 背景 开发不同的运维工具会用到不同版本的golang,但是开发者不能一直进行重装来处理 ,因此 需要一个工具进行golang版本的管理 go管理工具介绍 gvm (Go V…

【报错处理】ib_write_bw执行遇到Couldn‘t listen to port 18515原因与解决办法?

要点 要点: ib默认使用18515端口 相关命令: netstat -tuln | grep 18515 ib_write_bw --help |grep port# server ib_write_bw --ib-devmlx5_1 --port88990 # client ib_write_bw --ib-devmlx5_0 1.1.1.1 --port88990现象: 根因&#xff…

蓝桥杯如何准备国赛?

目录 一、赛前准备 1、如何刷题,刷哪些题? 2、记录(主要看个人习惯) CSDN博客 写注释 3、暴力骗分 4、从出题人的角度出发,应该如何骗分 二、赛中注意事项 一、赛前准备 1、如何刷题,刷哪些题&…