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_64

export PLUGIN_VERSION=0.1.1

mv  debug_${PLUGIN_VERSION}_linux_amd64.tar.gz kubectl-debug.tar.gz

tar -zxvf kubectl-debug.tar.gz kubectl-debug

mv kubectl-debug /usr/local/bin/

机制: 关于为什么安装kubectl-debug,但是却可以使用'kubectl debug'命令参考'plugin的'机制

②  临时容器

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=Never

kubectl -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 逃逸方法汇总

容器逃逸: 避免'忘记'密码,'重启'服务器  --> 弄一个备用'紧急的逃生'通路

引申: 镜像是否做过'安全'扫描

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

什么是主动学习(Active Learning)?定义,原理,以及主要方法

数据是训练任何机器学习模型的关键。但是,对于研究人工智能的企业和团队而言,数据仍是实现成功的最大障碍之一。首先,您需要大量数据来创建高性能模型。更重要的是,您需要标注准确的数据。虽然许多团队一开始都是手动标注数据集&a…

使用 Taro 开发鸿蒙原生应用 —— 当 Taro 遇到纯血鸿蒙 | 京东云技术团队

纯血鸿蒙即将到来 在今年 8 月的「2023年华为开发者大会(HDC.Together)」上,华为正式官宣「鸿蒙Next」,这个更新的版本将移除所有的 AOSP 代码,彻底与 Android 切割,使其成为一个完全自主研发的操作系统&a…

JAVA实体类集合该如何去重?

JAVA实体类集合该如何去重? 最近在工作中经常遇到需要去重的需求,所以特意系统的来梳理一下 有目录,不迷路 JAVA实体类集合该如何去重?单元素去重方法一:利用Set去重方法二:利用java 8的stream写法&#xf…

预测性维护对制造企业设备管理的作用

制造企业设备管理和维护对于生产效率和成本控制至关重要。然而,传统的维护方法往往无法准确预测设备故障,导致生产中断和高额维修费用。为了应对这一挑战,越来越多的制造企业开始采用预测性维护技术。 预测性维护是通过传感器数据、机器学习和…

【教3妹学编程-算法题】消除相邻近似相等字符

插: 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。 坚持不懈,越努力越幸运,大家一起学习鸭~~~ 3妹:好冷啊, 冻得瑟瑟发抖啦 2…

Python Paramiko库:SSH远程连接与文件传输实战指南

更多资料获取 📚 个人网站:ipengtao.com 在网络管理和系统运维中,SSH(Secure Shell)是一种广泛用于远程登录和文件传输的协议。Python中的Paramiko库为开发者提供了灵活、强大的SSH客户端和服务器功能。本文将深入探讨…

微服务实战系列之MQ

前言 从今天起,席卷北国的雪,持续了一整天,北京也不例外。这场意外的寒潮,把整个冬天渲染的格外cool。当然你可以在外面打雪仗、堆雪人、拉雪橇,也可以静坐屋内,来一场围炉煮茶的party。此刻,冬…

社会不教,精英不讲,坎儿还得自己过(揭秘人才成长规律)

推荐大家去看看天涯社区的精华帖子:《社会不教,精英不讲,坎儿还得自己过(揭秘人才成长规律)》 原出处天涯精华帖:《社会不教,精英不讲,坎儿还得自己过(揭秘人才成长规律&…

(企业 / 公司项目)微服务项目解决跨域问题:

前后端分离项目中前端出现了跨域的问题 在网关模块配置文件中添加 配置 application.properties # 允许请求来源(老版本叫allowedOrigin) spring.cloud.gateway.globalcors.cors-configurations.[/**].allowedOriginPatterns* # 允许携带的头信息 spri…

2023.12.12 关于 Java 反射详解

目录 基本概念 定义 用途 反射相关的类 反射基本原理 Class 类中的相关方法 常用获得类相关的方法 常用获得类中属性相关的方法 常用获得类中构造器相关的方法 常用获得类中方法相关的方法 实例理解 反射优缺点 基本概念 定义 Java 的反射(reflection&a…

java中的包

1.包的本质分析(原理) 包的本质 实际上就是创建不同的文件夹来保存类文件 2.一个文件中有两个类的i情况 package com.use;import com.xiaoqiang.Dog;public class Test {public static void main(String[] args) {Dog dog new Dog();System.out.println(dog); //com.xiaoqian…

达索系统SOLIDWORKS 2024 Visualize新功能

SOLIDWORKS Visualize(原名为 Bunkspeed)是一整套独立的软件工具,Visualize模块主要是用于对SOLIDWORKS设计出的产品图进行渲染、做动画,方便用户更好的展示、宣传产品;以最快速、最轻松的方式创建专业的照片级图像、动…

汽车差速器市场分析:预计2029年将达到218亿元

差速器是为了调整左右轮的转速差而装置的。在四轮驱动时,为了驱动四个车轮,必须将所有的车轮连接起来,如果将四个车轮机械连接在一起,汽车在曲线行驶的时候就不能以相同的速度旋转,为了能让汽车曲线行驶旋转速度基本一…

智能优化算法应用:基于生物地理学算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于生物地理学算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于生物地理学算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.生物地理学算法4.实验参数设定5.算法…

2023年12月14日 十二生肖 今日运势

小运播报:2023年12月14日,星期四,农历十一月初二 (癸卯年甲子月丙午日),法定工作日。 红榜生肖:羊、狗、虎 需要注意:牛、马、鼠 喜神方位:西南方 财神方位&#xff…

静态SOCKS5的未来发展趋势和新兴应用场景

随着网络技术的不断发展和进步,静态SOCKS5代理也在不断地完善和发展。未来,静态SOCKS5代理将会呈现以下发展趋势和新兴应用场景。 一、发展趋势 安全性更高:随着网络安全问题的日益突出,用户对代理服务器的安全性要求也越来越高…

2-分布式存储之glusterfs

任务背景 实现了远程的存储共享(NAS或SAN)后, 公司业务发展迅速, 存储空间还需要增大。使用NAS或SAN都不方便扩容,NAS可以增加新的挂载目录, SAN可以增加新的硬盘,但我们希望直接在原来挂载的业务目录上实现在线扩容,数据体量越来越大, 这个…

TypeScript中的基本类型

提示:TypeScript中的基本类型 文章目录 前言基本类型1.类型声明2.自动类型判断3.类型断言 前言 TypeScript (计算机编程语言)简称:TS,是 JavaScript 的超集。简单来说就是:JS 有的 TS 都有。JS写的代码在TS…

UDP分片与丢包,UDP真的比TCP高效吗?

一、UDP 报文格式 每个 UDP 报文分为 UDP 报头和 UDP 数据区两部分。报头由 4 个 16 位长(2 字节)字段组成,分别说明该报文的源端口、目的端口、报文长度和校验值。 UDP 报文格式如图所示。 UDP 报文中每个字段的含义如下: 源端…