5. k8s 之 pod原理与使用


Kubernetes Pod 原理详解


1. Pod 的部署方式

Pod 是 Kubernetes 的最小调度单元,其部署方式分为 声明式(YAML)命令式(kubectl) 两种:

(1) 声明式部署(推荐)

通过 YAML 文件定义 Pod 规格,由 Kubernetes 确保实际状态与声明一致:

# pod.yaml
apiVersion: v1
kind: Pod
metadata:name: my-pod
spec:containers:- name: nginximage: nginx:1.23ports:- containerPort: 80- name: sidecarimage: busyboxcommand: ["sh", "-c", "tail -f /dev/null"]

应用配置:

kubectl apply -f pod.yaml
(2) 命令式部署

直接通过 kubectl 命令创建临时 Pod(适合调试):

kubectl run my-pod --image=nginx:1.23 --port=80

2. Pod 共享网络机制

同一 Pod 内的所有容器共享 网络命名空间,表现为:
同一 IP 地址:所有容器共享 Pod IP,外部通过该 IP 访问。
localhost 通信:容器间通过 localhost:port 直接通信,无需服务发现。
共享端口空间:容器端口不能冲突(如两个容器同时监听 80 端口会导致错误)。

底层实现

Infra 容器:每个 Pod 启动时先创建 pause 容器(由 Kubernetes 维护),负责创建共享的网络命名空间。
其他容器:通过 --net=container:<infra-container-id> 加入该网络命名空间。


3. Pod 的原子性部署

整体调度:Pod 是 Kubernetes 的最小调度单元,所有容器作为一个整体被调度到同一节点。
原子生命周期
创建:所有容器同时启动,任一容器启动失败则 Pod 进入 Error 状态。
删除:所有容器同时终止,Kubernetes 发送 SIGTERM 信号并等待优雅退出(默认 30 秒后强制终止)。


4. Pod 生命周期

Pod 的生命周期由多个阶段(Phase)和状态(Conditions)组成:

(1) 生命周期阶段(Phase)
阶段描述
PendingPod 已被调度到节点,但至少一个容器未完成启动(如镜像下载中)。
Running所有容器已创建,至少一个容器处于运行状态。
Succeeded所有容器正常退出(退出码为 0),且不再重启。
Failed至少一个容器非正常退出(退出码非 0),且所有容器已终止。
UnknownPod 状态无法获取(通常因节点失联导致)。
(2) 关键事件与探针

Init Containers:在应用容器前运行的初始化容器,必须全部成功。

spec:initContainers:- name: init-dbimage: busyboxcommand: ['sh', '-c', 'until nslookup db-service; do sleep 2; done']

探针(Probes):控制容器健康状态和流量接收。

livenessProbe:    # 存活检查:失败则重启容器httpGet:path: /healthzport: 8080
readinessProbe:   # 就绪检查:失败则从 Service 移除端点exec:command: ["cat", "/tmp/ready"]
(3) 重启策略(RestartPolicy)

Always(默认):容器退出后自动重启。
OnFailure:仅当容器非正常退出(退出码非 0)时重启。
Never:不重启。


5. Pod 相关操作指令
(1) 创建与删除
# 从 YAML 创建
kubectl apply -f pod.yaml# 删除 Pod
kubectl delete pod my-pod
(2) 查看状态
# 查看 Pod 列表
kubectl get pods [-o wide] [--watch]# 查看 Pod 详情(含事件日志)
kubectl describe pod my-pod
(3) 调试与日志
# 查看容器日志
kubectl logs my-pod -c nginx [--follow] [--tail=100]# 进入容器终端
kubectl exec -it my-pod -c nginx -- /bin/sh# 复制文件到 Pod
kubectl cp /local/file my-pod:/path/in/pod
(4) 资源管理
# 编辑运行中的 Pod 配置(临时调试)
kubectl edit pod my-pod# 强制删除卡在 Terminating 的 Pod
kubectl delete pod my-pod --grace-period=0 --force

6. 常见问题与解决

Pending 状态:检查资源配额、镜像拉取权限或节点污点(Taints)。
CrashLoopBackOff:查看容器日志 (kubectl logs --previous) 定位启动错误。
网络不通:验证 kube-proxy 是否正常运行,检查网络插件(Calico/Flannel)状态。
存储挂载失败:确认 PersistentVolumeClaim (PVC) 是否已绑定。


总结

Pod 是原子单位:所有容器共享网络、存储,同生共死。
声明式管理:通过 YAML 定义,由 Kubernetes 确保状态一致性。
生命周期控制:探针和重启策略保障应用高可用。
核心操作指令kubectl get/describe/logs/exec 是调试 Pod 的必备工具。

理解 Pod 的原理和操作,是掌握 Kubernetes 应用编排的基础。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/76085.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用PyTorch实现目标检测边界框转换与可视化

一、引言 在目标检测任务中&#xff0c;边界框&#xff08;Bounding Box&#xff09;的坐标表示与转换是核心基础操作。本文将演示如何&#xff1a; 实现边界框的两种表示形式&#xff08;角点坐标 vs 中心坐标&#xff09;之间的转换 使用Matplotlib在图像上可视化边界框 验…

电影推荐及数据分析可视化系统(Python+Echarts+Mysql+Flask框架)

提升自己&#xff0c;掌握数据分析的能力&#xff0c;最快的方式就是实践&#xff01; 下面是对本项目的一些功能展示、介绍以及部分核心代码的展示,附项目系统展示的视频,制作不易如需完整代码后台私信我有偿获取! 一 、系统分析及功能介绍 1.系统分析 系统采用Python作为开发…

Android Jetpack Compose 高级开发核心技术

Android Compose 高级技术总结 1. 性能优化 1.1 状态管理优化 状态提升原则&#xff1a;将状态提升到共享的最近共同父组件derivedStateOf&#xff1a;当需要基于多个状态计算派生状态时使用 val scrollState rememberScrollState() val showButton by remember {derivedS…

Java堆结构深度解析:原理、实现与应用全指南

一、堆的核心概念体系 1. 堆的定义与性质 graph TBROOT((最大堆)) --> A[父节点 ≥ 子节点]ROOT --> B[完全二叉树结构]ROOT --> C[数组存储]ROOT --> D[快速获取极值] 2. 堆类型对比 类型特性典型应用场景最大堆父节点值 ≥ 子节点值获取前K大元素最小堆父节点…

SpringMVC学习(请求与响应。常见参数类型接收与响应。@RequestParam、@RequestBody的使用)(详细示例)

目录 一、请求与响应。(RequestMapping) &#xff08;1&#xff09;使用注解RequestMapping对业务模块区分。 StudentController。 TeacherController。 &#xff08;2&#xff09;Apifox请求与响应。 "/student/login"。 "/teacher/login"。 二、常见参数…

回溯算法+对称剪枝——从八皇后问题到数独问题(二)

引入&#xff1a; 本节我们进一步完善八皇后问题&#xff0c;学习剪枝、八皇后残局问题 进一步领会逻辑编程的概念&#xff0c;深入体会回溯算法&#xff0c;回顾上一节提到的启发搜索策略。 回顾&#xff1a; 八皇后问题&#xff1a;我们需要在一个空棋盘上放置 n 个皇后&a…

【玩泰山派】MISC(杂项)- 使用vscode远程连接泰山派进行开发

文章目录 前言流程1、安装、启动sshd2、配置一下允许root登录3、vscode中配置1、安装remote插件2、登录 **注意** 前言 有时候要在开发板中写一写代码&#xff0c;直接在终端中使用vim这种工具有时候也不是很方便。这里准备使用vscode去通过ssh远程连接泰山派去操作&#xff0…

【VsCode】设置文件自动保存

目录 一、前言 二、操作步骤 一、前言 VSCode中开启自动保存功能可以通过访问设置、修改settings.json文件、使用自动保存延迟功能来实现。这些方法能有效提升编程效率、避免数据丢失、实时同步更改。 二、操作步骤 在 Visual Studio Code (VS Code) 中设置自动保存功能非…

Adobe After Effects的插件--------Optical Flares之Options概述

Optical Flares插件的Options是对整个效果的组装和设置。点击该按钮会弹出一个组装室弹窗。 Options组装室就是对每个【镜头对象】进行加工处理,再将其组装在一起,拼凑成完整的光效。 接下来是我对组装室的探索: 面板 面板中有预览、堆栈、编辑和浏览按钮,其作用是调节窗…

如何用 esProc 补充数据库 SQL 的缺失能力

某些数据库 SQL 缺失必要的能力&#xff0c;通常要编写大段的代码&#xff0c;才能间接实现类似的功能&#xff0c;有些情况甚至要改用存储过程&#xff0c;连结构都变了。常见的比如&#xff1a;生成时间序列、保持分组子集、动态行列转换、自然序号、相对位置、按序列和集合生…

迷你世界脚本脚本常见问题

脚本常见问题 彼得兔 更新时间: 2024-05-22 17:54:44 在查阅开发者学院中的脚本API时&#xff0c;若有任何问题或建议&#xff0c;欢迎通过问卷进行反馈&#xff01;【点我填写问卷】 1.Block中的data在什么地方使用 data使用有具体需求,此处不建议开发者使用。开发者尽可能使…

四、Appium Inspector

一、介绍 Appium Inspector 是一个用于移动应用自动化测试的图形化工具&#xff0c;主要用于检查和交互应用的 UI 元素&#xff0c;帮助生成和调试自动化测试脚本。类似于浏览器的F12(开发者工具),Appium Inspector 的主要作用包括&#xff1a;‌ 1.‌检查 UI 元素‌ …

android11通过白名单卸载安装应用

目录 1.源码路径: 2.准备文件package.conf: 3.安装方法installPackagesLI 4.卸载方法deletePackageX 1.源码路径: frameworks/base/services/core/java/com/android/server/pm/PackageManagerService.java public static final String WHITELIST_PATH="/data/misc/pa…

qt mapFrom返回的QPoint和event->pos()区别和globalPos区别

mousePressEvent 和 eventFilter 里 event.pos 不一样&#xff0c;一定要注意 eventFilter里event.pos 直接返回相对于label左上角的坐标&#xff0c;就不要再mapFrom mousePressEvent 里event.pos 返回是相对于窗口左上角的坐标&#xff0c;需要用mapFrom返回label左上角的…

Hadoop四 Hive语法

一 数据库操作 Hive数据库操作&#xff0c;与MySql有很多都是一致的 创建数据库 create database if not exists myhive; use myhive;查看数据库详细信息 desc database myhive;数据库本质上就是在HDFS之上的文件夹&#xff0c;是一个以.db结尾的目录&#xff0c;默认存…

前端VUE框架理论与应用(10)

1、记住全局注册的行为必须在根 Vue 实例 (通过 new Vue) 创建之前发生。 2、要注意,以 / 开头的嵌套路径会被当作根路径。 这让你充分的使用嵌套组件而无须设置嵌套的路径。 3、注意:在 Vue 实例内部,你可以通过 $router 访问路由实例。因此你可以调用 this.$router.push…

leetcode-单调栈26

关于单调栈的顺序总结&#xff1a; 寻找右边第一个比我大的&#xff1a;从左到右遍历&#xff0c;栈单调递减 寻找左边第一个比我小的&#xff1a;从左到右遍历&#xff0c;栈单调递增 寻找右边第一个比我小的&#xff1a;从右到左遍历&#xff0c;栈单调递增 寻找左边第一个比…

Linux:安装 CentOS 7(完整教程)

文章目录 一、简介二、安装 CentOS 72.1 虚拟机配置2.2 安装CentOS 7 三、连接远程服务器&#xff08;扩展&#xff09;3.1 获取虚拟机 IP 地址3.2 连接远程服务器 四、结语 一、简介 CentOS&#xff08;Community ENTerprise Operating System&#xff09;是一个基于 Linux 的…

Nautilus 正式发布:为 Sui 带来可验证的链下隐私计算

作为 Sui 安全工具包中的强大新成员&#xff0c;Nautilus 现已上线 Sui 测试网。它专为 Web3 开发者打造&#xff0c;支持保密且可验证的链下计算。Nautilus 应用运行于开发者自主管理的可信执行环境&#xff08;Trusted Execution Environment&#xff0c;TEE&#xff09;中&a…

Git完全指南:从入门到精通版本控制 ------- Git 工作流程 (3)

Git工作流程完全指南&#xff1a;从入门到高效协作 引言 Git作为分布式版本控制系统的行业标准&#xff0c;其高效的分支管理能力是团队协作的基石。本文将深入解析标准Git工作流程&#xff0c;助你掌握从代码提交到团队协作的全链路实践。 一、Git核心概念速览 三大工作区域 …