【Kubernetes】K8s中Container(容器)、Pod(小组)和node(节点)概念讲解

news2025/1/12 20:38:21

Kubernetes学习之路

第一章 Kubernetes学习入门之Container(容器)、Pod(小组)和node(节点)概念


文章目录

  • Kubernetes学习之路
  • 前言
  • 一、Container(容器)
  • 二、Pod(小组)
    • 1.单容器 Pod
    • 2.多容器 Pod
  • 三、Container(容器)和 Pod (小组)的关系
  • 四、node(节点)
  • 总结


前言

在 Kubernetes 中,Pod 是一个包含一个或多个容器(Container)的调度单元。因此,可以说一个 Pod 包含了一个或多个容器(Container)。具体来说:

单容器 Pod:如果 Pod 只有一个容器(Container),那么这个 Pod 实际上就只包含一个容器(Container)。
多容器 Pod:如果 Pod 中有多个容器(Container),这些容器(Container)在同一个 Pod 内部共享网络和存储资源,并且它们通常一起运行以实现某种共同的功能或服务。

简言之,Pod 是 Kubernetes 中的一个封装单位,里面可以包含一个或多个容器(Container)。通过这种方式,Kubernetes 可以管理和协调容器的运行环境和资源共享。而node是节点,一个节点又包含多个pod

一、Container(容器)

定义:容器是一个轻量级的、独立的执行环境,封装了应用程序(app)及其所有依赖,包括库、配置文件和环境变量。容器通过虚拟化技术共享操作系统内核,但彼此之间相互隔离。它使用namespace隔离不同的软件运行环境,并通过镜像自包含软件的运行环境,从而使得容器可以很方便的在任何地方运行。

功能:容器可以在任何支持容器的环境中运行,确保应用程序在不同环境中的一致性。它们提供了快速的启动时间、低开销和高效的资源利用。

在Kubernetes必须要使用Pod来管理容器,每个Pod可以包含一个或多个容器。

二、Pod(小组)

定义:Pod 是 Kubernetes 中的一个基本调度单元,它是一个或多个容器的集合,这些容器共享网络和存储资源。

功能

  • 共享网络:Pod 中的所有容器共享一个 IP 地址和端口空间,这意味着它们可以通过 localhost 直接通信。
  • 共享存储:Pod 中的容器可以挂载同一个存储卷,实现数据的共享和持久化。
  • 调度:Kubernetes 调度器会将 Pod 分配到集群中的节点上运行。
  • 生命周期管理:Pod 提供了一个生命周期管理的视角,可以通过它来管理容器的启动、停止和滚动更新等。
    在这里插入图片描述

1.单容器 Pod

单容器 Pod 是 Kubernetes 中最简单的 Pod 类型,其中仅包含一个容器。这个容器运行应用程序或服务,Pod 提供容器所需的环境和资源。单容器 Pod 的配置相对简单,适用于没有特殊需求的场景。以下是一个简单的单容器 Pod

示例:运行一个 Nginx 服务器
假设你要部署一个 Web 服务器,使用 Nginx 作为容器化的 Web 服务器。

YAML 配置示例

apiVersion: v1
kind: Pod
metadata:
  name: nginx-pod
spec:
  containers:
    - name: nginx
      image: nginx:latest
      ports:
        - containerPort: 80

解释

  • metadata.name:Pod 的名称为 nginx-pod。
  • spec.containers:定义了一个容器的列表,这里只有一个容器。
  • name:容器的名称为 nginx。
  • image:指定容器使用的镜像,这里是 nginx:latest。
  • ports:指定容器暴露的端口,这里是 80(Nginx 的默认端口)。

优势
简化管理:单容器 Pod 比多容器 Pod 更简单,适合那些不需要多个协同工作的容器的应用场景。
资源隔离:虽然单容器 Pod 不需要处理多个容器的协作,但它仍然提供了与其他 Pod 的资源隔离。
快速部署:设置和管理较为简单,适合快速启动和测试应用。
在实际使用中,单容器 Pod 常用于简单的应用服务、实验性项目、学习和测试等场景。

2.多容器 Pod

在 Kubernetes 中,多容器 Pod 是一种常见的设计模式,通常用于需要多个容器协同工作的场景。以下是一个常见的多容器 Pod 案例:

示例:日志收集
假设你有一个应用程序容器和一个日志收集容器。应用程序容器运行实际的应用,而日志收集容器负责从应用程序容器中提取日志并将其发送到日志存储服务。

  1. 应用程序容器:运行 Web 服务器应用,如 Nginx。
  2. 日志收集容器:一个专门的日志代理容器,比如 Fluentd,用于收集和处理日志。

YAML 配置示例
以下是一个 Kubernetes Pod 的 YAML 配置示例,展示了如何在同一个 Pod 中运行这两个容器:

apiVersion: v1
kind: Pod
metadata:
  name: webserver-logging
spec:
  containers:
    - name: webserver
      image: nginx:latest
      volumeMounts:
        - name: log-volume
          mountPath: /var/log/nginx
    - name: log-collector
      image: fluentd:latest
      volumeMounts:
        - name: log-volume
          mountPath: /var/log/nginx
  volumes:
    - name: log-volume
      emptyDir: {}

解释

  • webserver 容器:运行 Nginx 服务器,并将日志写入 /var/log/nginx 目录。
  • log-collector 容器:运行 Fluentd 代理,从与 webserver 容器相同的日志目录 /var/log/nginx
    中读取日志,并将其发送到日志存储服务。

优势
资源共享:这两个容器共享同一个卷 log-volume,允许 log-collector 直接访问 webserver 的日志。
简化配置:通过在同一个 Pod 内部运行这两个容器,可以确保它们在同一个网络和存储上下文中运行,简化了配置和通信。
这种多容器 Pod 设计模式非常适合需要紧密集成和协作的场景,比如日志收集、监控、数据处理等。

三、Container(容器)和 Pod (小组)的关系

容器是 Pod 的组成部分:在 Kubernetes 中,一个 Pod 可能包含一个或多个容器。多个容器在同一个 Pod 中通常具有紧密的协作关系,比如一个容器提供服务,另一个容器处理日志。
Pod 提供容器的共享资源:所有在同一 Pod 中的容器共享网络和存储资源,提供了容器之间的协作机制。
所以分为单容器 Pod和多容器 Pod

四、node(节点)

Node是Pod真正运行的主机,可以物理机,也可以是虚拟机。为了管理Pod,每个Node节点上至少要运行container runtime(比如docker或者rkt)、kubelet和kube-proxy服务。
在这里插入图片描述
Node 是 Kubernetes 集群中的一个物理或虚拟机器,它是运行 Pod 的计算资源的提供者。Node 可以是物理服务器、虚拟机,或者云服务提供的计算实例。每个 Node 上都运行一个 Kubernetes 组件——kubelet,它负责管理 Node 上的 Pods 和容器的生命周期。

Node 的主要作用包括

  • 资源提供:提供 CPU、内存、存储等资源供 Pods 使用。
  • 调度目标:Pods 被调度到特定的 Node 上执行。
  • 管理与监控:通过 kubelet 监控和管理 Node 上的 Pods 和容器。

总结

Pod 是在 Node 上运行的容器组,而容器是 Pod 内部实际运行应用程序的单元。Node 提供了运行这些 Pods 和 Containers 的基础设施和资源。

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

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

相关文章

132-横向移动-Exchange 服务有账户 CVE 漏洞无账户口令爆破

Exchange服务 Microsoft Exchange Server 是微软公司推出的一款企业级邮件服务器软件,它提供了一套全面的电子邮件服务组件,以及消息和协作系统。Exchange Server 不仅支持电子邮件服务,还提供了日历、联系人管理、任务管理、文档管理、实时会…

机器学习 之 决策树与随机森林的实现

引言 随着互联网技术的发展,垃圾邮件过滤已成为一项重要的任务。机器学习技术,尤其是决策树和随机森林,在解决这类问题时表现出色。本文将介绍随机森林的基本概念,并通过一个具体的案例——筛选垃圾电子邮件——来展示随机森林的…

【Qt】输入类控件QTextEdit

目录 输入类控件QTextEdit 例子:获取多行输入框的内容 例子:验证输入框的各种信号 输入类控件QTextEdit QTextEdit表示多行输入框,也是一个富文本&markdown编辑器。 并且能在内容超出编辑框范围时自动提供滚动条 在Qt中,有俩…

前端CSS选择器

css 和html 三种表示方式 行内样式 >内部样式>外部样式 元素选择器 属性选择器 id选择器 选择id为bb的 ,给他增添样式 class选择器以 .开头 用法和id差不都 包含选择器和父子选择器 兄弟选择器 选择器组合 伪元素选择器 首字母格式不一样 首行格式不一样 …

java设计模式--创建型设计模式

创建型模式可分为:单例模式、抽象工厂模式、原型模式、建造者模式、工厂模式 单例模式 单例模式 就是采取一定的方法保证在整个软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个获取其对象的方法(静态方法&#xf…

Unity编辑器扩展之Project视图扩展

内容将会持续更新,有错误的地方欢迎指正,谢谢! Unity编辑器扩展之Project视图扩展 TechX 坚持将创新的科技带给世界! 拥有更好的学习体验 —— 不断努力,不断进步,不断探索 TechX —— 心探索、心进取&#xff01…

河南萌新联赛2024第(六)场:郑州大学(补题ABCDFGIL)

文章目录 河南萌新联赛2024第(六)场:郑州大学A 装备二选一(一)简单介绍:思路:代码: B 百变吗喽简单介绍:思路:代码: C 16进制世界简单介绍&#x…

第二十七节、人物可互动标识

一、多个场景同时存在 方法:将另一个场景拖拽进 当前场景中 这样在一个场景中保存物体,另一个场景切换即可 创建一个场景名为上图(这是一个持久化的场景) 被激活的场景是粗体字的 二、代码 使用第二个代码获得player的子物体 …

uniapp在线下载安装包更新app以及热更新

首先用getSystemInfo判断平台、 再通过json文件模拟接口 判断版本号是否一致 不一致则下载服务器apk进行更新 外加网络波动导致失败重新下载更新包 uni.getSystemInfo({success: function (e) {// #ifndef H5// 获取手机系统版本const system e.system.toLowerCase();const pl…

《黑神话:悟空》解锁+35项修改器,开启上帝模式!

哈喽,各位小伙伴们好,我是给大家带来各类黑科技与前沿资讯的小武。 8 月 20 日,国产 3A 大作《黑神话:悟空》闪亮登场!这是一款由中国游戏开发商游戏科学开发的动作角色扮演游戏,此前在研发阶段就备受关注…

Python 使用 matplotlib 显示图像

如果没有安装 matplotlib 需要先安装: pip install matplotlib一、读取图片并显示 import matplotlib.pyplot as pltimage_path "/Users/AlanWang4523/Desktop/Debug/files/image.png" image_array plt.imread(image_path)plt.figure("ImageShow…

会声会影作为视屏制作软件如何?会声会影最新免费版

二、核心功能与特点 拖放式编辑:会声会影2024提供了拖放式标题、转场、覆叠和滤镜功能,使得视频编辑变得更加直观和高效。 色彩分级与动态分屏:软件支持色彩分级功能,可以对视频进行精细的色彩调整。同时,动态分屏功能…

STM32通用定时器,端口复用和重映射

STM32定时器是一种内置在STM32微控制器中的硬件模块,用于测量和控制时间。它具有高精度、可配置性和灵活性的特点,能够支持多种不同的工作模式和应用场景。以下是对STM32定时器的详细讲解: 一、定时器的基本构成 STM32定时器主要由以下几个…

内存管理————基础理解

目录 我们先看以下代码和内存分布图 对一些名词的解释说明: 题目 答案 问题解释: C语言中动态内存管理方式 C语言中动态内存管理方式:malloc/calloc/realloc/free 这里提一下要注意的点 C内存管理方式 基本内容 new/delete操作内置…

常用API:object

文章目录 Object类toString()方法equals()方法总结其他方法 黑马学习笔记 Object类 是所有类的父类,所有的类都默认继承Object类。Java中所有的类的对象都可以直接使用Object类提供的一些方法。 toString()方法 equals()方法 默认是判断两个对象的地址 也是判断…

MATLAB-疲劳检测

首先,我们需要解决一个问题,什么样可以视为疲劳? 频繁的眨眼/眨一次眼所用时间很长 不停的打哈欠 不停的点头 通过分析,我们得到了检测疲劳的三个标准:眨眼,打哈欠,头部姿态。 这三个标准可以…

OpenCV findTours函数及其用法

OpenCV findTours函数主要用以寻找图像中物体的轮廓,其原型如下: indTours 函数参数: Image 输入图像,需8位单通道图像。非零像素被视为1。零像素保持为0,因 此图 像被视为 二进制。您可以使用co…

【数据分享】《全国能源-分行业煤油消费总量》(2000-2020年)

而今天要限时免费分享的数据就是2000-2020年间出版的《全国能源-分行业煤油消费总量》并以多格式提供免费下载。(无需分享朋友圈即可获取) 数据介绍 在过去的二十年里,中国作为全球能源消费的重要力量,其能源结构的变化不仅影…

基于x86 平台opencv的图像采集和seetaface6的图像质量评估功能

目录 一、概述二、环境要求2.1 硬件环境2.2 软件环境三、开发流程3.1 编写测试3.2 配置资源文件3.2 验证功能一、概述 本文档是针对x86 平台opencv的图像采集和seetaface6的图像质量评估功能,opencv通过摄像头采集视频图像,将采集的视频图像送给seetaface6的图像质量评估模块…

21.1 基于Netty实现聊天

21.1 基于Netty实现聊天 一. 章节概述二. `Netty`介绍三. 阻塞与非阻塞1. 阻塞与非阻塞简介2. BIO同步阻塞3. NIO同步非阻塞4. AIO异步非阻塞IO5. 异步阻塞IO(用的极少)6. 总结四. Netty三种线程模型1. 单线程模型2. 多线程模型3. 主从线程模型五. 构建Netty服务器************…