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

【云原生】k8s集群命令行工具kubectl之故障排除和调试命令

kubectl之故障排除和调试命令

  • 一、describe
  • 二、logs
  • 三、attach
  • 四、exec
  • 五、port-forward
  • 六、proxy
  • 七、cp
  • 八、debug
    • 8.1、案例1:共享进程空间
    • 8.2、案例2:更改启动命令、容器镜像
    • 8.3、案例3:调试节点
    • 8.4、其他

一、describe

显示某个资源或某组资源的详细信息。
用法:

kubectl describe (-f FILENAME | TYPE [NAME_PREFIX | -l label] | TYPE/NAME)

示例:

# 显示单个node节点详细信息
kubectl describe nodes k8s-node1
# 显示单个pod详细信息
kubectl describe pods/nginx
# 显示文件描述的资源的详细信息
kubectl describe -f myapp-deployment.yaml
# 显示以k8s开头的节点的详细信息
kubectl describe node k8s
# 显示以myapp-deployment开头的pod的详细信息,pod命名通常与其控制器有关
kubectl describe pods myapp-deployment
# 显示指定label的pod详细信息
kubectl describe po -l name=myapp

二、logs

输出 pod 中某容器的日志。
用法:

kubectl logs [-f] [-p] (POD | TYPE/NAME) [-c CONTAINER]

示例:

  1. 首先:
# 运行一个nginx Pod
kubectl run nginx --image=nginx
  1. 其次:
# 获取pod第一个容器的日志
kubectl logs nginx
# 获取pod中所有容器的日志
kubectl logs <podname> --all-containers=true
# 获取labels包含 name=myapp的所有pod下的所有容器日志
kubectl logs -l name=myapp --all-containers=true
# 持续输出pod中某个容器产生的日志,容器名为 myhello
kubectl logs -f -c myhello <podname>
# 持续输出labels包含 name=myapp的所有pod下的所有容器日志,最大并发日志请求数为10
kubectl logs -f -l name=myapp --all-containers=true --max-log-requests=10
# 获取最近几行日志
kubectl logs --tail=5 nginx
# 获取最近一个小时的日志
kubectl logs --since=1h nginx
# 获取pod中第一个容器的日志
kubectl logs pod/<podname>
# 获取指定deployment中,第一个pod的指定容器的日志。默认日志请求并发数为5
kubectl logs deployment/myapp-deployment -c myhello
  1. 更多示例:
# 输出pod web-1中曾经运行过的,但目前已终止的容器ruby的日志
kubectl logs -p -c ruby web-1

三、attach

连接到一个正在运行的容器。
用法:

kubectl attach (POD | TYPE/NAME) -c CONTAINER

示例:

# 连接到指定pod中正在运行的第一个容器
kubectl attach <podname>
# 连接到指定pod中正在运行容器名为 myhello的容器
kubectl attach <podname> -c myhello
# 连接到指定deployments正在运行的第一个容器
kubectl attach deployments/myapp-deployment

四、exec

在容器中执行相关命令。
用法:

kubectl exec (POD | TYPE/NAME) [-c CONTAINER] [flags] -- COMMAND [args...]

示例:

# 在pod nginx 第一个容器中执行date命令
kubectl exec nginx -- date
# 通过-c 指定容器
kubectl exec <podname> -c myhello -- date
# 传入 ls命令和相关参数
kubectl exec <podname> -c myhello -- ls -al ./
# 通过 -it 开启一个虚拟终端
kubectl exec <podname> -c myhello -i -t -- /bin/sh
# deployment/myapp-deployment第一个容器中执行命令
kubectl exec deployments/myapp-deployment -- date
# svc/myapp-svc 第一个容器中执行命令
kubectl exec svc/myapp-svc -- date

五、port-forward

将一个或者多个本地端口转发到 pod。如果有多个pod符合条件,将自动选择一个pod。当所选pod终止时,转发会话结束,需要重新运行该命令才能恢复转发。

用法:

kubectl port-forward TYPE/NAME [options] [LOCAL_PORT:]REMOTE_PORT [... [LOCAL_PORT_N:]REMOTE_PORT_N]

示例:

# 转发本机5000 6000 端口到pod对应端口
kubectl port-forward pod/nginx 5000 6000
# 转发本机 5000 6000 分别到80和81端口
kubectl port-forward pod/nginx 5000:80 6000:81
# 从deployments/myapp-deployment 选择一个pod进行转发操作
kubectl port-forward deployments/myapp-deployment 5000 6000
# 从service中选择第一个pod,并将端口转发到端口名为http的端口上
kubectl port-forward service/myapp-svc 8080:http
# 通过--address指定监听地址
kubectl port-forward --address localhost,192.168.239.142 pod/nginx 8888:80
# 随机一个本地端口,转发到pod的指定端口
kubectl port-forward pod/nginx :80

六、proxy

在本地主机和Kubernetes API服务器之间创建代理服务器或应用程序级网关。它还允许通过指定的HTTP路径提供静态内容。所有传入数据都通过一个端口进入并转发到远程Kubernetes API服务器端口,但与静态内容路径匹配的路径除外。

用法:

kubectl proxy [--port=PORT] [--www=static-dir] [--www-prefix=prefix] [--apiprefix=prefix]

示例:

kubectl proxy --api-prefix=/custom/ --port=8011 --www=$HOME/ --wwwprefix=/static/
# 通过代理访问apiserver接口
curl http://127.0.0.1:8011/custom/api/v1/pods
# 通过代理访问静态内容
curl http://127.0.0.1:8011/static/

七、cp

将文件和目录拷入/拷出容器。
用法:

kubectl cp <file-spec-src> <file-spec-dest>

示例:

# 把pod第一个容器中当前工作目录下的app 复制到宿主机的/tmp/app
kubectl cp <podname>:app /tmp/app
# 把/tmp/app 文件复制到 pod第一个容器当前工作目录下,命名为app1
kubectl cp /tmp/app <podname>:app1
# 把default命名空间下pod中容器myhello中当前工作目录下的app 复制到宿主机的/tmp/app
kubectl cp default/<podname>:app /tmp/app -c myhello
# 查看容器当前工作目录内容
kubectl exec <podname> ls

八、debug

创建用于排查工作负载和节点故障的调试会话。

用法:

kubectl debug (POD | TYPE[[.VERSION].GROUP]/NAME) [ -- COMMAND [args...] ]

8.1、案例1:共享进程空间

# 运行一个nginx pod
kubectl run nginx --image=nginx
# 创建一个新的pod my-debugger 用来调试,
#将原有pod内的容器拷贝到新的pod,并增加一个镜像为ubuntu的容器
# 并且通过进程共享
kubectl debug nginx -it --image=ubuntu --copy-to=my-debugger --share-processes
# 开启另一个终端,可以查看命名空间共享配置
kubectl get pod my-debugger -o yaml | grep shareProcessNamespace

调试容器内,执行ps ax可以看到包括被调试容器在内的所有进程。
在这里插入图片描述

通过访问/proc/{PID}/root 可访问到其他容器的文件系统,PID为主进程ID。
在这里插入图片描述

8.2、案例2:更改启动命令、容器镜像

# 运行一个myhello的pod
kubectl run myhello --image=xlhmzch/hello:1.0.0
# 更改容器启动命令
kubectl debug myhello -it --copy-to=my-debugger1 --container=myhello -- /bin/sh
# 更改容器镜像
kubectl debug myhello -it --copy-to=my-debugger2 --set-image=myhello=xlhmzch/hello:1.0.1
kubectl debug <podname> -it --copy-to=my-debugger3 --set-image=myhello=xlhmzch/hello:1.0.1,myredis=redis:alpine
# 复制并注入临时容器,共享进程空间同时修改myhello容器的镜像
kubectl debug myhello -it --copy-to=my-debugger4 --image=busybox --setimage=myhello=xlhmzch/hello:1.0.1 --share-processes

8.3、案例3:调试节点

# 通过创建Pod来调试节点,Pod将运行在指定的节点上,节点的根文件系统挂载在/host目录下
kubectl debug node/k8s-node1 -it --image=busybox

8.4、其他

其他,需要为集群开启临时容器等特性功能,否则无法使用以下操作。

# 直接在指定的pod中创建一个基于busybox的临时容器
kubectl debug <podname> -it --image=busybox
# 直接在指定的pod中创建一个基于自定义镜像的容器,并且为容器指定容器名为debugger
kubectl debug <podname> --image=<cusimage> -c debugger

在这里插入图片描述

相关文章:

【云原生】k8s集群命令行工具kubectl之故障排除和调试命令

kubectl之故障排除和调试命令一、describe二、logs三、attach四、exec五、port-forward六、proxy七、cp八、debug8.1、案例1&#xff1a;共享进程空间8.2、案例2&#xff1a;更改启动命令、容器镜像8.3、案例3&#xff1a;调试节点8.4、其他一、describe 显示某个资源或某组资…...

AJAX,Axios,JSON简单了解

一. AJAX简介概念: AJAX(Asynchronous JavaScript And XML): 异步的JavaScript 和XMLAJAX作用:1.与服务器进行数据交换: 通过AJAX可以给服务器发送请求&#xff0c;并获取服务器响应的数据使用了AJAX和服务器进行通信&#xff0c;就可以使用 HTMLAJAX来替换JSP页面了2.异步交互…...

私域流量该如何打造?这套模式直接借鉴

梦龙商业案例分析&#xff0c;带你了解商业背后的秘密 古往今来&#xff0c;消费方与购买方的地位似乎就没有变过&#xff0c;消费者始终是处在被动接受的地位。 但到了现在&#xff0c;其实消费地位早已经不知不觉产生了改变。 就比如以前都是厂家有什么消费者买什么&#…...

【jenkins部署】一文弄懂自动打包部署(前后台)

这里写目录标题序言软件安装jdkmaven配置maven阿里镜像以及本地库位置git安装安装jenkins插件安装环境配置创建项目配置gitee生成gitee WebHookmaven打包验证是否打包成功连接远程服务器并重启服务远程服务器生成私钥配置ssh项目配置ssh脚本vue项目打包nodejs安装下载配置环境变…...

应届生投腾讯,被面试官问了8个和 ThreadLocal 相关的问题。

问&#xff1a;谈一谈ThreadLocal的结构。 ThreadLocal内部维护了一个ThreadLocalMap静态内部类&#xff0c;ThreadLocalMap中又维护了一个Entry静态内部类&#xff0c;和Entry数组。 Entry类继承弱引用类WeakReference&#xff0c;Entry类有一个有参构造函数&#xff0c;参数…...

Linux命令scp用法

本文主要讲的是scp用法如果哪里不对欢迎指出&#xff0c;主页https://blog.csdn.net/qq_57785602?typeblogscp 可以在win系统使用&#xff0c;本文百分之八十写的是win系统怎么使用&#xff0c;在本地上到服务器文件,从服务器下载文件到本地用工具连接到公司服务器时&#xff…...

数据质量怎么监控

目录 一、任务基线级别 二、任务级别 & 表级别 三、字段级别 1. 对指标字段的监控 2. 对维度字段的监控 四、报表级别监控 五、总结 跑了几场面试&#xff0c;数据质量怎么监控是经常被问到的问题&#xff0c;仅次于自我介绍。 因为数据行业发展了几年&#xff0c;数…...

.NET Core 实现Excel的导入导出

.NET Core 使用NPOI实现Excel的导入导出前言NPOI简介一、安装相对应的程序包1.1、在 “管理NuGet程序包” 中的浏览搜索&#xff1a;“NPOI”二、新建Excel帮助类三、调用3.1、增加一个“keywords”模型类&#xff0c;用作导出3.2、添加一个控制器3.3、编写导入导出的控制器代码…...

排好队,一个一个来:宫本武藏教你学队列(附各种队列源码)

文章目录前言&#xff1a;理解“队列”的正确姿势一个关于队列的小思考——请求处理队列的两大“护法”————顺序队列和链式队列数组实现的队列链表实现的队列循环队列关于开篇&#xff0c;你明白了吗&#xff1f;最后说一句前言&#xff1a; 哈喽&#xff01;欢迎来到黑洞晓…...

C语言--动态内存管理1

目录前言动态内存函数介绍mallocfreecallocrealloc常见的动态内存错误对NULL指针的解引用操作对动态开辟空间的越界访问对非动态开辟内存使用free释放使用free释放一块动态开辟内存的一部分对同一块动态内存多次释放动态开辟内存忘记释放&#xff08;内存泄漏&#xff09;对通讯…...

HTTPS 的工作原理

1、客户端发起 HTTPS 请求 这个没什么好说的&#xff0c;就是用户在浏览器里输入一个 https 网址&#xff0c;然后连接到 server 的 443 端口。 2、服务端的配置 采用 HTTPS 协议的服务器必须要有一套数字证书&#xff0c;可以自己制作&#xff0c;也可以向组织申请&#xf…...

游戏开发中建议使用半兰伯特光照

游戏开发中建议使用半兰伯特光照模型 在基本光照模型中求出漫反射部分的计算公式: 漫反射 = 入射光线的颜色和强度(c light) * 材质漫反射系数 (m diffuse)* 表面法线(n) * 其光源防线 (I) 在shader中为了不让 n和i的点乘结果为负数,即使用了saturate函数让值截取在[0,1]区…...

JavaScript到底如何存储数据?

1.var的迷幻操作 普遍的观点&#xff1a;JavaScript中的基本数据类型是保存在栈空间&#xff0c;而引用数据类型则是保存在堆空间里, 是否正确&#xff1f; 浏览器环境下JavaScript变量类型的运行实践结果: var a 10;console.log(a);console.log(window.a); console.log(wind…...

python实战应用讲解-【numpy专题篇】numpy应用案例(一)(附python示例代码)

目录 用Python分析二手车的销售价格 用Python构建GUI应用的铅笔草图 需要的包 实现步骤 完整代码 用Python分析二手车的销售价格 如今&#xff0c;随着技术的进步&#xff0c;像机器学习等技术正在许多组织中得到大规模的应用。这些模型通常与一组预定义的数据点一起工作…...

网络割接项目

某企业准备采购2台华为设备取代思科旧款设备,针对下列问题作出解答。 (1)做设备替换的时候,如何尽可能保证业务稳定性,请给出解决方案。 a)对现网拓扑进行分析,分析现网拓扑的规划(链路类型、cost、互联IP、互联接口等信息)、分析现网流量模型(路由协议、数据流向特…...

SpringBoot整合数据可视化大屏使用

1 前言 DataV数据可视化是使用可视化应用的方式来分析并展示庞杂数据的产品。DataV旨让更多的人看到数据可视化的魅力,帮助非专业的工程师通过图形化的界面轻松搭建专业水准的可视化应用,满足您会议展览、业务监控、风险预警、地理信息分析等多种业务的展示需求, 访问地址:h…...

蓝桥杯Web前端练习题-----水果拼盘

一、水果拼盘 介绍 目前 CSS3 中新增的 Flex 弹性布局已经成为前端页面布局的首选方案&#xff0c;本题可以使用 Flex 属性快速完成布局。 准备 开始答题前&#xff0c;需要先打开本题的项目代码文件夹&#xff0c;目录结构如下&#xff1a; ├── css │ └── style.…...

[攻城狮计划]如何优雅的在RA2E1上运行RT_Thread

文章目录[攻城狮计划]|如何优雅的在RA2E1上运行RT_Thread准备阶段&#x1f697;开发板&#x1f697;开发环境&#x1f697;下载BSP&#x1f697;编译烧录连接串口总结[攻城狮计划]|如何优雅的在RA2E1上运行RT_Thread &#x1f680;&#x1f680;开启攻城狮的成长之旅&#xff0…...

1.linux操作命令

1. pwd -> 打印当前绝对工作路径。 2. ls -> 查看目录的文件名 ls -> 默认列出当前目录的全部文件名 ls . -> 列出当前目录的全部文件名(.代表当前目录) ls / -> 列出根目录下的全部文件命名 ls -a -> 列出当前目录下全部文件名(包括隐藏…...

STL--vector

vector 头文件 #include<vector>向量的定义&#xff1a; vector<int> vec&#xff1b;//定义一个vec型的向量a vector<int> vec(5); //定义一个初始大小为5的向量 vector<int> vec(5,1); //初始大小为5&#xff0c;值都为1的向量二维数组&#xff1…...

Java每日一练(20230324)

目录 1. 链表插入排序 &#x1f31f;&#x1f31f; 2. 最接近的三数之和 &#x1f31f;&#x1f31f; 3. 寻找旋转排序数组中的最小值 &#x1f31f;&#x1f31f; &#x1f31f; 每日一练刷题专栏 &#x1f31f; Golang每日一练 专栏 Python每日一练 专栏 C/C每日一…...

你掌握了吗?在PCB设计中,又快又准地放置元件

在印刷电路板设计中&#xff0c;设置电路板轮廓后&#xff0c;将零件(占地面积)调用到工作区。然后将零件重新放置到正确的位置&#xff0c;并在完成后进行接线。 组件放置是这项工作的第一步&#xff0c;对于之后的平滑布线工作是非常重要的工作。如果在接线工作期间模块不足…...

springboot学生综合测评系统

031-springboot学生综合测评系统演示录像2022开发语言&#xff1a;Java 框架&#xff1a;springboot JDK版本&#xff1a;JDK1.8 服务器&#xff1a;tomcat7 数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09; 数据库工具&#xff1a;Navicat11 开发软件&…...

【Unity3D】法线贴图和凹凸映射

1 法线贴图原理 表面着色器中介绍了使用表面着色器进行法线贴图&#xff0c;实现简单快捷。本文将介绍使用顶点和片元着色器实现法线贴图和凹凸映射&#xff0c;实现更灵活。 本文完整代码资源见→法线贴图和凹凸映射。 1&#xff09;光照原理 Phong 光照模型和 Blinn Phong 光…...

代码误写到master分支(或其他分支),此时代码还未提交,如何转移到新建分支?

问题背景 有时候&#xff0c;我们拿到需求&#xff0c;没仔细看当前分支是什么&#xff0c;就开始撸代码了。完成了需求或者写到一半发现开发错分支了。 比如此时新需求代码都在master分支上&#xff0c;提交必然是不可能的&#xff0c;所有修改还是要在新建分支上进行&#x…...

java多线程之线程安全(重点,难点)

线程安全1. 线程不安全的原因:1.1 抢占式执行1.2 多个线程修改同一个变量1.3 修改操作不是原子的锁(synchronized)1.一个锁对应一个锁对象.2.多个锁对应一个锁对象.2.多个锁对应多个锁对象.4. 找出代码错误5. 锁的另一种用法1.4 内存可见性解决内存可见性引发的线程安全问题(vo…...

如何免费使用chatGPT4?无需注册!

Poe体验真滴爽首先提大家问一个大家最关心的问题如何在一年内赚到一百万&#xff1f;用个插件给他翻译一下体验地址效果是非常炸裂的&#xff0c;那么我就将网址分分享给大家https://poe.com/前提&#xff1a;要有魔法&#xff0c;能够科学shangwangChatGPT-3 随便问GPT-4 模型…...

Android Flutter在点击事件上添加动画效果

在Android App的开发项目中&#xff0c;我们需要在点击事件上实现一个动画效果来提高用户的体验度。比如闲鱼底部中间按钮的那种。该怎么实现呢&#xff1f; 一起来看看吧 实现效果如图&#xff1a; ​实现思路 根据UI的设计图&#xff0c;对每个模块设计好动画效果&#xff0…...

VSCode嵌入式开发环境搭建

Vscode开发环境搭建 看这个链接就可以了&#xff0c;后面下载调试有点问题看下3.3。 在VSCode上部署STM32F1的开发环境 1. MXCube配置工程生成Makefile文件 借助正确的编译工具链进行编译&#xff0c; 2. 编译工具链搭建 编译工具链使用GCC的ARM版本 arm-none-eabi-gcc &am…...

数据结构之栈的使用

栈是计算机科学中一个重要的数据结构。它是一种特殊的线性表&#xff0c;只允许在一端进行进出操作。这一端被称为栈顶&#xff0c;另外一端被称为栈底。栈的特点是后进先出&#xff0c;即最后进入栈的元素会先被弹出栈。栈的应用广泛&#xff0c;例如在编译器中&#xff0c;栈…...

微信公众号平台网站开发/网络推广策划方案模板

来源&#xff1a;toutiao.com/i69432395414489175121. Java自带工具方法1.1 List集合拼接成以逗号分隔的字符串1.2 比较两个字符串是否相等&#xff0c;忽略大小写1.3 比较两个对象是否相等1.4 两个List集合取交集2. apache commons工具类库2.1 commons-lang&#xff0c;java.l…...

网站建站系统有哪些/免费网络推广网址

Python实战社群Java实战社群长按识别下方二维码&#xff0c;按需求添加扫码关注添加客服进Python社群▲扫码关注添加客服进Java社群▲来源丨Tech星球(微信ID&#xff1a;tech618)张小龙对下一个10年的深度思考。Tech星球(微信ID&#xff1a;tech618)演讲者 | 张小龙编者按&…...

网站百度不到验证码怎么办/刷外链工具

Java NIO &#xff1a; 同步非阻塞&#xff0c;服务器实现模式为一个请求一个线程&#xff0c;即客户端发送的连接请求都会注册到多路复用器上&#xff0c;多路复用器轮询到连接有I/O请求时才启动一个线程进行处理。Java AIO(NIO.2) &#xff1a; 异步非阻塞&#xff0c;服务器…...

网站建设需要什么教材/千锋教育官方网

预加载图片是提高用户体验的一个很好方法。图片预先加载到浏览器中&#xff0c;访问者便可顺利地在你的网站上冲浪&#xff0c;并享受到极快的加载速度。这对图片画廊及图片占据很大比例的网站来说十分有利&#xff0c;它保证了图片快速、无缝地发布&#xff0c;也可帮助用户在…...

个体户做网站有用吗/新浪nba最新消息

2021年4月19日&#xff0c;今天的心情有些复杂&#xff0c;因为旁边工位上的一个同事离职了&#xff0c;平时中午一般会一起出去吃饭&#xff0c;有什么工作上的问题一般都会向他请教&#xff0c;他的学习能力很强&#xff0c;会的东西也很多&#xff0c;但是他还是离开我们公司…...

做色情网站会怎么样/高级搜索百度

来源: http://tool.chinaz.com/Tools/HtmlChar.aspx 特殊符号命名实体十进制编码特殊符号命名实体十进制编码Α&Alpha;Β&Beta;Γ&Gamma;Δ&Delta;Ε&Epsilon;Ζ&Zeta;Η&Eta;Θ&Theta;Ι&Iota;Κ&Kappa;Λ&Lambda;Μ&Mu;Ν&a…...