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

当K8S容器没有bash时7种高阶排查手段

遇到容器没有bash甚至没有sh的情况,就像被困在没有门窗的房间。但真正的K8S运维高手,即使面对这种情况也能游刃有余。以下是我们在生产环境锤炼出的7大实战技巧:

一、基础三板斧(新手必学)

1. 日志捕获术——穿透重启迷雾

# 查看实时日志(即使容器不断重启)
kubectl logs -f <pod-name> --tail=100 # 查看已崩溃容器的遗言(关键!)
kubectl logs --previous <pod-name>  # 救命命令!

适用场景:容器启动后立即崩溃
避坑指南:必须开启容器日志持久化,否则重启后日志丢失

2. 全息透视——describe命令

kubectl describe pod <pod-name> | grep -A 20 Events  # 重点看事件流

关键线索

  • ImagePullBackoff:镜像拉取失败
  • CrashLoopBackOff:程序持续崩溃
  • FailedScheduling:节点资源不足

3. 无侵入探测——临时执行命令

# 即使没有shell也能执行单次命令
kubectl exec <pod-name> -- ls /app  # 查看目录结构
kubectl exec <pod-name> -- env       # 查看环境变量
二、高阶四式(专家必备)

4. 时空穿越术——临时调试容器

# 注入临时容器(需要K8S 1.23+)
kubectl debug -it <pod-name> --image=busybox:1.35 --target=<原容器名>

原理:在目标Pod中插入一个共享进程命名空间的临时容器
优势

  • 原容器无需任何修改
  • 可使用完整工具链(nc/tcpdump等)
     

限制:需要启用EphemeralContainers特性门控

5. 网络侦探模式——nsenter直连容器网络

# 在宿主机上执行(需节点访问权限)
PID=$(docker inspect -f '{{.State.Pid}}' <容器ID>)
nsenter -n -t $PID ip addr  # 查看容器IP
nsenter -n -t $PID tcpdump -i eth0  # 抓包分析

适用场景:网络不通、端口占用等疑难杂症
安全警告:需严格控制节点SSH访问权限

6. 镜像改造术——构建调试专用镜像

FROM 原镜像
RUN microdnf install -y busybox ncurses  # 针对Alpine镜像
# 或
RUN apt-get update && apt-get install -y curl telnet  # 针对Debian系

部署技巧

  • 使用独立标签如 -debug
  • 通过环境变量控制调试工具安装
     

生产建议:在CI/CD流水线中准备调试镜像版本

7. 上帝视角——集群级监控

  • Prometheus+Alertmanager:监控容器OOMKilled事件
  • eBPF工具:使用BCC工具集排查系统调用
# 查看容器内进程文件访问
execsnoop -n <容器进程名>
三、特殊场景破解秘籍

场景1:容器只有静态二进制文件(如Go程序)

# 使用共享卷挂载busybox
kubectl debug -it <pod-name> --image=busybox --share-processes --copy-to=<新pod名>

场景2:容器用户权限受限

# 以root身份进入
kubectl exec -it <pod-name> -- chroot /host /bin/bash  # 适用于OpenShift

场景3:Istio服务网格环境

# 使用istio-proxy容器调试
kubectl exec -it <pod-name> -c istio-proxy -- sh
四、生产环境安全红线

严禁直接修改生产容器
所有调试操作必须通过临时容器或副本进行

调试镜像管理规范

  • 使用独立镜像仓库存储调试镜像
  • 定期扫描镜像漏洞

权限最小化原则

# RBAC配置示例
kind: ClusterRole
rules:
- apiGroups: [""]resources: ["pods/exec"]verbs: ["create"]  # 仅开放exec权限
五、调试工具全家福
工具适用场景安装方式
busybox基础命令缺失kubectl debug注入
netshoot网络故障排查nicolaka/netshoot镜像
kubectl-debug全功能调试插件安装
crictl节点级容器操作所有K8S节点预装
六、写在最后:调试哲学
  1. 先观察后动手:70%的问题通过日志和describe即可定位
  2. 最小侵入原则:像外科手术般精准操作
  3. 善用可观测性:提前部署监控比事后调试更重要

记住:真正的王者,不是能进入所有容器,而是不用进入容器就能解决问题!

相关文章:

当K8S容器没有bash时7种高阶排查手段

遇到容器没有bash甚至没有sh的情况&#xff0c;就像被困在没有门窗的房间。但真正的K8S运维高手&#xff0c;即使面对这种情况也能游刃有余。以下是我们在生产环境锤炼出的7大实战技巧&#xff1a; 一、基础三板斧&#xff08;新手必学&#xff09; 1. 日志捕获术——穿透重启…...

linux -c程序开发

目的是在linux中创建可执行的c语言程序的步骤 和gcc,make和git的简单运用 建立可执行程序的步骤: -1:预处理: --:头文件展开;--去掉注释;--宏替换;--条件编译 -2:编译 --:将预处理之后的c语言替换为汇编语言带阿米 --:语法分析,语义分析,代码生成 --:检查语法正确性并且优…...

LLM损失函数面试会问到的

介绍一下KL散度 KL&#xff08;Kullback-Leibler散度衡量了两个概率分布之间的差异。其公式为&#xff1a; D K L ( P / / Q ) − ∑ x ∈ X P ( x ) log ⁡ 1 P ( x ) ∑ x ∈ X P ( x ) log ⁡ 1 Q ( x ) D_{KL}(P//Q)-\sum_{x\in X}P(x)\log\frac{1}{P(x)}\sum_{x\in X}…...

【redis】redis 手动切换主从

场景一&#xff1a; 测试需要&#xff0c;需要手动切换主从 在redis节点&#xff1a; $ redis-cli -h xx.xx.xx.xx -p XX -a XX shutdown 不要直接关闭redis进程&#xff0c;使用 shutdown &#xff0c;能在进程关闭前持久化内存中的数据 待主从切换完毕后&#xff1…...

Webug4.0靶场通关笔记17- 第21关文件上传(htaccess)

目录 第21关 文件上传(htaccess) 1.打开靶场 2.源码分析 &#xff08;1&#xff09;右键源码 &#xff08;2&#xff09;源码分析 3.渗透实战 &#xff08;1&#xff09;配置环境 &#xff08;2&#xff09;构造脚本 &#xff08;3&#xff09;访问脚本 本文通过《webu…...

ASP.NET Core 中间件

文章目录 前言一、中间件的本质定义&#xff1a;类比&#xff1a; 二、作用场景&#xff1a;三、中间件的执行顺序四、中间件的配置方式1&#xff09;委托形式&#xff08;最常见&#xff09;&#xff1a;2&#xff09;类形式&#xff1a; 五、核心方法六、注意事项七、中间件 …...

Linux:进程间通信---命名管道共享内存

文章目录 1.命名管道1.1 命名管道是什么1.2 如何创建命名管道1.3 如何通过命名管道实现进程间通信 2. 共享内存2.1 共享内存的原理2.2 共享内存的系统接口与接口的调用2.3 共享内存的挂接2.4 共享内存的特性 序&#xff1a;在上一章对用来进行进程间通信的匿名管道进行了详细的…...

一个基于Asp.Net Core + Angular + Bootstrap开源CMS系统

从零学习构建一个完整的系统 推荐一个功能强大、易于扩展、安全可靠的开源内容管理系统&#xff0c;适用于各种类型和规模的网站。 项目简介 MixCoreCMS是一个基于.NET Core框架的开源内容管理系统&#xff08;CMS&#xff09;&#xff0c;提供了丰富的的基础功能和插件&…...

ECMAScript 6(ES6):JavaScript 现代化的革命性升级

1. 版本背景与发布 发布时间&#xff1a;2015 年 6 月&#xff0c;由 ECMA International 正式发布&#xff0c;标准编号为 ECMA-262 Edition 6&#xff08;后称 ES2015&#xff09;。历史意义&#xff1a; JavaScript 诞生 20 年后的革命性升级&#xff0c;首次引入类&#…...

基于WebUI的深度学习模型部署与应用实践

引言 随着深度学习技术的快速发展,如何将训练好的模型快速部署并提供友好的用户交互界面成为许多AI项目落地的关键。WebUI(Web User Interface)作为一种轻量级、跨平台的解决方案,正被广泛应用于各类AI模型的部署场景。本文将详细介绍基于Python生态构建WebUI的技术方案,包…...

MySQL表的增删查改

目录 一、MySQL表的增删查改二、Create单行数据全列插入多行数据 指定列插入插入否则更新替换数据 三、RetrieveSELECT 列WHERE 条件NULL的查询结果排序筛选分页结果 四、Update将孙悟空同学的数学成绩修改为80分将曹孟德同学的数学成绩修改为60分&#xff0c;语文成绩修改为7…...

Android第六次面试总结之Java设计模式(二)

一、适配器模式&#xff08;Adapter Pattern&#xff09; 1. ListView vs RecyclerView 的 Adapter 核心区别&#xff1f;为什么 RecyclerView 需要 ViewHolder&#xff1f; 解答&#xff1a; 核心区别&#xff1a; 特性ListView.Adapter&#xff08;如 ArrayAdapter&#xf…...

QuecPython+腾讯云:快速连接腾讯云l0T平台

该模块提供腾讯 IoT 平台物联网套件客户端功能,目前的产品节点类型仅支持“设备”&#xff0c;设备认证方式支持“一机一密”和“动态注册认证”。 BC25PA系列不支持该功能。 初始化腾讯 IoT 平台 TXyun TXyun(productID, devicename, devicePsk, ProductSecret)配置腾讯 IoT…...

说下RabbitMQ的整体架构

RabbitMQ 是一个基于 AMQP&#xff08;Advanced Message Queuing Protocol&#xff09; 协议的开源消息中间件&#xff0c;RabbitMQ的整体架构围绕消息的生产、路由、存储和消费设计&#xff0c;旨在实现高效、可靠的消息传递&#xff0c;它由多个核心组件协同工作。 核心组件 …...

Qt Creator 网络编程----Socket客户端服务端

1、在Qt项目中的.pro中添加 network模块&#xff0c;用于Socket网络编程使用 QT network 2、相关Tcp网络通信协议头文件 #include <QtNetwork/QTcpServer> #include <QtNetwork/QTcpSocket> #include <QtNetwork/QHostAddress> 3、Qt socket运行实…...

《深度学习实践教程》[吴微] ch-5 3/5层全连接神经网络

一、练习课本上3层全连接神经网络识别手写数字。 答案代码&#xff1a; import torch from torch import nn, optim from torch.autograd import Variable from torch.utils.data import DataLoader from torchvision import datasets, transforms# 定义一些超参数 batch_size…...

OrcaFex11.5

OrcaFlex 11.5是一款专业的海洋工程动态分析软件 由英国Orcina公司开发 主要用于模拟和分析海洋结构物在复杂海洋环境中的动态响应 该软件广泛应用于海上油气开发 海上风电 海洋可再生能源等领域 OrcaFlex 11.5具有强大的建模和仿真能力 支持多种海洋结构物的模拟 包括船舶 …...

MUX-vlan

MUX-VLAN 理论环节 1. 定义与核心作用 Principal VLAN&#xff08;主VLAN&#xff09; 是 MUX VLAN&#xff08;Multiplex VLAN&#xff09;架构的核心组件&#xff0c;充当公共资源的访问枢纽&#xff0c;实现以下核心功能&#xff1a; 资源共享&#xff1a;允许所有从VLAN…...

vue3中解决 return‘ inside ‘finally‘ block报错的问题

vue3中解决 return’ inside ‘finally’ block报错的问题 这个错误信息通常表明你在使用Vue 3框架时&#xff0c;在finally块中不正确地使用了return语句。在JavaScript中&#xff0c;finally块是保证执行的最后一个代码块&#xff0c;用于释放资源或执行清理操作&#xff0c;…...

TestStand API 简介

TestStand API 简介 在自动化测试领域&#xff0c;TestStand 凭借其灵活的架构和强大的功能&#xff0c;成为众多开发者的首选工具。而 TestStand API&#xff08;Application Programming Interface&#xff0c;应用程序编程接口&#xff09;则是打开 TestStand 强大功能的 “…...

vue2+element实现Table表格嵌套输入框、选择器、日期选择器、表单弹出窗组件的行内编辑功能

vue2element实现Table表格嵌套输入框、选择器、日期选择器、表单弹出窗组件的行内编辑功能 文章目录 vue2element实现Table表格嵌套输入框、选择器、日期选择器、表单弹出窗组件的行内编辑功能前言一、准备工作二、行内编辑1.嵌入Input文本输入框1.1遇到问题1.文本框内容修改失…...

【Docker系列】使用格式化输出与排序技巧

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…...

针对面试-redis篇

1. 缓存穿透 什么是缓存穿透&#xff1f; 缓存穿透就是有人查询一个不存在的数据&#xff0c;数据库查询不到数据也不会直接写入缓存&#xff0c;就会导致每次请求都查数据库。 解决方案一&#xff1a;缓存空数据 当数据库中不存在该数据时&#xff0c;直接把查到的空数据给…...

HTML8:媒体元素

视频和音频 视频元素 video 音频 audio <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>媒体元素学习</title> </head> <body> <!--音频和视频 src:资源路径 controls:控制条…...

把其他conda的env复制到自己电脑的conda上

把其他conda的env复制到自己电脑的conda上 一 拷贝 将要拷贝的env环境拷贝到自己电脑的放置env环境的文件夹中 二 添加配置 找到.conda文件夹下的environments.txt文件&#xff0c;添加配置 三 测试 查看环境是否拷贝成功 激活环境 自此就拷贝成功了&#xff01;&am…...

抖音热门视频评论数追踪爬虫获取

自动追踪抖音账号收藏夹视频的评论数变化 功能&#xff1a; 1、自动追踪特定抖音账号收藏夹视频热度变化&#xff0c;评论增速超过x&#xff0c;自动通知到钉钉或飞书 2、最新最先进的js逆向算法&#xff0c;无封号风险 3、支持私有化定制 4、可同时追踪500-5w个视频的热度…...

Hive优化秘籍:大数据处理加速之道

目录 一、认识 Hive 性能瓶颈 二、优化从基础开始&#xff1a;查询语句 2.1 列与分区裁剪 2.2 谓词下推 2.3 合理使用排序 三、解决数据倾斜难题 3.1 数据倾斜原因剖析 3.2 针对性优化策略 四、优化 join 操作 4.1 MapJoin 的应用 4.2 大表 join 优化技巧 五、调整 …...

机器学习例题——预测facebook签到位置(K近邻算法)和葡萄酒质量预测(线性回归)

一、预测facebook签到位置 代码展示&#xff1a; import pandas as pd from sklearn.preprocessing import StandardScaler from sklearn.model_selection import train_test_split from sklearn.neighbors import KNeighborsClassifier from sklearn.model_selection import…...

10B扩散文生图模型F-Lite技术报告速读

F Lite 技术报告解析 一、研究背景与目标 F Lite 是一个开源的 100 亿参数文本到图像的扩散变换器&#xff08;DiT&#xff09;模型。该研究的目标是探索在中等数据规模和计算资源条件下&#xff0c;大规模扩散模型的性能边界。F Lite 基于 Freepik 内部数据集训练&#xff0…...

源码分析之Leaflet中Marker

概述 Marker类用于创建一个标记点对象,可以用于在地图上添加标记点。Marker类继承自Layer类,提供了一些方法用于创建标记点对象。 源码分析 源码实现 Marker类实现如下&#xff1a; export var Marker Layer.extend({options: {icon: new IconDefault(), // 默认图标实例…...

从0开始学习大模型--Day2--大模型的工作流程以及初始Agent

大模型的工作流程 分词化&#xff08;Tokenization&#xff09;与词表映射 分词化&#xff08;Tokenization&#xff09;是自然语言处理&#xff08;NLP&#xff09;中的重要概念&#xff0c;它是将段落和句子分割成更小的分词&#xff08;token&#xff09;的过程。 将一个…...

P48-56 应用游戏标签

这一段课主要是把每种道具的游戏Tag进行了整理与应用 AuraAbilitySystemComponentBase.h // Fill out your copyright notice in the Description page of Project Settings. #pragma once #include "CoreMinimal.h" #include "AbilitySystemComponent.h"…...

4.29 tag的完整实现和登录页面的初步搭建

解释了v-for中每个属性的作用&#xff1a; 打印当前route的信息&#xff1a;&#xff08;里面会有path的信息&#xff09;当前的路由信息吧&#xff01; handleMenu() 菜单选择&#xff01;点击左侧菜单的栏目就会显示在Home.vue的tag上 这个方法的作用是让Home.vue上出现对应的…...

【Vue.js】 插槽通信——具名插槽通信

目录 前景基本语法命名规则默认内容使用建议 具体实例父组件 index.vue子组件 Category.vue 效果 前景 下面的父子组件代码仍然在Vue.js演练平台直接运行 基本语法 在子组件中定义插槽 <!-- Category.vue --> <slot name"插槽名称">默认内容</slo…...

从设备交付到并网调试:CET中电技术分布式光伏全流程管控方案详解

四月的最后一个工作日&#xff0c;当分布式光伏电站并网指示灯依次亮起的瞬间&#xff0c;CET中电技术与客户共同交出了一份满意的答卷。面对430政策窗口期的考验&#xff0c;我们凭借可靠的技术和高效的团队协作&#xff0c;在系统调试与并网对接的每个步骤都展现出过硬能力&a…...

(十)深入了解AVFoundation-采集:录制视频功能的实现

引言 在前文章中&#xff0c;我们深入探讨了如何通过 AVCaptureSession 配置 iOS 中的捕捉输入及输出。并通过使用 AVCaptureDeviceInput 和 AVCapturePhotoOutput&#xff0c;我们实现了基础的照片捕获功能&#xff0c;并配置了 PHPreviewView 来显示实时预览。 在本篇中&am…...

数据分析汇报七步法:用结构化思维驱动决策

在当今数据驱动的商业环境中&#xff0c;高效的数据汇报不仅是信息传递的工具&#xff0c;更是撬动决策的杠杆。基于您提供的五张核心图示&#xff0c;我们提炼出一套​「七步汇报框架」​&#xff0c;将复杂的数据分析转化为清晰的行动指南。这套方法论通过​「现状-诊断-预见…...

推荐两本集成电路制作书籍

本书共分19章&#xff0c;涵盖先进集成电路工艺的发展史&#xff0c;集成电路制造流程、介电薄膜、金属化、光刻、刻蚀、表面清洁与湿法刻蚀、掺杂、化学机械平坦化&#xff0c;器件参数与工艺相关性&#xff0c;DFM&#xff08;Design for Manufacturing&#xff09;&#xff…...

认识Grafana及其面板(Panel)

Grafana简介 Grafana 是一款开源的数据可视化与监控平台&#xff0c;以其强大的数据展示能力、灵活的插件生态和广泛的兼容性&#xff0c;成为企业监控、IT运维、DevOps、物联网(IoT)和业务分析等领域的核心工具。 数据源(Data Source) 对于Grafana而言&#xff0c;Promethe…...

FlinkCDC采集MySQL8.4报错

报错日志 原因&#xff1a; MySQL8.4版本中弃用show MASTER STATUS语法 改为&#xff1a;SHOW BINARY LOG STATUS 解决方案&#xff1a; 1、降MySQL版本 2、修改源码...

Webview通信系统学习指南

Webview通信系统学习指南 一、定义与核心概念 1. 什么是Webview&#xff1f; 定义&#xff1a;Webview是移动端&#xff08;Android/iOS&#xff09;内置的轻量级浏览器组件&#xff0c;用于在原生应用中嵌入网页内容。作用&#xff1a;实现H5页面与原生应用的深度交互&…...

人工智能如何革新数据可视化领域?探索未来趋势

在当今数字化时代&#xff0c;数据如同汹涌浪潮般不断涌现。据国际数据公司&#xff08;IDC&#xff09;预测&#xff0c;全球每年产生的数据量将从 2018 年的 33ZB 增长到 2025 年的 175ZB。面对如此海量的数据&#xff0c;如何有效理解和利用这些数据成为了关键问题。数据可视…...

探索Hello Robot开源移动操作机器人Stretch 3的新技术亮点与市场定位

Hello Robot 推出的 Stretch 3 机器人凭借其前沿技术和多功能性在众多产品中占据优势。Stretch 3 机器人采用开源设计&#xff0c;为开发者提供了灵活的定制空间&#xff0c;能够满足各种不同的需求。其配备的灵活手腕组件和 Intel Realsense D405 摄像头&#xff0c;显著增强了…...

机器人系统设置

机器人系统设置 机器人系统设置与操作指南 1. 系统设置基础功能 偏好设置 控制柜名称修改&#xff1a;通过文本框输入新名称并确认主题切换&#xff1a;支持橙色/蓝色主题&#xff08;需重启生效&#xff09; 语言与日期 系统语言/键盘语言设置时间格式&#xff1a;支持系统时…...

C/C++ 扩展智能提示太慢或无法解析项目

问题 C/C 扩展不解析项目&#xff0c;导致源码中的变量、函数都为灰色状态&#xff0c;无法进行跳转。 有时候 log 会报如下错误&#xff1a; Attempting to get defaults from C compiler in "compilerPath" property: D:/Development/Tools/mingw64/bin/gcc.exe…...

通过Kubernetes 外部 DNS控制器来自动管理Azure DNS 和 AKS

前言&#xff1a; 将应用程序及其服务部署到 Kubernetes 集群后&#xff0c;一个问题浮现&#xff1a;如何使用自定义域名访问它&#xff1f;一个简单的解决方案是创建一条 A 记录&#xff0c;将域名指向服务 IP 地址。这可以手动完成&#xff0c;但随着服务数量的增加&#x…...

Elasticsearch知识汇总之ElasticSearch监控方案

八 ElasticSearch监控方案 8.1 ElasticSearch监控指标 监控指标为磐基生产项指标&#xff0c;以下‘监控项名称’‘指标名称 ‘使用的公式‘都已详细说明&#xff0c;图表如下&#xff1a; 监控项名称 指标英文名称 使用的公式 elasticsearch集群健康状态 Elastic_Cluster…...

【能力比对】K8S数据平台VS数据平台

&#x1f525;&#x1f525; AllData大数据产品是可定义数据中台&#xff0c;以数据平台为底座&#xff0c;以数据中台为桥梁&#xff0c;以机器学习平台为中层框架&#xff0c;以大模型应用为上游产品&#xff0c;提供全链路数字化解决方案。 ✨AllData数据中台官方平台&…...

AutoDL+SSH在vscode中远程使用GPU训练深度学习模型

注册AutoDL账号 AutoDL官网&#xff1a;AutoDL 注册登录之后&#xff0c;如果你是学生&#xff0c;一定要进行学生认证&#xff0c;可以省钱。 认证之后&#xff0c;打开算力市场&#xff0c; 进行GPU选择 根据自己需要的环境选择版本 &#xff0c;选好之后创建并开机 这里注…...

【C语言干货】野指针

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、什么是野指针&#xff1f;二、野指针的三大成因 1.指针未初始化2.指针越界访问2.指针指向已释放的内存 前言 提示&#xff1a;以下是本篇文章正文内容&…...