Kubernetes 100个常用命令
本文简单总结关于使用 Kubectl 进行 Kubernetes 诊断的指南。列出了 100 个 Kubectl 命令,这些命令对于诊断 Kubernetes 集群中的问题非常有用。这些问题包括但不限于:
-
集群信息
-
Pod 诊断
-
服务诊断
-
部署诊断
-
网络诊断
-
持久卷和持久卷声明诊断
-
资源使用情况
-
安全和授权
-
节点故障排除
-
其他诊断命令:文章还提到了许多其他命令,如资源扩展和自动扩展、作业和定时作业诊断、Pod 亲和性和反亲和性规则、RBAC 和安全、服务账号诊断、节点排空和取消排空、资源清理等。
Kubernetes 100个常用命令
1. 集群信息
显示 Kubernetes 版本:
kubectl version显示集群信息:
kubectl cluster-info列出集群中的所有节点:
kubectl get nodes查看一个具体的节点详情:
kubectl describe node <node-name>列出所有命名空间:
kubectl get namespaces列出所有命名空间中的所有 pod:
kubectl get pods --all-namespaces
2. Pod 诊断
列出特定命名空间中的 pod:
kubectl get pods -n <namespace>查看一个 Pod 详情:
kubectl describe pod <pod-name> -n <namespace>查看 Pod 日志:
kubectl logs <pod-name> -n <namespace>尾部 Pod 日志:
kubectl logs -f <pod-name> -n <namespace>在 pod 中执行命令:
kubectl exec -it <pod-name> -n <namespace> -- <command>
3. Pod 健康检查
检查 Pod 准备情况:
kubectl get pods <pod-name> -n <namespace> -o jsonpath='{.status.conditions[?(@.type=="Ready")].status}'检查 Pod 事件:
kubectl get events -n <namespace> --field-selector involvedObject.name=<pod-name>
4. Service诊断
列出命名空间中的所有服务:
kubectl get svc -n <namespace>查看一个服务详情:
kubectl describe svc <service-name> -n <namespace>
5. Deployment诊断
列出命名空间中的所有Deployment:
kubectl get deployments -n <namespace>查看一个Deployment详情:
kubectl describe deployment <deployment-name> -n <namespace>查看滚动发布状态:
kubectl rollout status deployment/<deployment-name> -n <namespace>查看滚动发布历史记录:
kubectl rollout history deployment/<deployment-name> -n <namespace>
6. StatefulSet诊断
列出命名空间中的所有 StatefulSet:
kubectl get statefulsets -n <namespace>查看一个 StatefulSet详情:
kubectl describe statefulset <statefulset-name> -n <namespace>
7. ConfigMap 和Secret诊断
列出命名空间中的 ConfigMap:
kubectl get configmaps -n <namespace>查看一个ConfigMap详情:
kubectl describe configmap <configmap-name> -n <namespace>列出命名空间中的 Secret:
kubectl get secrets -n <namespace>查看一个Secret详情:
kubectl describe secret <secret-name> -n <namespace>
8. 命名空间诊断
- 查看一个命名空间详情:
kubectl describe namespace <namespace-name>
9. 资源使用情况
检查 pod 的资源使用情况:
kubectl top pod <pod-name> -n <namespace>检查节点资源使用情况:
kubectl top nodes
10. 网络诊断
显示命名空间中 Pod 的 IP 地址:
kubectl get pods -n <namespace> -o custom-columns=POD:metadata.name,IP:status.podIP --no-headers列出命名空间中的所有网络策略:
kubectl get networkpolicies -n <namespace>查看一个网络策略详情:
kubectl describe networkpolicy <network-policy-name> -n <namespace>
11. 持久卷 (PV) 和持久卷声明 (PVC) 诊断
列出PV:
kubectl get pv查看一个PV详情:
kubectl describe pv <pv-name>列出命名空间中的 PVC:
kubectl get pvc -n <namespace>查看PVC详情:
kubectl describe pvc <pvc-name> -n <namespace>
12. 节点诊断
- 获取特定节点上运行的 Pod 列表:
kubectl get pods --field-selector spec.nodeName=<node-name> -n <namespace>
13. 资源配额和限制
列出命名空间中的资源配额:
kubectl get resourcequotas -n <namespace>查看一个资源配额详情:
kubectl describe resourcequota <resource-quota-name> -n <namespace>
14. 自定义资源定义 (CRD) 诊断
列出命名空间中的自定义资源:
kubectl get <custom-resource-name> -n <namespace>查看自定义资源详情:
kubectl describe <custom-resource-name> <custom-resource-instance-name> -n <namespace>
使用这些命令时,请记住将<namespace>, <pod-name>, <service-name>, <deployment-name>, <statefulset-name>, <configmap-name>, <secret-name>, <namespace-name>, <pv-name>, <pvc-name>, <node-name>, <network-policy-name>, <resource-quota-name>, <custom-resource-name>, 和替换为你的特定值。
<custom-resource-instance-name>这些命令应该可以帮助你诊断 Kubernetes 集群以及在其中运行的应用程序。
15. 资源伸缩和自动伸缩
Deployment伸缩:
kubectl scale deployment <deployment-name> --replicas=<replica-count> -n <namespace>设置Deployment的自动伸缩:
kubectl autoscale deployment <deployment-name> --min=<min-pods> --max=<max-pods> --cpu-percent=<cpu-percent> -n <namespace>检查水平伸缩器状态:
kubectl get hpa -n <namespace>
16. 作业和 CronJob 诊断
列出命名空间中的所有作业:
kubectl get jobs -n <namespace>查看一份工作详情:
kubectl describe job <job-name> -n <namespace>列出命名空间中的所有 cron 作业:
kubectl get cronjobs -n <namespace>查看一个 cron 作业详情:
kubectl describe cronjob <cronjob-name> -n <namespace>
17. 容量诊断
列出按容量排序的持久卷 (PV):
kubectl get pv --sort-by=.spec.capacity.storage查看PV回收策略:
kubectl get pv <pv-name> -o=jsonpath='{.spec.persistentVolumeReclaimPolicy}'列出所有存储类别:
kubectl get storageclasses
18. Ingress和服务网格诊断
列出命名空间中的所有Ingress:
kubectl get ingress -n <namespace>查看一个Ingress详情:
kubectl describe ingress <ingress-name> -n <namespace>列出命名空间中的所有 VirtualServices (Istio):
kubectl get virtualservices -n <namespace>查看一个 VirtualService (Istio)详情:
kubectl describe virtualservice <virtualservice-name> -n <namespace>
19. Pod 网络故障排除
运行网络诊断 Pod(例如 busybox)进行调试:
kubectl run -it --rm --restart=Never --image=busybox net-debug-pod -- /bin/sh测试从 Pod 到特定端点的连接:
kubectl exec -it <pod-name> -n <namespace> -- curl <endpoint-url>跟踪从一个 Pod 到另一个 Pod 的网络路径:
kubectl exec -it <source-pod-name> -n <namespace> -- traceroute <destination-pod-ip>检查 Pod 的 DNS 解析:
kubectl exec -it <pod-name> -n <namespace> -- nslookup <domain-name>
20. 配置和资源验证
验证 Kubernetes YAML 文件而不应用它:
kubectl apply --dry-run=client -f <yaml-file>验证 pod 的安全上下文和功能:
kubectl auth can-i list pods --as=system:serviceaccount:<namespace>:<serviceaccount-name>
21. RBAC 和安全性
列出命名空间中的角色和角色绑定:
kubectl get roles,rolebindings -n <namespace>查看角色或角色绑定详情:
kubectl describe role <role-name> -n <namespace>
22. 服务帐户诊断
列出命名空间中的服务帐户:
kubectl get serviceaccounts -n <namespace>查看一个服务帐户详情:
kubectl describe serviceaccount <serviceaccount-name> -n <namespace>
23. 清空节点和解除封锁
清空节点以进行维护:
kubectl drain <node-name> --ignore-daemonsets解除对节点的封锁:
kubectl uncordon <node-name>
24. 资源清理
- 强制删除 pod(不推荐):
kubectl delete pod <pod-name> -n <namespace> --grace-period=0 --force
25. Pod 亲和性和反亲和性
列出 pod 的 pod 亲和性规则:
kubectl get pod <pod-name> -n <namespace> -o=jsonpath='{.spec.affinity}'列出 pod 的 pod 反亲和性规则:
kubectl get pod <pod-name> -n <namespace> -o=jsonpath='{.spec.affinity.podAntiAffinity}'
26. Pod 安全策略 (PSP)
- 列出所有 Pod 安全策略(如果启用):
kubectl get psp
27. 事件
查看最近的集群事件:
kubectl get events --sort-by=.metadata.creationTimestamp按特定命名空间过滤事件:
kubectl get events -n <namespace>
28. 节点故障排除
检查节点情况:
kubectl describe node <node-name> | grep Conditions -A5列出节点容量和可分配资源:
kubectl describe node <node-name> | grep -E "Capacity|Allocatable"
29. 临时容器(Kubernetes 1.18+)
- 运行临时调试容器:
kubectl debug -it <pod-name> -n <namespace> --image=<debug-image> -- /bin/sh
30. 资源指标(需要指标服务器)
- 获取 Pod 的 CPU 和内存使用情况:
kubectl top pod -n <namespace>
31. kuelet诊断
- 查看节点上的kubelet日志:
kubectl logs -n kube-system kubelet-<node-name>
32. 使用Telepresence 进行高级调试
- 使用 Telepresence 调试 pod:
telepresence --namespace <namespace> --swap-deployment <pod-name>
33. Kubeconfig 和上下文
列出可用的上下文:
kubectl config get-contexts切换到不同的上下文:
kubectl config use-context <context-name>
34. Pod 安全标准(PodSecurity 准入控制器)
- 列出 PodSecurityPolicy (PSP) 违规行为:
kubectl get psp -A | grep -vE 'NAME|REVIEWED'
35. Pod 中断预算 (PDB) 诊断
列出命名空间中的所有 PDB:
kubectl get pdb -n <namespace>查看一个PDB详情:
kubectl describe pdb <pdb-name> -n <namespace>
36. 资源锁诊断(如果使用资源锁)
- 列出命名空间中的资源锁:
kubectl get resourcelocks -n <namespace>
37. 服务端点和 DNS
列出服务的服务端点:
kubectl get endpoints <service-name> -n <namespace>检查 Pod 中的 DNS 配置:
kubectl exec -it <pod-name> -n <namespace> -- cat /etc/resolv.conf
38. 自定义指标(Prometheus、Grafana)
- 查询Prometheus指标:用于
kubectl port-forward访问Prometheus和Grafana服务来查询自定义指标。
39. Pod 优先级和抢占
- 列出优先级:
kubectl get priorityclasses
40. Pod 开销(Kubernetes 1.18+)
- 列出 pod 中的开销:
kubectl get pod <pod-name> -n <namespace> -o=jsonpath='{.spec.overhead}'
41. 存储卷快照诊断(如果使用存储卷快照)
列出存储卷快照:
kubectl get volumesnapshot -n <namespace>查看存储卷快照详情:
kubectl describe volumesnapshot <snapshot-name> -n <namespace>
42. 资源反序列化诊断
- 反序列化并打印 Kubernetes 资源:
kubectl get <resource-type> <resource-name> -n <namespace> -o=json
43. 节点污点
- 列出节点污点:
kubectl describe node <node-name> | grep Taints
44. 更改和验证 Webhook 配置
列出变异 webhook 配置:
kubectl get mutatingwebhookconfigurations列出验证 Webhook 配置:
kubectl get validatingwebhookconfigurations
45. Pod 网络策略:
- 列出命名空间中的 pod 网络策略:
kubectl get networkpolicies -n <namespace>
46. 节点条件(Kubernetes 1.17+)
- 自定义查询输出:
kubectl get nodes -o custom-columns=NODE:.metadata.name,READY:.status.conditions[?(@.type=="Ready")].status -l 'node-role.kubernetes.io/worker='
47. 审核日志
- 检索审核日志(如果启用):检查 Kubernetes 审核日志配置以了解审核日志的位置。
48. 节点操作系统详细信息
- 获取节点的操作系统信息:
kubectl get node <node-name> -o jsonpath='{.status.nodeInfo.osImage}'
这些命令应该涵盖 Kubernetes 中的各种诊断场景。确保将<namespace>、<pod-name>、<deployment-name>等占位符替换为你的集群和用例的实际值。
————————————
DONE
相关文章:
Kubernetes 100个常用命令
本文简单总结关于使用 Kubectl 进行 Kubernetes 诊断的指南。列出了 100 个 Kubectl 命令,这些命令对于诊断 Kubernetes 集群中的问题非常有用。这些问题包括但不限于: 集群信息 Pod 诊断 服务诊断 部署诊断 网络诊断 持久卷和持久卷声明诊断 资源…...
labuladong日常刷题-差分数组 | LeetCode 1109航班预定统计 | 花式遍历 151反转字符串里的单词
差分数组–前缀和数组的升级 LeetCode 1109 航班预定统计 2024.1.1 题目链接labuladong讲解[链接] class Solution { public:vector<int> corpFlightBookings(vector<vector<int>>& bookings, int n) {//构建航班人数数组,数组大小为n,初…...
HbuilderX中的git的使用
原文链接https://blog.csdn.net/Aom_yt/article/details/119924356...
LeetCode每日一题 | 1944. 队列中可以看到的人数
文章目录 队列中可以看到的人数题目描述问题分析程序代码(Golang 版本) 队列中可以看到的人数 题目描述 原题链接 有 n 个人排成一个队列,从左到右 编号为 0 到 n - 1 。给你以一个整数数组 heights ,每个整数 互不相同ÿ…...
React16源码: JSX2JS及React.createElement源码实现
JSX 到 Javascript 的转换 React中的 JSX 类似于 Vue中的template模板文件,Vue是基于编译时将template模板转换成render函数在React中,JSX是类似于html和javascript混编的语法,而javascript是真的javascript, html并非真的html它的可阅读性可…...
整理composer安装版本的python脚本
整理composer安装版本的python脚本 脚本实现的功能是去除composer安装命令后的版本号 def remove_version_numbers(commands):"""Remove version numbers from composer require commands.Args:commands (list of str): List of composer require commands.Retu…...
十、基本对话框大集合(Qt5 GUI系列)
目录 一、设计需求 二、实现代码 三、代码解析 四、总结 一、设计需求 Qt提供了很多标准的对话框。例如标准文件对话框(QFileDialog)、标准颜色对话框(QColorDialog)、标准字体对话框 (QFontDialog)、标准输入对话框 (QInputDialog) 及消息对话框 (QMessageBox)。本文展示各…...
大A又跌了
才开盘几天,又开始下跌了。生活更加苦难。期待高深算法。...
This error originates from a subprocess, and is likely not a problem with pip
我遇这个问题是的原因是包名错误 注意检查包名...
数据库基础知识1
关系模型的程序员不需熟悉数据库的存取路径 在3层模式结构中,___I___是数据库的核心和关键,___Ⅱ___通常是模式的子集,数据库模式的描述提供给用户,____Ⅲ__的描述存储在硬盘上。Ⅰ.模式Ⅱ. 外模式Ⅲ. 内模式 数据库中,数据的物理独立性是指用户的应用程序与存储在磁盘上数据库…...
【GO语言卵细胞级别教程】01.GO基础知识
01.GO基础知识 目录 01.GO基础知识1.GO语言的发展历程2.发展历程3.Windowns安装4.VSCode配置5.基础语法5.1 第一段代码5.2 GO执行的流程5.3 语法规则5.4 代码风格5.5 学习网址 1.GO语言的发展历程 Go语言是谷歌公司于2007年开始开发的一种编程语言,由Robert Griese…...
215.【2023年华为OD机试真题(C卷)】按身高和体重排排队(排序题-JavaPythonC++JS实现)
🚀点击这里可直接跳转到本专栏,可查阅顶置最新的华为OD机试宝典~ 本专栏所有题目均包含优质解题思路,高质量解题代码(Java&Python&C++&JS分别实现),详细代码讲解,助你深入学习,深度掌握! 文章目录 一. 题目-按身高和体重排排队二.解题思路三.题解代码Pyt…...
虚函数(C++)
四、多态4.1 虚函数 四、多态 多态性是面向对象程序设计语言的又一重要特征,多态(polymorphism)通俗的讲,就是用一个相同的名字定义许多不同的函数,这些函数可以针对不同数据类型实现相同或类似的功能,即所…...
力扣25题: K 个一组翻转链表
【题目链接】力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台,解题代码如下: class Solution {public ListNode reverseKGroup(ListNode head, int k) {ListNode curNode head;ListNode groupHead, groupTail head, lastGrou…...
网络安全应急响应工具之-流量安全取证NetworkMiner
在前面的一些文章中,用了很多的章节介绍流量分析和捕获工具wireshark。Wireshark是一款通用的网络协议分析工具,非常强大,关于wireshark的更多介绍,请关注专栏,wireshark从入门到精通。本文将介绍一个专注于网络流量取…...
http 401 错误
HTTP 401 错误表示未被授权,指客户端通过请求头中的身份验证数据进行身份验证,服务器返回401状态码表示身份验证失败。HTTP 401 错误通常与身份验证和授权相关的 Web 请求有关。 一、HTTP 401错误的定义 HTTP 401 错误是 HTTP 状态码的一种。由于服务器…...
Docker-Compose部署Redis(v7.2)哨兵模式
文章目录 一、前提准备1. 主从集群2. 文件夹结构 二、配置文件1. redis server配置文件2. redis sentinel配置文件3. docker compose文件 三、运行四、测试 环境 docker desktop for windows 4.23.0redis 7.2 一、前提准备 1. 主从集群 首先需要有一个redis主从集群&#x…...
解决问题:PPT中插入视频编辑模式可以播放,幻灯片放映后播放不了
目录 一、原因分析二、解决办法三、其它问题 一、原因分析 这可能是由于PowerPoint的硬件图形加速功能导致的。 二、解决办法 禁用硬件图形加速。 (1)点击《文件》选项卡 (2)点击《选项》 (3)在《高级》…...
使用react+vite开发项目时候,部署上线后刷新页面无法访问解决办法
说一下我这边的环境和使用的路由模式:vitereactBrowserRouter路由模式,所以如果你和我一样的话,可以试试我的这种解决办法,我是将项目打包后直接丢到服务器上的目录里面,然后配置nginx直接访问根目录。 我的nginx配置…...
45. 跳跃游戏 II(Java)
题目描述: 给定一个长度为 n 的 0 索引整数数组 nums。初始位置为 nums[0]。 每个元素 nums[i] 表示从索引 i 向前跳转的最大长度。换句话说,如果你在 nums[i] 处,你可以跳转到任意 nums[i j] 处: 0 < j < nums[i] i j < n 返回到…...
web vue 项目 Docker化部署
Web 项目 Docker 化部署详细教程 目录 Web 项目 Docker 化部署概述Dockerfile 详解 构建阶段生产阶段 构建和运行 Docker 镜像 1. Web 项目 Docker 化部署概述 Docker 化部署的主要步骤分为以下几个阶段: 构建阶段(Build Stage):…...
地震勘探——干扰波识别、井中地震时距曲线特点
目录 干扰波识别反射波地震勘探的干扰波 井中地震时距曲线特点 干扰波识别 有效波:可以用来解决所提出的地质任务的波;干扰波:所有妨碍辨认、追踪有效波的其他波。 地震勘探中,有效波和干扰波是相对的。例如,在反射波…...
《从零掌握MIPI CSI-2: 协议精解与FPGA摄像头开发实战》-- CSI-2 协议详细解析 (一)
CSI-2 协议详细解析 (一) 1. CSI-2层定义(CSI-2 Layer Definitions) 分层结构 :CSI-2协议分为6层: 物理层(PHY Layer) : 定义电气特性、时钟机制和传输介质(导线&#…...
家政维修平台实战20:权限设计
目录 1 获取工人信息2 搭建工人入口3 权限判断总结 目前我们已经搭建好了基础的用户体系,主要是分成几个表,用户表我们是记录用户的基础信息,包括手机、昵称、头像。而工人和员工各有各的表。那么就有一个问题,不同的角色…...
剑指offer20_链表中环的入口节点
链表中环的入口节点 给定一个链表,若其中包含环,则输出环的入口节点。 若其中不包含环,则输出null。 数据范围 节点 val 值取值范围 [ 1 , 1000 ] [1,1000] [1,1000]。 节点 val 值各不相同。 链表长度 [ 0 , 500 ] [0,500] [0,500]。 …...
C# 类和继承(抽象类)
抽象类 抽象类是指设计为被继承的类。抽象类只能被用作其他类的基类。 不能创建抽象类的实例。抽象类使用abstract修饰符声明。 抽象类可以包含抽象成员或普通的非抽象成员。抽象类的成员可以是抽象成员和普通带 实现的成员的任意组合。抽象类自己可以派生自另一个抽象类。例…...
Swagger和OpenApi的前世今生
Swagger与OpenAPI的关系演进是API标准化进程中的重要篇章,二者共同塑造了现代RESTful API的开发范式。 本期就扒一扒其技术演进的关键节点与核心逻辑: 🔄 一、起源与初创期:Swagger的诞生(2010-2014) 核心…...
算法笔记2
1.字符串拼接最好用StringBuilder,不用String 2.创建List<>类型的数组并创建内存 List arr[] new ArrayList[26]; Arrays.setAll(arr, i -> new ArrayList<>()); 3.去掉首尾空格...
Go 并发编程基础:通道(Channel)的使用
在 Go 中,Channel 是 Goroutine 之间通信的核心机制。它提供了一个线程安全的通信方式,用于在多个 Goroutine 之间传递数据,从而实现高效的并发编程。 本章将介绍 Channel 的基本概念、用法、缓冲、关闭机制以及 select 的使用。 一、Channel…...
Selenium常用函数介绍
目录 一,元素定位 1.1 cssSeector 1.2 xpath 二,操作测试对象 三,窗口 3.1 案例 3.2 窗口切换 3.3 窗口大小 3.4 屏幕截图 3.5 关闭窗口 四,弹窗 五,等待 六,导航 七,文件上传 …...
