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

本文主要是介绍【Kubernetes】K8s中Container(容器)、Pod(小组)和node(节点)概念讲解,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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: nginximage: nginx:latestports:- 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: webserverimage: nginx:latestvolumeMounts:- name: log-volumemountPath: /var/log/nginx- name: log-collectorimage: fluentd:latestvolumeMounts:- name: log-volumemountPath: /var/log/nginxvolumes:- name: log-volumeemptyDir: {}

解释

  • 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 的基础设施和资源。

这篇关于【Kubernetes】K8s中Container(容器)、Pod(小组)和node(节点)概念讲解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1097455

相关文章

Node.js 中 http 模块的深度剖析与实战应用小结

《Node.js中http模块的深度剖析与实战应用小结》本文详细介绍了Node.js中的http模块,从创建HTTP服务器、处理请求与响应,到获取请求参数,每个环节都通过代码示例进行解析,旨在帮... 目录Node.js 中 http 模块的深度剖析与实战应用一、引言二、创建 HTTP 服务器:基石搭建(一

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

day-51 合并零之间的节点

思路 直接遍历链表即可,遇到val=0跳过,val非零则加在一起,最后返回即可 解题过程 返回链表可以有头结点,方便插入,返回head.next Code /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode() {}*

Kubernetes PodSecurityPolicy:PSP能实现的5种主要安全策略

Kubernetes PodSecurityPolicy:PSP能实现的5种主要安全策略 1. 特权模式限制2. 宿主机资源隔离3. 用户和组管理4. 权限提升控制5. SELinux配置 💖The Begin💖点点关注,收藏不迷路💖 Kubernetes的PodSecurityPolicy(PSP)是一个关键的安全特性,它在Pod创建之前实施安全策略,确保P

90、k8s之secret+configMap

一、secret配置管理 配置管理: 加密配置:保存密码,token,其他敏感信息的k8s资源 应用配置:我们需要定制化的给应用进行配置,我们需要把定制好的配置文件同步到pod当中容器 1.1、加密配置: secret: [root@master01 ~]# kubectl get secrets ##查看加密配置[root@master01 ~]# kubectl get se

计算机毕业设计 大学志愿填报系统 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试

🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点赞 👍 收藏 ⭐评论 📝 🍅 文末获取源码联系 👇🏻 精彩专栏推荐订阅 👇🏻 不然下次找不到哟~Java毕业设计项目~热门选题推荐《1000套》 目录 1.技术选型 2.开发工具 3.功能

K8S(Kubernetes)开源的容器编排平台安装步骤详解

K8S(Kubernetes)是一个开源的容器编排平台,用于自动化部署、扩展和管理容器化应用程序。以下是K8S容器编排平台的安装步骤、使用方式及特点的概述: 安装步骤: 安装Docker:K8S需要基于Docker来运行容器化应用程序。首先要在所有节点上安装Docker引擎。 安装Kubernetes Master:在集群中选择一台主机作为Master节点,安装K8S的控制平面组件,如AP

什么是Kubernetes PodSecurityPolicy?

@TOC 💖The Begin💖点点关注,收藏不迷路💖 1、什么是PodSecurityPolicy? PodSecurityPolicy(PSP)是Kubernetes中的一个安全特性,用于在Pod创建前进行安全策略检查,限制Pod的资源使用、运行权限等,提升集群安全性。 2、为什么需要它? 默认情况下,Kubernetes允许用户自由创建Pod,可能带来安全风险。

Node.js学习记录(二)

目录 一、express 1、初识express 2、安装express 3、创建并启动web服务器 4、监听 GET&POST 请求、响应内容给客户端 5、获取URL中携带的查询参数 6、获取URL中动态参数 7、静态资源托管 二、工具nodemon 三、express路由 1、express中路由 2、路由的匹配 3、路由模块化 4、路由模块添加前缀 四、中间件

Spring框架5 - 容器的扩展功能 (ApplicationContext)

private static ApplicationContext applicationContext;static {applicationContext = new ClassPathXmlApplicationContext("bean.xml");} BeanFactory的功能扩展类ApplicationContext进行深度的分析。ApplicationConext与 BeanF