当前位置:首页 > 科技  > 软件

掌握这些Kubernetes Pod技巧,成为企业必备技能人才

来源: 责编: 时间:2024-01-02 09:30:16 136观看
导读Kubernetes Pod 是什么?Kubernetes Pod 是 Kubernetes 应用的基本执行单元。可以把它想象成应用程序运行的独特环境,封装了一个或多个应用容器以及共享的存储/网络资源。Kubernetes 有很多封装服务、端点和其他实体的

Kubernetes Pod 是什么?

Kubernetes Pod 是 Kubernetes 应用的基本执行单元。可以把它想象成应用程序运行的独特环境,封装了一个或多个应用容器以及共享的存储/网络资源。Kubernetes 有很多封装服务、端点和其他实体的概念,但归根结底一个 Pod 是你的代码运行的地方。AVd28资讯网——每日最新资讯28at.com

AVd28资讯网——每日最新资讯28at.com

Kubernetes Pod 和容器的区别

从概念上来说,Pod 可以和 Docker Compose 中的容器进行比较。在与 Docker Compose 相比时,Pod 在 Kubernetes 中扮演的角色与容器在 Docker Compose 中扮演的角色相同,但 Pod 实际上是一种对一个或多个容器的抽象,具有相关的网络和存储配置。Pod 可以包含几个容器,但是最佳实践是有一个运行应用代码的主容器,以及 0 个或多个提供应用额外功能(如日志、监控和网络)的支持容器,这种方式称为 Sidecar,这些支持容器称为 sidecar 容器。AVd28资讯网——每日最新资讯28at.com

Kubernetes Pod 和节点的区别

节点是 Kubernetes 中的工作器,Pod 就是在节点上运行。节点可以是虚拟的,例如 AWS EC2 实例,或者物理的计算机服务器。Pod 被分配到节点上,并在这些节点上运行,消耗节点提供给集群的容量。Pod 并非明确绑定到节点,它们是由 Kubernetes 控制平面分配的,如果有必要可以从一个节点移动到另一个节点。AVd28资讯网——每日最新资讯28at.com

Kubernetes Pod 和集群的区别

集群本质上是一组提供容量的节点、一组运行应用程序的 Pod 以及其他配置(如服务或入口控制器),所有这些都由 Kubernetes 控制平面管理。从概念上讲,Pod 可以被视为 Kubernetes 运行应用程序的方式。AVd28资讯网——每日最新资讯28at.com

Kubernetes Pod 的工作方式

Pod 是在主容器(运行我们代码的容器)之上的一层抽象,以及零个或多个支持或 sidecar 容器。除了容器之外,Pod 在 Kubernetes 集群中还有一个身份和几个配置。AVd28资讯网——每日最新资讯28at.com

Pod 的生命周期

Pod 在其生命周期中可以经历几个阶段:AVd28资讯网——每日最新资讯28at.com

  • Pending:系统已接受该 Pod,但一个或多个容器尚未设置和运行。
  • Running:该 Pod 已绑定到一个节点,其所有容器都已创建。
  • Succeeded:Pod 中的所有容器已成功终止并不会重启。该 Pod 不再绑定到一个节点和消耗资源。
  • Failed:Pod 中至少有一个容器以失败状态终止。该 Pod 不再绑定到一个节点和消耗资源。
  • Unknown:当由于与 Pod 主机节点的某些通信问题导致状态不明确时。当一个节点无法向 Kubernetes 控制平面报告其状态时,在该节点上运行的 Pod 会进入 Unknown 状态。

Pod 如何管理多个容器

一个 Pod 可以封装多个容器,确保它们共享相同的存储和网络命名空间。这使我们可以将应用程序帮助进程与主应用程序耦合在一起,而不必处理它们之间的网络配置。在同一个 Pod 中运行的容器共享本地网络和存储。这通常用于 sidecar 容器,例如日志记录、监控或网络配置。例如,这样配置一个具有多个容器的 Pod:AVd28资讯网——每日最新资讯28at.com

apiVersion: v1kind: Podmetadata:  name: myapp-pod  labels:    app: myappspec:  containers:  - name: myapp-container    image: busybox    command: ['sh', '-c', 'echo The app is running! && sleep 3600']  - name: log-container    image: busybox    command: ['sh', '-c', 'tail -f /dev/null']

这将在一个 Pod 中运行两个容器,一个运行应用,另一个记录日志。它们共享网络和文件系统。这就是 Pod 的强大之处。AVd28资讯网——每日最新资讯28at.com

使用 Kubernetes 中的 Pod

Kubernetes 是一个复杂的平台,运行生产负载需要比只定义一个包含容器的 Pod 更多的知识。以下是有效管理 Pod 需要理解的一些额外知识点。AVd28资讯网——每日最新资讯28at.com

Pod 更新和替换

直接更新正在运行的 Pod 不是一个好的实践,因为它违反了 Pod 的不变性假设(本质上与容器的不变性相同)。事实上,Kubernetes 在 Pod 层面上执行这种不变性,这意味着它拒绝对 Pod 进行更新。相反,我们应该部署 Pod 的新版本,并平滑地将流量重定向到较新版本。如果这种部署是逐步进行的,每次替换一个 Pod(当为同一应用程序运行多个 Pod 时相关),这称为滚动更新。如果部署一组全新的 Pod,将流量重定向到它们,验证它们是否正常工作,然后才终止旧的 Pod,这称为蓝绿部署。AVd28资讯网——每日最新资讯28at.com

当创建一个 Deployment,其中包含一组 Pod 时,可以定义更新策略。例如,以下是如何定义滚动更新策略:AVd28资讯网——每日最新资讯28at.com

apiVersion: apps/v1kind: Deploymentmetadata:  name: myapp-deploymentspec:  replicas: 3  strategy:    type: RollingUpdate    rollingUpdate:      maxSurge: 1      maxUnavailable: 0    template:    ...

这将逐步更新 Pod,每次更新一个,同时保持可用 Pod 数量至少为 2。AVd28资讯网——每日最新资讯28at.com

Pod 资源限制

可以为 Pod 定义 CPU 和内存请求和限制,以防止 Pod 消耗太多节点资源。例如:AVd28资讯网——每日最新资讯28at.com

resources:  requests:    memory: "64Mi"    cpu: "250m"  limits:    memory: "128Mi"    cpu: "500m"

这将请求 64MB 内存和 0.25 CPU 核心,并限制为 128MB 内存和 0.5 CPU 核心。了解这些概念将帮助我们在生产中安全可靠地运行 Pod。AVd28资讯网——每日最新资讯28at.com

Kubernetes 中的 Pod 存储

Pod 仅具有短暂的存储,这是通过工作内存实现的。可以使用 Persistent Volume 来创建持久存储,并通过 Persistent Volume Claim 与 Pod 关联。从概念上讲,持久卷可以与节点进行比较:它们使底层资源(在这种情况下是存储,而不是计算)可用于 Kubernetes 集群。Persistent Volume Claim 为 Pod 预留这些可用资源,与它们相关联。这些 Persistent Volume Claim 可以作为卷关联到 Pod 内的容器,并作为容器本地文件系统的一部分进行访问。AVd28资讯网——每日最新资讯28at.com

重要的是,它们可以由 Pod 中的所有容器共享,允许在同一 Pod 中基于文件在容器之间进行通信。日志 sidecar 容器通常使用这种方法来从主容器读取日志,并将其导出到像 AWS CloudWatch Logs 这样的外部日志聚合器。AVd28资讯网——每日最新资讯28at.com

下面是如何定义一个 Persistent Volume Claim,并将其作为卷关联到 Pod 中的一个容器:AVd28资讯网——每日最新资讯28at.com

apiVersion: v1kind: Podmetadata:  name: mypodspec:  containers:    - name: mypod      image: busybox      command: ['sh', '-c', 'echo Hello Kubernetes! > /mnt/vol1/hello-file']      volumeMounts:        - mountPath: /mnt/vol1          name: vol1  volumes:    - name: vol1      persistentVolumeClaim:        claimName: my-pvc

这将在 /mnt/vol1 路径挂载 PVC my-pvc,容器可以在其中读写文件。使用持久卷可以确保Pod重新启动时数据不会丢失。AVd28资讯网——每日最新资讯28at.com

Pod 网络

每个 Pod 都在整个集群中分配一个唯一的 IP 地址,可以从集群内部访问该地址。还可以定义服务,它允许通过单个 IP 地址或专用 DNS 名称寻址同类 Pod 组(通常是 Deployment),并在这些 Pod 之间负载均衡流量。还可以定义 Ingress 来通过 Ingress Controller 将服务暴露到集群外部。Pod 之间默认是可以相互通信的,不需要额外的网络配置。但是,有时可能需要进一步隔离 Pod 网络。这可以通过 Kubernetes 网络策略来实现,它允许根据标签选择器控制 Pod 之间的流量。AVd28资讯网——每日最新资讯28at.com

例如,以下网络策略只允许具有 role=frontend 的 Pod 访问具有 role=backend 的 Pod:AVd28资讯网——每日最新资讯28at.com

apiVersion: networking.k8s.io/v1kind: NetworkPolicymetadata:  name: backend-policyspec:  podSelector:    matchLabels:      role: backend  ingress:  - from:    - podSelector:        matchLabels:          role: frontend

理解 Pod 网络对于在 Kubernetes 中运行基于网络的应用程序非常重要。主流的网络模型包括 Flannel、Calico、Cilium 等。AVd28资讯网——每日最新资讯28at.com

总结

Kubernetes是一个非常强大的平台,但这种强大也带来了巨大的复杂性。Pod只是一个起点,但理解它们的工作方式对于掌握Kubernetes在Pod之上用于部署生产级负载的抽象和配置是必要的。AVd28资讯网——每日最新资讯28at.com

理解Pod的基础知识,比如它们的生命周期、如何管理多个容器、存储、资源限制等,是开始使用Kubernetes的关键第一步。一旦你理解了这些基础知识,你就可以构建更复杂的应用程序部署,利用Kubernetes提供的服务发现、负载均衡、滚动更新等高级功能。AVd28资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-55083-0.html掌握这些Kubernetes Pod技巧,成为企业必备技能人才

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: Tomcat 架构设计 25 年后依旧能打!我学到了什么?

下一篇: 九大Pytorch最重要操作!!

标签:
  • 热门焦点
  • 天猫精灵Sound Pro体验:智能音箱没有音质?来听听我的

    天猫精灵Sound Pro体验:智能音箱没有音质?来听听我的

    这几年除了手机作为智能生活终端最主要的核心之外,第二个可以成为中心点的产品是什么?——是智能音箱。 手机在执行命令的时候有两种操作方式,手和智能语音助手,而智能音箱只
  • 2023年Q2用户偏好榜:12+256G版本成新主流

    2023年Q2用户偏好榜:12+256G版本成新主流

    3月份的性能榜、性价比榜和好评榜之后,就要轮到2023年的第二季度偏好榜了,上半年的新机潮已经过去,最明显的肯定就是大内存和存储的机型了,另外部分中端机也取消了屏幕塑料支架
  • K8S | Service服务发现

    K8S | Service服务发现

    一、背景在微服务架构中,这里以开发环境「Dev」为基础来描述,在K8S集群中通常会开放:路由网关、注册中心、配置中心等相关服务,可以被集群外部访问;图片对于测试「Tes」环境或者
  • 量化指标是与非:挽救被量化指标扼杀的技术团队

    量化指标是与非:挽救被量化指标扼杀的技术团队

    作者 | 刘新翠整理 | 徐杰承本文整理自快狗打车技术总监刘新翠在WOT2023大会上的主题分享,更多精彩内容及现场PPT,请关注51CTO技术栈公众号,发消息【WOT2023PPT】即可直接领取
  • 从零到英雄:高并发与性能优化的神奇之旅

    从零到英雄:高并发与性能优化的神奇之旅

    作者 | 波哥审校 | 重楼作为公司的架构师或者程序员,你是否曾经为公司的系统在面对高并发和性能瓶颈时感到手足无措或者焦头烂额呢?笔者在出道那会为此是吃尽了苦头的,不过也得
  • 梁柱接棒两年,腾讯音乐闯出新路子

    梁柱接棒两年,腾讯音乐闯出新路子

    文丨田静 出品丨牛刀财经(niudaocaijing)7月5日,企鹅FM发布官方公告称由于业务调整,将于9月6日正式停止运营,这意味着腾讯音乐长音频业务走向消亡。腾讯在长音频领域还在摸索。为
  • 重估百度丨大模型,能撑起百度的“今天”吗?

    重估百度丨大模型,能撑起百度的“今天”吗?

    自象限原创 作者|程心 罗辑2023年之前,对于自己的“今天”,百度也很迷茫。“新业务到 2022 年底还是 0,希望 2023 年出来一个 1。”这是2022年底,李彦宏
  • 小米MIX Fold 3下月亮相:今年唯一无短板的全能折叠屏

    小米MIX Fold 3下月亮相:今年唯一无短板的全能折叠屏

    这段时间以来,包括三星、一加、荣耀等等有不少品牌旗下的最新折叠屏旗舰都有新的进展,其中荣耀、三星都已陆续发布了最新的折叠屏旗舰,尤其号荣耀Magi
  • 消息称小米汽车开始筛选交付中心:需至少120个车位

    消息称小米汽车开始筛选交付中心:需至少120个车位

    IT之家 7 月 7 日消息,日前,有微博简介为“汽车行业从业者、长三角一体化拥护者”的微博用户 @长三角行健者 发文表示,据经销商集团反馈,小米汽车目前
Top