深入掌握k8s核心概念--Pod(一)

这篇具有很好参考价值的文章主要介绍了深入掌握k8s核心概念--Pod(一)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


激动人心的时刻到了,终于到核心概念这一步了,前面的知识是有点“干燥了”。不急后面会看见代码,可以多像金山打字一样打一打代码,熟悉一下yaml格式

Pod 在 Kubernetes 架构中的位置和实现原理

Pod 在架构中的位置

Pod 位于 Kubernetes 架构的核心中,是构建应用的最小单元。Pod 可以用来运行各种类型的应用,包括 Web 应用程序、数据库、缓存、批处理作业等。
深入掌握k8s核心概念--Pod(一),k8s学习指南,kubernetes,容器,云原生,linux

深入掌握k8s核心概念--Pod(一),k8s学习指南,kubernetes,容器,云原生,linux

Pod 具体实现

  • 容器: Pod 中的容器是 Pod 的基本组成单元,每个容器都是一个独立的运行环境。
  • 共享资源: Pod 中的容器共享网络、IPC 和存储资源,这使得 Pod 内部的容器之间可以进行高效的通信和数据交换。
  • 调度: Kubernetes 会根据 Pod 的调度策略将其调度到合适的节点上运行。
  • 管理: Kubernetes 会对 Pod 进行生命周期管理,包括创建、运行、重启、终止等操作。

Pod 的实现依赖于 Kubernetes 的几个核心组件:

  • API Server: Kubernetes 的 API Server 是一个 RESTful API,用于管理 Kubernetes 集群中的所有资源,包括 Pod。
  • Scheduler: Kubernetes 的 Scheduler 负责将 Pod 调度到合适的节点上运行。
  • Kubelet: Kubelet 是运行在每个节点上的代理,负责在节点上管理 Pod 的生命周期。

Pod 为什么在 Kubernetes 中很重要

Pod 在 Kubernetes 中扮演着重要的角色,主要有以下几个原因:

  • Pod 提供了一种简单易用的方式来部署和管理容器。 Pod 可以将多个容器作为一个单元进行管理,简化了操作和维护。
  • Pod 可以提高资源利用率。 Pod 可以将多个容器调度到同一个节点上运行,从而提高资源利用率。
  • Pod 可以提高应用的可靠性。 Pod 可以通过重启策略来保证应用的可靠性。

Pod 的最佳实践

在使用 Pod 时,尽量遵循以下实践:

  • 每个 Pod 仅包含一个容器。 除非有特殊需求,否则每个 Pod 应仅包含一个容器,以简化管理和维护。
  • 使用合理的资源配置。 为 Pod 分配合理的资源,既要满足应用需求,又要避免资源浪费。
  • 定义端口配置。 为容器定义端口配置,以便其他 Pod 或服务可以访问容器。
  • 使用 Pod 扩缩容。 根据应用需求,使用 Pod 扩缩容策略来动态调整 Pod 数量。

为什么Kubernetes会设计出一个全新的Pod的概念并且Pod有这样特殊的组成结构?

  • 原因之一:在一组容器作为一个单元的情况下,我们难以简单地对“整体”进行判断及有效地行动。

    比如,一个容器死亡了,此时算是整体死亡么?是N/M的死亡率么?引入业务无关并且不易死亡的Pause容器作为Pod的根容器,以它的状态代表整个容器组的状态,就简单、巧妙地解决了这个难题。

  • 原因之二:Pod里的多个业务容器共享Pause容器的IP,共享Pause容器挂接的Volume

    这样既简化了密切关联的业务容器之间的通信问题,也很好地解决了它们之间的文件共享问题。

Pod 概述

Pod 是 Kubernetes 中的核心概念,代表了一组并置的容器。 Pod 中的容器共享网络、IPC 和存储资源,并作为单个单元进行调度和管理。Pod 可以包含一个或多个容器,但通常情况下,每个 Pod 仅包含一个容器。

Pod 类型

类型 描述 典型应用场景 详细说明
普通 Pod 运行应用程序 Web 应用程序、数据库、缓存 适用于任何类型的应用程序,可以根据需要进行定制。
守护进程 Pod 确保 Pod 始终运行 监控代理、日志收集器 即使节点发生故障,也能确保 Pod 始终运行。
无状态 Pod 不保留任何数据 Web 服务器、负载均衡器 Pod 终止后,所有数据都会丢失。
有状态 Pod 保留数据 数据库、缓存、存储 使用持久卷存储数据,即使 Pod 终止后,数据仍然存在。
批处理 Pod 执行一次性任务 数据处理、机器学习、分析 适用于需要并行执行的任务,完成后自动销毁。

Pod 特性

特性 描述 优势 详细说明
可移植性 在不同集群间迁移 提高部署灵活性 可以轻松地在不同的 Kubernetes 集群之间迁移 Pod,无需修改配置。
可扩展性 按需扩缩容 满足流量变化需求 可以根据需要动态扩缩容 Pod,以满足应用流量的变化。
资源隔离 容器间相互隔离 提高资源利用率,确保应用稳定性 每个容器都拥有自己的资源配额,互不影响。
故障恢复 自动重启 提高应用可靠性 Pod 失败后可以自动重启,确保应用始终可用。

Pod 生命周期

阶段 描述 详细说明
Pending 等待调度 Pod 尚未被分配到节点上。
Running 正在运行 Pod 已经运行在节点上。
Succeeded 成功完成 Pod 已经成功完成了任务。
Failed 失败 Pod 运行失败。
Unknown 状态未知 Pod 的状态无法确定。

Pod 重启策略

策略 描述 适用场景 详细说明
Always 始终重启 持续运行应用 Pod 失败后会一直尝试重启,直到成功。
OnFailure 因错误失败时重启 可容忍短暂中断应用 只有当 Pod 因错误而失败时才会重启。
Never 不重启 不需要自动恢复应用 Pod 失败后不会自动重启。

总结

Pod 是 Kubernetes 中的核心概念,理解 Pod 的工作原理和配置方式对于使用 Kubernetes 进行应用部署至关重要。
这里放一张yaml格式的资源定义代码图片

深入掌握k8s核心概念--Pod(一),k8s学习指南,kubernetes,容器,云原生,linux文章来源地址https://www.toymoban.com/news/detail-854946.html

Pod 常见属性

属性 说明 默认值 可选值
apiVersion 指示 Pod 使用的 Kubernetes API 版本 v1 -
kind 指示资源类型 Pod -
metadata.name Pod 名称 必填 -
metadata.namespace Pod 命名空间 default -
metadata.labels Pod 标签 - -
spec.containers Pod 中的容器列表 必填 -
spec.containers.name 容器名称 必填 -
spec.containers.image 容器镜像 必填 -
spec.containers.command 容器启动命令 - -
spec.containers.args 容器启动参数 - -
spec.containers.resources.limits.cpu 容器 CPU 资源限制 - -
spec.containers.resources.limits.memory 容器内存资源限制 - -
spec.containers.resources.requests.cpu 容器 CPU 资源请求 - -
spec.containers.resources.requests.memory 容器内存资源请求 - -
spec.containers.ports.name 容器端口名称 - -
spec.containers.ports.containerPort 容器端口号 必填 -
spec.containers.ports.protocol 容器端口协议 TCP TCP, UDP
spec.restartPolicy Pod 重启策略 Always Always, Never, OnFailure
spec.schedulerName Pod 调度使用的调度器名称 default -
spec.nodeSelector Pod 调度到节点的选择器 - -
spec.affinity Pod 的亲和性规则 - -
spec.tolerations Pod 的容忍度规则 - -
spec.volumes Pod 使用的卷 - -
spec.volumes.name 卷名称 必填 -
spec.volumes.hostPath.path 主机路径卷挂载路径 - -
spec.volumes.emptyDir.medium 空目录卷存储介质 - Memory, None
status.conditions Pod 的条件列表 - -
status.conditions.type 条件类型 Ready, Running, etc. -
status.conditions.status 条件状态 True, False -
status.conditions.reason 条件原因 - -
status.containerStatuses Pod 中每个容器的运行状态 - -
status.containerStatuses.name 容器名称 - -
status.containerStatuses.image 容器镜像 - -
status.containerStatuses.containerID 容器 ID - -
status.containerStatuses.state.running 容器运行状态 - -
status.containerStatuses.state.terminated.reason 容器终止原因 - -
status.containerStatuses.state.terminated.exitCode 容器退出码 - -
status.hostIP Pod 所在节点的 IP 地址 - -
status.podIP Pod 的 IP 地址 - -
status.startTime Pod 的创建时间 - -

到了这里,关于深入掌握k8s核心概念--Pod(一)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 云原生-k8s核心概念(pod,deploy,service,ingress,configmap,volume)

    Gitee-k8s学习 云原生实战-kubernetes核心实战 Namespace是kubernetes系统中的一种非常重要资源,它的主要作用是用来实现多套环境的资源隔离或者多租户的资源隔离 Pod可以认为是容器的封装,一个Pod中可以存在一个或者多个容器。 kubernetes很少直接控制Pod,一般都是通过Pod控制器来

    2024年02月03日
    浏览(84)
  • 带你深入学习k8s--(四) 控制器(k8s核心)

    目录 一、概念 1、什么是控制器 2、控制器执行流程 3、控制器类型 二、控制器的使用 1、ReplicaSet 2、Deployment 1、版本迭代 2、回滚  3、修改滚动更新策略 4、暂停与恢复 3、daemonset 4、job 5、cronjob 前言: 上一章我们说到,pod有两种,分别为自主式 Pod,Pod 退出后不会被创建;

    2024年02月06日
    浏览(49)
  • 【K8S】pod 基础概念讲解

    Pod是kubernetes中最小的资源管理组件,Pod也是最小化运行容器化应用的资源对象。一个Pod代表着集群中运行的一个进程。kubernetes中其他大多数组件都是围绕着Pod来进行支撑和扩展Pod功能的,例如,用于管理Pod运行的StatefulSet和Deployment等控制器对象,用于暴露Pod应用的Service和

    2024年02月13日
    浏览(45)
  • K8S:深入理解POD

    它的基本语法规则如下: 大小写敏感 使用缩进表示层级关系 缩进时不允许使用Tab键,只允许使用空格。 缩进的空格数目不重要,只要相同层级的元素左侧对齐即可 # 表示注释,从这个字符一直到行尾,都会被解析器忽略。 在我们的 kubernetes 中,你只需要两种结构类型就行

    2024年04月28日
    浏览(39)
  • Kubernetes(k8s)核心资源解析:Pod详解

    💖The Begin💖点点关注,收藏不迷路💖 Pod是Kubernetes中最小的调度单元,它可以包含一个或多个容器。Pod中的所有容器共享网络和存储卷,它们一起运行在同一个节点上。Pod提供了一种抽象层,使得容器可以作为一个逻辑单元来管理。 Pod中的容器共享IP地址、端口空间和存储

    2024年04月11日
    浏览(76)
  • K8S学习指南(49)-k8s的证书管理

    Kubernetes(K8s)是一款开源的容器编排平台,具有强大的集群管理和安全机制。在Kubernetes集群中,证书管理是一个关键的安全组成部分,用于保障集群通信的安全性和可信度。本文将深入讨论Kubernetes中的证书管理,包括证书的生成、颁发、续期以及如何在实际应用中进行合理

    2024年01月17日
    浏览(41)
  • K8S学习指南(37)-k8s权限管理对象User

    在Kubernetes(K8s)中,用户(User)是一个重要的权限管理对象,用于表示在集群中执行操作的实体。通过用户,Kubernetes能够对集群中的各种资源进行身份验证和授权。本文将深入研究Kubernetes中的用户对象,包括其基本概念、创建方式以及详细示例。 1. 用户是什么? 在Kubern

    2024年01月23日
    浏览(42)
  • (二)k8s实战-深入Pod详解

    创建Pod nginx样例 参数名 类型 字段说明 apiVersion String K8S APl 的版本,可以用 kubectl api versions 命令查询 kind String yam 文件定义的资源类型和角色 metadata Object 元数据对象,下面是它的属性 metadata.name String 元数据对象的名字,比如 pod 的名字 metadata.namespace String 元数据对象的命名

    2024年02月11日
    浏览(39)
  • K8S学习指南(28)-k8s存储对象Storage Classes

    随着云原生技术的飞速发展,Kubernetes(简称K8s)已成为容器编排的事实标准,为开发者提供了一个强大而灵活的平台。在Kubernetes中,存储管理是一个至关重要的方面,而Storage Classes(存储类)则是其中一个关键概念。本文将深入探讨K8s中的Storage Classes,详细介绍其原理、用

    2024年02月03日
    浏览(42)
  • kubernetes(k8s) pod(资源限制、基础概念)

    目录  一、资源限制 1、概念 1.2、Pod和容器的资源请求和限制 1.3、CPU资源单位 1.4、内存资源单位 1.5、CPU和内存的Requests和Limits的特点 1.6、案例 二、pod 的两种使用方式 三、pod 资源共享 四、底层容器Pause 1、pause 共享资源 1.1、网络 1.2、存储 1.3、小结 2、Pause主要功能 3、Pod

    2024年02月05日
    浏览(76)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包