k8s debug 浅谈
一 k8s debug 浅谈
说明: 本文只是基于对'kubectl debug'浅显认识总结的知识点,后续'实际使用'再补充案例
Kubernetes 官方出品调试工具上手指南(无需安装,开箱即用)
debug-application
简化 Pod 故障诊断: kubectl-debug 介绍
1.18 版本之前需要自己安装kubectl debug 下载位置 debug_0.1.1_linux_amd64.tar.gz
① 低版本安装kubectl-debug工具
# linux x86_64export PLUGIN_VERSION=0.1.1mv debug_${PLUGIN_VERSION}_linux_amd64.tar.gz kubectl-debug.tar.gztar -zxvf kubectl-debug.tar.gz kubectl-debugmv kubectl-debug /usr/local/bin/机制: 关于为什么安装kubectl-debug,但是却可以使用'kubectl debug'命令参考'plugin的'机制

+++++++++++++ "推荐下面的方式,而不是plugin插件的方式" +++++++++++++1、在 'v1.23 及以上'版本中,该功能'默认'开启2、针对 '1.23 以下'的 K8S 版本,需要通过'以下'方式,'手动'开启1) '控制面' 开启 EphemeralContainers featureGate2) 进入 'master' 节点,编辑 /etc/kubernetes/manifests/ 下的 kube-apiserver.yaml、kube-controller-manager.yaml、kube-scheduler.yaml备注: 实际'操作'只修改kube-apiserver.yaml即可3) 在 command 部分添加 - --feature-gates=EphemeralContainers=true4) kubelet 服务开启该功能5) 在节点上'编辑' /var/lib/kubelet/kubeadm-flags.env添加 --feature-gates=EphemeralContainers=true或者设置KUBELET_EXTRA_ARGS="--feature-gates=EphemeralContainers=true"#6) 重启 kubelet:systemctl restart kubelet细节: v1.18.4 '版本中' 必须使用 kubectl 'alpha' debug

② 临时容器
1、 EphemeralContainer '临时容器'


Debugging using a copy of the Pod
③ debug的背景
1、kubectl是 k8s 管理员的日常工具,当'调试'或'排查 pod'问题时2、一般情况使用 'logs'、describe、exec '子命令'便可以找到'问题'原因java 排错 --> 镜像如果没有'提供相关'的工具,怎么排错呢? --> 'gcc 日志'分析、jvm性能分析补充: 容器所在节点'执行nsenter',查看pod或容器 ps: 不一定有'worker节点的登陆权限'思考: 哪些场景'不满足'驱使我们使用'kubectl debug'



--feature-gates="EphemeralContainers=true"
④ kubectl debug原理
kubectl debug 调试运行中的pod
![]()
1、内置的 kubectl debug 命令其实很'简单'2、通过 '--target' 参数指定'Pod中的哪个容器',给'正在运行中的 Pod' 增加一个'临时'容器备注: 默认是'主'容器,'第一个',也即'业务容器'补充:--image参数就是用于指定使用'哪个镜像来debug',这个镜像包含我们'常使用的工具'即可3、'共享进程命名空间',容器文件系统通过 '/proc/$pid/root' 链接对 pod 中的'其他容器'可见++++++++++++ "分割线" ++++++++++++运行 debug 命令, 把'日志级别'设置为 10 ,查看创建 debug 容器的'过程':kubectl run ephemeral-demo --image=pause:3.5 --restart=Neverkubectl -v=10 debug -it ephemeral --image=busybox:1.33.1 --target=temp_demo GET 获取 pod -> 'PATCH' 增加临时容器 -> 'GET' 获取临时容器 -> 'POST' 进入临时容器
![]()

kubeadm 安装的集群如何启动 kubectl debug 调试容器
1、当'debug'连接到Pod后,使用 'chroot /host' 突破 chroot,并完全'进入'主机2、可以获取到'节点完全的权限',查看到节点所有的文件,甚至'重启节点'
二 如何启动临时容器
① 在已经运行k8s集群中开启临时容器
需求: 在kubeadm 安装的'已经运行'的 Kubernetes 集群中开启'临时容器'功能1、/etc/kubernetes/manifests/kube-apiserver.yaml添加 'EphemeralContainers=true' 开启'临时容器'功能,如下'所示'- --feature-gates=DynamicKubeletConfig=true,EphemeralContainers=true备注: 如果要开启'多个特性'门控功能用 ',' 隔开

② 集群初始化的时候开启临时容器功能
说明: 如果想在'初始化' Kubernetes 集群时'开启'临时容器功能,则修改 'kubeadm' 配置文件# init.yaml
apiVersion: kubeadm.k8s.io/v1beta2
kind: ClusterConfiguration
kubernetesVersion: v1.19.3
apiServer:extraArgs:feature-gates: EphemeralContainers=true然后通过 'kubeadm init' 初始化 Kubernetes 集群:kubeadm init --config init.yaml
③ 验证
1、随着集群的运行,我们需要'验证其有效性'2、最简单方法是检查 'Pod API',它现在应该包含'临时容器'部分以及通常容器kubectl explain pod.spec.ephemeralContainers

④ 容器进程共享

share-process-namespace
ephemeral-containers
feature-gates
1、验证 Pod 中是否允许'进程共享',那么可以运行:kubectl get pod pod_name -o json | jq .spec.shareProcessNamespace --> 'true'
⑤ docker 逃逸方法汇总
容器逃逸: 避免'忘记'密码,'重启'服务器 --> 弄一个备用'紧急的逃生'通路引申: 镜像是否做过'安全'扫描相关文章:
k8s debug 浅谈
一 k8s debug 浅谈 说明: 本文只是基于对kubectl debug浅显认识总结的知识点,后续实际使用再补充案例 Kubernetes 官方出品调试工具上手指南(无需安装,开箱即用) debug-application 简化 Pod 故障诊断: kubectl-debug 介绍 1.18 版本之前需要自己…...
Day10 Liunx高级系统设计11-数据库2
DQL:数据查询语言 查询全表 select * from 表名; 查询指定列 select 列名 1, 列名 2,… from 表名 ; 条件查询 select * from 表名 where 条件 ; 注意: 条件查询就是在查询时给出 WHERE 子句,在 WHERE 子句中可以使用如下运算符及关键 字&#…...
车载导航系统UI界面,可视化大屏设计(PS源文件)
大屏组件可以让UI设计师的工作更加便捷,使其更高效快速的完成设计任务。现分享车载导航系统科技风蓝黑简约UI界面、车载系统UI主界面、车载系统科技风UI界面、首页车载系统科技感界面界面的大屏Photoshop源文件,开箱即用! 若需 更多行业 相关…...
工作之踩坑记录
1.i386架构之atol函数使用导致的业务程序错误: 情景:将框架传递的链接地址采用整形保存传输,在i386架构上导致地址比较大,采用atol转型可能导致数据被截断出现异常。 方案:采用atoll更大的数据类型进行处理即可避免该问题。 2.Json库使用注意long int问…...
【深度学习目标检测】四、基于深度学习的抽烟识别(python,yolov8)
YOLOv8是一种物体检测算法,是YOLO系列算法的最新版本。 YOLO(You Only Look Once)是一种实时物体检测算法,其优势在于快速且准确的检测结果。YOLOv8在之前的版本基础上进行了一系列改进和优化,提高了检测速度和准确性。…...
YML学习
讲解YML使用场景、语法和解析 1.基础知识1.1 什么是YML1.2 YML优点1.3 YML使用场景 2.YML语法2.1 基础语法2.2 字面量数据类型2.2.1 字符串2.2.2 NULL2.4.5 时间戳(timestamp) 2.3 对象\MAP类型2.4 数组/List/Set2.4.1 值为基础类型2.4.2 值为对象2.4.3 …...
华为HCIP认证H12-821题库下
26、6.交换技术核心知识 (单选题)某交换机运行RSTP协议,其相关配置信息如图所示,请根据命令配置情况指出对于Instance 1,该交换机的角色是: A、根交换机 B、非根交换机 C、交换机 D、无法判断 正确答案是&…...
01--二分查找
一. 初识算法 1.1 什么是算法? 在数学和计算机科学领域,算法是一系列有限的严谨指令,通常用于解决一类特定问题或执行计算 不正式的说,算法就是任何定义优良的计算过程:接收一些值作为输入,在有限的时间…...
初识大数据应用,一文掌握大数据知识文集(1)
文章目录 🏆初识大数据应用知识🔎一、初识大数据应用知识(1)🍁 01、请用Java实现非递归二分查询?🍁 02、是客户端还是Namenode决定输入的分片?🍁 03、mapred.job.tracker命令的作用?…...
Kafka生产问题总结及性能优化实践
1、消息丢失情况 消息发送端: (1)acks0: 表示producer不需要等待任何broker确认收到消息的回复,就可以继续发送下一条消息。性能最高,但是最容易丢消息。大数据统计报表场景,对性能要求很高&am…...
[MySQL]数据库原理2,Server,DataBase,Connection,latin1、UTF-8,gb2312,Encoding,Default Collation——喵喵期末不挂科
希望你开心,希望你健康,希望你幸福,希望你点赞! 最后的最后,关注喵,关注喵,关注喵,佬佬会看到更多有趣的博客哦!!! 喵喵喵,你对我真的…...
【算法集训】基础数据结构:十、矩阵
矩阵其实就是二维数组,这些题目在9日集训中已经做过,这里做的方法大致相同。 第一题 1351. 统计有序矩阵中的负数 int countNegatives(int** grid, int gridSize, int* gridColSize) {int r gridSize;int c gridColSize[0];int ret 0;for(int i 0;…...
python排序算法 直接插入排序法和折半插入排序法
最近需要使用到一些排序算法,今天主要使针对直接插入排序和折半插入排序进行讲解。 首先是直接插入排序,其排序过程主要是,针对A[a1,a2,a3,a4,a5....an],从排序的序列头部起始位置开始,将其也就是a1视为只有一个元素的…...
【flutter对抗】blutter使用+ACTF习题
最新的能很好反编译flutter程序的项目 1、安装 git clone https://github.com/worawit/blutter --depth1 然后我直接将对应的两个压缩包下载下来(通过浏览器手动下载) 不再通过python的代码来下载,之前一直卡在这个地方。 如果读者可以正…...
OpenHarmony 如何去除系统锁屏应用
前言 OpenHarmony源码版本:4.0release / 3.2 release 开发板:DAYU / rk3568 一、3.2版本去除锁屏应用 在源码根目录下:productdefine/common/inherit/rich.json 中删除screenlock_mgr组件的编译配置,在rich.json文件中搜索th…...
Python - 搭建 Flask 服务实现图像、视频修复需求
目录 一.引言 二.服务构建 1.主函数 upload_gif 2.文件接收 3.专属目录 4.图像修复 5.gif2mp4 6.mp42gif 7.图像返回 三.服务测试 1.服务启动 2.服务调用 四.总结 一.引言 前面我们介绍了如何使用 Real-ESRGAN 进行图像增强并在原始格式 jpeg、jpg、mp4 的基础上…...
C#基础——构造函数、析构函数
C#基础——构造函数、析构函数 1、构造函数 构造函数是一种特殊的方法,用于在创建类的实例时进行初始化操作。构造函数与类同名,并且没有返回类型。 构造函数在对象创建时自动调用,可以用来设置对象的初始状态、分配内存、初始化字段等操作…...
jmeter 如何循环使用接口返回的多值?
有同学在用jmeter做接口测试的时候,经常会遇到这样一种情况: 就是一个接口请求返回了多个值,然后下一个接口想循环使用前一个接口的返回值。 这种要怎么做呢? 有一定基础的人,可能第一反应就是先提取前一个接口返回…...
VLAN 详解一(VLAN 基本原理及 VLAN 划分原则)
VLAN 详解一(VLAN 基本原理及 VLAN 划分原则) 在早期的交换网络中,网络中只有 PC、终端和交换机,当某台主机发送一个广播帧或未知单播帧时,该数据帧会被泛洪,甚至传递到整个广播域。而广播域越大ÿ…...
Android - 分区存储 MediaStore、SAF
官方页面 参考文章 一、概念 分区存储(Scoped Storage)的推出是针对 APP 访问外部存储的行为(乱建乱获取文件和文件夹)进行规范和限制,以减少混乱使得用户能更好的控制自己的文件。 公有目录被分为两大类:…...
day52 ResNet18 CBAM
在深度学习的旅程中,我们不断探索如何提升模型的性能。今天,我将分享我在 ResNet18 模型中插入 CBAM(Convolutional Block Attention Module)模块,并采用分阶段微调策略的实践过程。通过这个过程,我不仅提升…...
如何在看板中体现优先级变化
在看板中有效体现优先级变化的关键措施包括:采用颜色或标签标识优先级、设置任务排序规则、使用独立的优先级列或泳道、结合自动化规则同步优先级变化、建立定期的优先级审查流程。其中,设置任务排序规则尤其重要,因为它让看板视觉上直观地体…...
WordPress插件:AI多语言写作与智能配图、免费AI模型、SEO文章生成
厌倦手动写WordPress文章?AI自动生成,效率提升10倍! 支持多语言、自动配图、定时发布,让内容创作更轻松! AI内容生成 → 不想每天写文章?AI一键生成高质量内容!多语言支持 → 跨境电商必备&am…...
排序算法总结(C++)
目录 一、稳定性二、排序算法选择、冒泡、插入排序归并排序随机快速排序堆排序基数排序计数排序 三、总结 一、稳定性 排序算法的稳定性是指:同样大小的样本 **(同样大小的数据)**在排序之后不会改变原始的相对次序。 稳定性对基础类型对象…...
SQL慢可能是触发了ring buffer
简介 最近在进行 postgresql 性能排查的时候,发现 PG 在某一个时间并行执行的 SQL 变得特别慢。最后通过监控监观察到并行发起得时间 buffers_alloc 就急速上升,且低水位伴随在整个慢 SQL,一直是 buferIO 的等待事件,此时也没有其他会话的争抢。SQL 虽然不是高效 SQL ,但…...
day36-多路IO复用
一、基本概念 (服务器多客户端模型) 定义:单线程或单进程同时监测若干个文件描述符是否可以执行IO操作的能力 作用:应用程序通常需要处理来自多条事件流中的事件,比如我现在用的电脑,需要同时处理键盘鼠标…...
从面试角度回答Android中ContentProvider启动原理
Android中ContentProvider原理的面试角度解析,分为已启动和未启动两种场景: 一、ContentProvider已启动的情况 1. 核心流程 触发条件:当其他组件(如Activity、Service)通过ContentR…...
Kubernetes 网络模型深度解析:Pod IP 与 Service 的负载均衡机制,Service到底是什么?
Pod IP 的本质与特性 Pod IP 的定位 纯端点地址:Pod IP 是分配给 Pod 网络命名空间的真实 IP 地址(如 10.244.1.2)无特殊名称:在 Kubernetes 中,它通常被称为 “Pod IP” 或 “容器 IP”生命周期:与 Pod …...
ui框架-文件列表展示
ui框架-文件列表展示 介绍 UI框架的文件列表展示组件,可以展示文件夹,支持列表展示和图标展示模式。组件提供了丰富的功能和可配置选项,适用于文件管理、文件上传等场景。 功能特性 支持列表模式和网格模式的切换展示支持文件和文件夹的层…...
【把数组变成一棵树】有序数组秒变平衡BST,原来可以这么优雅!
【把数组变成一棵树】有序数组秒变平衡BST,原来可以这么优雅! 🌱 前言:一棵树的浪漫,从数组开始说起 程序员的世界里,数组是最常见的基本结构之一,几乎每种语言、每种算法都少不了它。可你有没有想过,一组看似“线性排列”的有序数组,竟然可以**“长”成一棵平衡的二…...
