当前位置: 首页 > 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 收到通知后,会拉取所需的容器镜像,并启动容器。

相关文章:

  • 电子产品网站建设策划seo标题关键词优化
  • dw做视频网站百度公司推广
  • 网站安全认证去哪做百度推广网页版
  • 湛江网站建设北京seo服务行者
  • 义乌市建设银行分行网站发布外链的步骤
  • 南昌网站建设公司特色广州网站优化软件
  • 1.3、接收方数据采样和同步问题
  • STM32学习笔记——中断控制
  • 华为云Flexus+DeepSeek征文|华为云ModelArts Studio:利用New API实现大模型网关与AI资产管理的无缝对接
  • 响应式API和非响应式API
  • 【软考高级系统架构论文】论单元测试方法及应用
  • Zephyr OS蓝牙广播(Advertising)功能实现
  • 【Docker基础】Docker容器管理:docker unpause详解
  • 大模型本地部署,拥有属于自己的ChatGpt
  • 14.OCR字符识别
  • 【计算机网络】期末复习
  • STM32 环境监测与控制系统的设计与实现
  • 壁挂马桶品牌推荐:我的“瑞尔特瑞家HX5”沉浸式体验报告健康与洁净的硬核科技
  • 集成学习基础:Bagging 原理与应用
  • Linux环境下MariaDB如何实现负载均衡
  • 什么是RibbitMQ
  • 【e^ix图像展示】
  • 选择整数类型
  • 浸入式学语言助手(illa-helper)一款基于“可理解输入“理论的浏览器扩展插件,帮助在日常网页浏览中自然地学习语言。
  • [3D-Portfolio] docs | js集中式配置 | React组件 | 组件嵌套
  • 深度学习在智能机器人导航中的创新应用与未来趋势