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 访问外部存储的行为(乱建乱获取文件和文件夹)进行规范和限制,以减少混乱使得用户能更好的控制自己的文件。 公有目录被分为两大类:…...
java_网络服务相关_gateway_nacos_feign区别联系
1. spring-cloud-starter-gateway 作用:作为微服务架构的网关,统一入口,处理所有外部请求。 核心能力: 路由转发(基于路径、服务名等)过滤器(鉴权、限流、日志、Header 处理)支持负…...
【Oracle APEX开发小技巧12】
有如下需求: 有一个问题反馈页面,要实现在apex页面展示能直观看到反馈时间超过7天未处理的数据,方便管理员及时处理反馈。 我的方法:直接将逻辑写在SQL中,这样可以直接在页面展示 完整代码: SELECTSF.FE…...
在鸿蒙HarmonyOS 5中实现抖音风格的点赞功能
下面我将详细介绍如何使用HarmonyOS SDK在HarmonyOS 5中实现类似抖音的点赞功能,包括动画效果、数据同步和交互优化。 1. 基础点赞功能实现 1.1 创建数据模型 // VideoModel.ets export class VideoModel {id: string "";title: string ""…...
基于Uniapp开发HarmonyOS 5.0旅游应用技术实践
一、技术选型背景 1.跨平台优势 Uniapp采用Vue.js框架,支持"一次开发,多端部署",可同步生成HarmonyOS、iOS、Android等多平台应用。 2.鸿蒙特性融合 HarmonyOS 5.0的分布式能力与原子化服务,为旅游应用带来…...
质量体系的重要
质量体系是为确保产品、服务或过程质量满足规定要求,由相互关联的要素构成的有机整体。其核心内容可归纳为以下五个方面: 🏛️ 一、组织架构与职责 质量体系明确组织内各部门、岗位的职责与权限,形成层级清晰的管理网络…...
智能仓储的未来:自动化、AI与数据分析如何重塑物流中心
当仓库学会“思考”,物流的终极形态正在诞生 想象这样的场景: 凌晨3点,某物流中心灯火通明却空无一人。AGV机器人集群根据实时订单动态规划路径;AI视觉系统在0.1秒内扫描包裹信息;数字孪生平台正模拟次日峰值流量压力…...
如何在最短时间内提升打ctf(web)的水平?
刚刚刷完2遍 bugku 的 web 题,前来答题。 每个人对刷题理解是不同,有的人是看了writeup就等于刷了,有的人是收藏了writeup就等于刷了,有的人是跟着writeup做了一遍就等于刷了,还有的人是独立思考做了一遍就等于刷了。…...
sipsak:SIP瑞士军刀!全参数详细教程!Kali Linux教程!
简介 sipsak 是一个面向会话初始协议 (SIP) 应用程序开发人员和管理员的小型命令行工具。它可以用于对 SIP 应用程序和设备进行一些简单的测试。 sipsak 是一款 SIP 压力和诊断实用程序。它通过 sip-uri 向服务器发送 SIP 请求,并检查收到的响应。它以以下模式之一…...
如何更改默认 Crontab 编辑器 ?
在 Linux 领域中,crontab 是您可能经常遇到的一个术语。这个实用程序在类 unix 操作系统上可用,用于调度在预定义时间和间隔自动执行的任务。这对管理员和高级用户非常有益,允许他们自动执行各种系统任务。 编辑 Crontab 文件通常使用文本编…...
CRMEB 中 PHP 短信扩展开发:涵盖一号通、阿里云、腾讯云、创蓝
目前已有一号通短信、阿里云短信、腾讯云短信扩展 扩展入口文件 文件目录 crmeb\services\sms\Sms.php 默认驱动类型为:一号通 namespace crmeb\services\sms;use crmeb\basic\BaseManager; use crmeb\services\AccessTokenServeService; use crmeb\services\sms\…...
