当前位置: 首页 > news >正文

入门k8s-Pod

  • Pod 是 Kubernetes 中能够被创建和管理的最小部署单元。
  • 它可以包含一个或多个容器,这些容器共享存储、网络以及如何运行的规范(如重启策略)。
  • 在大多数情况下,Pod 通常只包含一个容器,但在某些场景下(如边车模式 Sidecar),Pod 可能会包含多个紧密相关的容器

创建 Pod 的步骤

  1. 定义 Pod 的配置:首先需要编写一个 YAML 文件来定义 Pod 的配置,包括容器镜像、端口暴露、环境变量等信息。
  2. 使用 kubectl 命令行工具或 Kubernetes API:通过 kubectl apply -f <your-pod-definition.yaml> 命令或者直接调用 Kubernetes API 来创建 Pod。
  3. Kubernetes 调度器调度 Pod:Kubernetes 会根据资源可用性和其他约束条件选择合适的节点来运行这个 Pod。
  4. Kubelet 在选定的节点上启动 Pod:一旦 Pod 被分配给某个节点,该节点上的 Kubelet 进程就会负责启动容器并管理它们的生命周期。

示例 YAML 文件

以下是一个简单的 Pod 定义示例:

apiVersion: v1
kind: Pod
metadata:name: nginx-podlabels:app: web
spec:containers:- name: nginximage: nginx:latestports:- containerPort: 80
解释
  • apiVersion: 指定使用的 Kubernetes API 版本,对于 Pod 来说,通常使用 v1
  • kind: 表明你正在定义的对象类型,在这里是指 Pod
  • metadata: 包含元数据如名称和标签。
    • name: Pod 的名称。
    • labels: 键值对形式的标签,可用于标识和选择对象。
  • spec: 描述了 Pod 的期望状态。
    • containers: 列表,包含 Pod 中所有容器的信息。
      • name: 容器的名字。
      • image: 容器镜像的名称及版本。
      • ports: 容器暴露的端口列表。
        • containerPort: 容器内部监听的端口号。

使用 kubectl 创建 Pod

假设上述 YAML 文件保存为 nginx-pod.yaml,可以通过以下命令创建 Pod:

kubectl apply -f nginx-pod.yaml

这将把 Pod 配置发送到 Kubernetes API Server,然后由 Kubernetes 系统进行处理。

Kubernetes 内部流程概览

  1. API Server 接收请求:当执行 kubectl apply 命令时,它会向 Kubernetes API Server 发送一个请求。
  2. Admission Controllers:在实际创建资源之前,可能会经过一些准入控制器(Admission Controllers),这些控制器可以修改请求内容或拒绝不符合策略的请求。
  3. Etcd 存储状态:一旦请求被批准,新的 Pod 对象会被存储在 etcd 中。
  4. Scheduler 调度:Kubernetes Scheduler 会查找未绑定到任何节点的新 Pod,并基于资源需求、亲和性规则等因素决定将其放置在哪一个节点上。
  5. Kubelet 执行:选定节点上的 Kubelet 收到通知后,会拉取所需的容器镜像,并启动容器。
http://www.lqws.cn/news/504235.html

相关文章:

  • k8s强制删除podpvpvc和nsnamespace
  • 《陈欣与链接器的黄昏》
  • 华为云Flexus+DeepSeek征文|体验华为云ModelArts快速搭建Dify-LLM应用开发平台并创建小红书爆款文案大模型
  • 软件工程:从理论到实践,构建可靠软件的艺术与科学
  • python有哪些常用的GUI(图形用户界面)库及选择指南
  • 通义灵码编程智能体深度评测(Qwen3模型+终端操作+MCP工具调用实战)
  • STM32 环境监测与控制系统的设计与实现
  • 认识Scikit-learn/PyTorch/TensorFlow这几个AI框架
  • 从代码学习深度学习 - 情感分析:使用循环神经网络 PyTorch版
  • 国产安路FPGA纯verilog视频图像去雾,基于暗通道先验算法实现,提供5套TD工程源码和技术支持
  • 帮助装修公司拓展客户资源的微信装修小程序怎么做?
  • 开篇-认识Gin——Go语言Web框架的性能王者
  • 接口自动化测试之 pytest 接口关联框架封装
  • Qt 中使用 gtest 做单元测试
  • 如何一次性将 iPhone 中的联系人转移到 PC
  • Learning to See in the Dark 论文阅读
  • 安卓android com.google.android.material.tabs.TabLayout 设置下拉图标无法正常显示
  • ubuntu虚拟机扩容
  • 【计算机网络】期末复习
  • centos 7 mysql 8 离线部署
  • (3)ROS2:6-dof前馈+PD / 阻抗控制器
  • 【Vue】 keep-alive缓存组件实战指南
  • C# VB.NET中Tuple轻量级数据结构和固定长度数组
  • 第五课:大白话教你用K邻近算法做分类和回归
  • 从零学习linux(2)——管理
  • 战地2042(战地风云)因安全启动(Secure Boot)无法启动的解决方案以及其他常见的启动或闪退问题
  • iOS 抓包实战:时间戳偏差导致的数据同步异常排查记录
  • spring-ai 1.0.0 学习(十四)——向量数据库
  • 【机器学习深度学习】反向传播机制
  • 使用argparse封装python程序为命令行工具