Kubernetes 100个常用命令!

这篇文章是关于使用 Kubectl 进行 Kubernetes 诊断的指南。

列出了 100 个 Kubectl 命令,这些命令对于诊断 Kubernetes 集群中的问题非常有用。这些问题包括但不限于:

  • • 集群信息

  • • Pod 诊断

  • • 服务诊断

  • • 部署诊断

  • • 网络诊断

  • • 持久卷和持久卷声明诊断

  • • 资源使用情况

  • • 安全和授权

  • • 节点故障排除

  • • 其他诊断命令:文章还提到了许多其他命令,如资源扩展和自动扩展、作业和定时作业诊断、Pod 亲和性和反亲和性规则、RBAC 和安全、服务账号诊断、节点排空和取消排空、资源清理等。

集群信息:

  1. 显示 Kubernetes 版本:kubectl version

  2. 显示集群信息:kubectl cluster-info

  3. 列出集群中的所有节点:kubectl get nodes

  4. 查看一个具体的节点详情:kubectl describe node <node-name>

  5. 列出所有命名空间:kubectl get namespaces

  6. 列出所有命名空间中的所有 pod:kubectl get pods --all-namespaces

Pod 诊断:

  1. 列出特定命名空间中的 pod:kubectl get pods -n <namespace>

  2. 查看一个 Pod 详情:kubectl describe pod <pod-name> -n <namespace>

  3. 查看 Pod 日志:kubectl logs <pod-name> -n <namespace>

  4. 尾部 Pod 日志:kubectl logs -f <pod-name> -n <namespace>

  5. 在 pod 中执行命令:kubectl exec -it <pod-name> -n <namespace> -- <command>

Pod 健康检查:

  1. 检查 Pod 准备情况:kubectl get pods <pod-name> -n <namespace> -o jsonpath='{.status.conditions[?(@.type=="Ready")].status}'

  2. 检查 Pod 事件:kubectl get events -n <namespace> --field-selector involvedObject.name=<pod-name>

Service诊断:

  1. 列出命名空间中的所有服务:kubectl get svc -n <namespace>

  2. 查看一个服务详情:kubectl describe svc <service-name> -n <namespace>

Deployment诊断:

  1. 列出命名空间中的所有Deployment:kubectl get deployments -n <namespace>

  2. 查看一个Deployment详情:kubectl describe deployment <deployment-name> -n <namespace>

  3. 查看滚动发布状态:kubectl rollout status deployment/<deployment-name> -n <namespace>

  4. 查看滚动发布历史记录:kubectl rollout history deployment/<deployment-name> -n <namespace>

StatefulSet诊断:

  1. 列出命名空间中的所有 StatefulSet:kubectl get statefulsets -n <namespace>

  2. 查看一个 StatefulSet详情:kubectl describe statefulset <statefulset-name> -n <namespace>

ConfigMap 和Secret诊断:

  1. 列出命名空间中的 ConfigMap:kubectl get configmaps -n <namespace>

  2. 查看一个ConfigMap详情:kubectl describe configmap <configmap-name> -n <namespace>

  3. 列出命名空间中的 Secret:kubectl get secrets -n <namespace>

  4. 查看一个Secret详情:kubectl describe secret <secret-name> -n <namespace>

命名空间诊断:

  1. 查看一个命名空间详情:kubectl describe namespace <namespace-name>

资源使用情况:

  1. 检查 pod 的资源使用情况:kubectl top pod <pod-name> -n <namespace>

  2. 检查节点资源使用情况:kubectl top nodes

网络诊断:

  1. 显示命名空间中 Pod 的 IP 地址:kubectl get pods -n <namespace> -o custom-columns=POD:metadata.name,IP:status.podIP --no-headers

  2. 列出命名空间中的所有网络策略:kubectl get networkpolicies -n <namespace>

  3. 查看一个网络策略详情:kubectl describe networkpolicy <network-policy-name> -n <namespace>

持久卷 (PV) 和持久卷声明 (PVC) 诊断:

  1. 列出PV:kubectl get pv

  2. 查看一个PV详情:kubectl describe pv <pv-name>

  3. 列出命名空间中的 PVC:kubectl get pvc -n <namespace>

  4. 查看PVC详情:kubectl describe pvc <pvc-name> -n <namespace>

节点诊断:

  1. 获取特定节点上运行的 Pod 列表:kubectl get pods --field-selector spec.nodeName=<node-name> -n <namespace>

资源配额和限制:

  1. 列出命名空间中的资源配额:kubectl get resourcequotas -n <namespace>

  2. 查看一个资源配额详情:kubectl describe resourcequota <resource-quota-name> -n <namespace>

自定义资源定义 (CRD) 诊断:

  1. 列出命名空间中的自定义资源:kubectl get <custom-resource-name> -n <namespace>

  2. 查看自定义资源详情: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 集群以及在其中运行的应用程序。

资源伸缩和自动伸缩

  1. Deployment伸缩:kubectl scale deployment <deployment-name> --replicas=<replica-count> -n <namespace>

  2. 设置Deployment的自动伸缩:kubectl autoscale deployment <deployment-name> --min=<min-pods> --max=<max-pods> --cpu-percent=<cpu-percent> -n <namespace>

  3. 检查水平伸缩器状态:kubectl get hpa -n <namespace>

作业和 CronJob 诊断:

  1. 列出命名空间中的所有作业:kubectl get jobs -n <namespace>

  2. 查看一份工作详情:kubectl describe job <job-name> -n <namespace>

  3. 列出命名空间中的所有 cron 作业:kubectl get cronjobs -n <namespace>

  4. 查看一个 cron 作业详情:kubectl describe cronjob <cronjob-name> -n <namespace>

容量诊断:

  1. 列出按容量排序的持久卷 (PV):kubectl get pv --sort-by=.spec.capacity.storage

  2. 查看PV回收策略:kubectl get pv <pv-name> -o=jsonpath='{.spec.persistentVolumeReclaimPolicy}'

  3. 列出所有存储类别:kubectl get storageclasses

Ingress和服务网格诊断:

  1. 列出命名空间中的所有Ingress:kubectl get ingress -n <namespace>

  2. 查看一个Ingress详情:kubectl describe ingress <ingress-name> -n <namespace>

  3. 列出命名空间中的所有 VirtualServices (Istio):kubectl get virtualservices -n <namespace>

  4. 查看一个 VirtualService (Istio)详情:kubectl describe virtualservice <virtualservice-name> -n <namespace>

Pod 网络故障排除:

  1. 运行网络诊断 Pod(例如 busybox)进行调试:kubectl run -it --rm --restart=Never --image=busybox net-debug-pod -- /bin/sh

  2. 测试从 Pod 到特定端点的连接:kubectl exec -it <pod-name> -n <namespace> -- curl <endpoint-url>

  3. 跟踪从一个 Pod 到另一个 Pod 的网络路径:kubectl exec -it <source-pod-name> -n <namespace> -- traceroute <destination-pod-ip>

  4. 检查 Pod 的 DNS 解析:kubectl exec -it <pod-name> -n <namespace> -- nslookup <domain-name>

配置和资源验证:

  1. 验证 Kubernetes YAML 文件而不应用它:kubectl apply --dry-run=client -f <yaml-file>

  2. 验证 pod 的安全上下文和功能:kubectl auth can-i list pods --as=system:serviceaccount:<namespace>:<serviceaccount-name>

RBAC 和安全性:

  1. 列出命名空间中的角色和角色绑定:kubectl get roles,rolebindings -n <namespace>

  2. 查看角色或角色绑定详情:kubectl describe role <role-name> -n <namespace>

服务帐户诊断:

  1. 列出命名空间中的服务帐户:kubectl get serviceaccounts -n <namespace>

  2. 查看一个服务帐户详情:kubectl describe serviceaccount <serviceaccount-name> -n <namespace>

清空节点和解除封锁:

  1. 清空节点以进行维护:kubectl drain <node-name> --ignore-daemonsets

  2. 解除对节点的封锁:kubectl uncordon <node-name>

资源清理:

  1. 强制删除 pod(不推荐):kubectl delete pod <pod-name> -n <namespace> --grace-period=0 --force

Pod 亲和性和反亲和性:

  1. 列出 pod 的 pod 亲和性规则:kubectl get pod <pod-name> -n <namespace> -o=jsonpath='{.spec.affinity}'

  2. 列出 pod 的 pod 反亲和性规则:kubectl get pod <pod-name> -n <namespace> -o=jsonpath='{.spec.affinity.podAntiAffinity}'

Pod 安全策略 (PSP):

  1. 列出所有 Pod 安全策略(如果启用):kubectl get psp

事件:

  1. 查看最近的集群事件:kubectl get events --sort-by=.metadata.creationTimestamp

  2. 按特定命名空间过滤事件:kubectl get events -n <namespace>

节点故障排除:

  1. 检查节点情况:kubectl describe node <node-name> | grep Conditions -A5

  2. 列出节点容量和可分配资源:kubectl describe node <node-name> | grep -E "Capacity|Allocatable"

临时容器(Kubernetes 1.18+):

  1. 运行临时调试容器:kubectl debug -it <pod-name> -n <namespace> --image=<debug-image> -- /bin/sh

资源指标(需要指标服务器):

  1. 获取 Pod 的 CPU 和内存使用情况:kubectl top pod -n <namespace>

kuelet诊断:

  1. 查看节点上的kubelet日志:kubectl logs -n kube-system kubelet-<node-name>

使用Telepresence 进行高级调试:

  1. 使用 Telepresence 调试 pod:telepresence --namespace <namespace> --swap-deployment <pod-name>

Kubeconfig 和上下文:

  1. 列出可用的上下文:kubectl config get-contexts

  2. 切换到不同的上下文:kubectl config use-context <context-name>

Pod 安全标准(PodSecurity 准入控制器):

  1. 列出 PodSecurityPolicy (PSP) 违规行为:kubectl get psp -A | grep -vE 'NAME|REVIEWED'

Pod 中断预算 (PDB) 诊断:

  1. 列出命名空间中的所有 PDB:kubectl get pdb -n <namespace>

  2. 查看一个PDB详情:kubectl describe pdb <pdb-name> -n <namespace>

资源锁诊断(如果使用资源锁):

  1. 列出命名空间中的资源锁:kubectl get resourcelocks -n <namespace>

服务端点和 DNS

  1. 列出服务的服务端点:kubectl get endpoints <service-name> -n <namespace>

  2. 检查 Pod 中的 DNS 配置:kubectl exec -it <pod-name> -n <namespace> -- cat /etc/resolv.conf

自定义指标(Prometheus、Grafana):

  1. 查询Prometheus指标:用于kubectl port-forward访问Prometheus和Grafana服务来查询自定义指标。

Pod 优先级和抢占:

  1. 列出优先级:kubectl get priorityclasses

Pod 开销(Kubernetes 1.18+):

  1. 列出 pod 中的开销:kubectl get pod <pod-name> -n <namespace> -o=jsonpath='{.spec.overhead}'

存储卷快照诊断(如果使用存储卷快照):

  1. 列出存储卷快照:kubectl get volumesnapshot -n <namespace>

  2. 查看存储卷快照详情:kubectl describe volumesnapshot <snapshot-name> -n <namespace>

资源反序列化诊断:

  1. 反序列化并打印 Kubernetes 资源:kubectl get <resource-type> <resource-name> -n <namespace> -o=json

节点污点:

  1. 列出节点污点:kubectl describe node <node-name> | grep Taints

更改和验证 Webhook 配置:

  1. 列出变异 webhook 配置:kubectl get mutatingwebhookconfigurations

  2. 列出验证 Webhook 配置:kubectl get validatingwebhookconfigurations

Pod 网络策略:

  1. 列出命名空间中的 pod 网络策略:kubectl get networkpolicies -n <namespace>

节点条件(Kubernetes 1.17+):

  1. 自定义查询输出:kubectl get nodes -o custom-columns=NODE:.metadata.name,READY:.status.conditions[?(@.type=="Ready")].status -l 'node-role.kubernetes.io/worker='

审核日志:

  1. 检索审核日志(如果启用):检查 Kubernetes 审核日志配置以了解审核日志的位置。

节点操作系统详细信息:

  1. 获取节点的操作系统信息:kubectl get node <node-name> -o jsonpath='{.status.nodeInfo.osImage}'

这些命令应该涵盖 Kubernetes 中的各种诊断场景。确保将<namespace><pod-name><deployment-name>等占位符替换为你的集群和用例的实际值。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2023-强网杯-【强网先锋-ez_fmt】

文章目录 ez_fmt libc-2.31.so检查main思路exp 参考链接 ez_fmt libc-2.31.so 检查 没有地址随机化 main 简单粗暴的printf格式化字符串漏洞 思路 泄露地址&#xff0c;覆盖返回地址形成ROP链 printf执行时栈上存在__libc_start_main243的指令的地址&#xff0c;可以泄露…

JAVA面试题17

Java中的日 12-21 15:09 继续 志&#xff08;Logging&#xff09;是什么&#xff1f; 它有什么作用&#xff1f; 答案&#xff1a;日志是程序运行过程中产生的记录和反映&#xff0c;用于帮助程序员理解程序的运行情况和问题。Java中的日志机制可以通过Java标准库自带的java.u…

C++哈希表的实现

C哈希表的实现 一.unordered系列容器的介绍二.哈希介绍1.哈希概念2.哈希函数的常见设计3.哈希冲突4.哈希函数的设计原则 三.解决哈希冲突1.闭散列(开放定址法)1.线性探测1.动图演示2.注意事项3.代码的注意事项4.代码实现 2.开散列(哈希桶,拉链法)1.概念2.动图演示3.增容问题1.拉…

MyBatis 架构分析

文章目录 三层架构一、基础支撑层1.1 类型转换模块1.2 日志模块1.3 反射工具模块1.4 Binding 模块1.5 数据源模块1.6 缓存模块1.6 解析器模块1.7 事务管理模块 二、核心处理层2.1 配置解析2.2 SQL 解析与 scripting 模块。2.3 MyBatis 中的 scripting 模块就是负责动态生成 SQL…

SpringCloud Alibaba(itheima)

SpringCloud Alibaba 第一章 微服务介绍1.1系统架构演变1.1.1单体应用架构1.1.2垂直应用架构1.1.3分布式架构1.1.4 SOA架构1.1.5微服务架构 1.2微服务架构介绍1.2.1微服务架构的常见问题1.2.2微服务架构的常见概念1.2.3微服务架构的常见解决方案 1.3 SpringCloud Alibaba介绍1.…

用23种设计模式打造一个cocos creator的游戏框架----(二十二)原型模式

1、模式标准 模式名称&#xff1a;原型模式 模式分类&#xff1a;创建型 模式意图&#xff1a;用原型实例指定创建对象的种类&#xff0c;并且通过复制这些原型创建新的对象 结构图&#xff1a; 适用于&#xff1a; 1、当一个系统应该独立于它的产品创建、构成和表示时 2、…

对接第三放数据字段不一致问题:注解映射@JsonProperty 与 @JSONField

我在对接第三方数据的时候&#xff0c;遇到本地实体类 与 对接数据的 json 字段不匹配的时候&#xff0c; 采用注解的方式映射 json 数据到 对应的 java 实体类 Excel(name "舒张压")JsonProperty(value "hypotension")private BigDecimal pressureL…

BUUCTF-Crypto合集-WP

获取CTF工具可关注CSJH网络安全团队&#xff0c;回复CTF工具 一眼就解密 下面的字符串解密后便能获得flag&#xff1a;ZmxhZ3tUSEVfRkxBR19PRl9USElTX1NUUklOR30 注意&#xff1a;得到的 flag 请包上 flag{} 提交 大小写字母加数字&#xff0c;而且等于号结尾&#xff0c;bas…

实在智能斩获钛媒体2023全球创新评选科技类「 大模型创新应用奖」

近日&#xff0c;历时三天的钛媒体2023 T-EDGE全球创新大会以“新视野新链接”为主题在北京隆重举办。作为科创领域全新高度的年度盛事&#xff0c;大会吸引了AI各产业链近百位海内外创投人、尖端企业家、商业领袖和国际嘉宾齐聚一堂&#xff0c;围绕新一轮AI革命、智慧数字化、…

Leetcode 135 分发糖果

题意理解&#xff1a; 给出n个小孩的得分&#xff0c;给他们奖励糖果 奖励条件&#xff1a; &#xff08;1&#xff09;每个孩子至少分配到 1 个糖果。 &#xff08;2&#xff09;相邻两个孩子评分更高的孩子会获得更多的糖果。 对于任意一个小孩&#xff0c;她要比左右两边的小…

Java中使用JTS实现WKB数据写入、转换字符串、读取

场景 Java中使用JTS实现WKT字符串读取转换线、查找LineString的list中距离最近的线、LineString做缓冲区扩展并计算点在缓冲区内的方位角&#xff1a; Java中使用JTS实现WKT字符串读取转换线、查找LineString的list中距离最近的线、LineString做缓冲区扩展并计算点在缓冲区内…

从Maven初级到高级

一.Maven简介 Maven 是 Apache 软件基金会组织维护的一款专门为 Java 项目提供构建和依赖管理支持的工具。 一个 Maven 工程有约定的目录结构&#xff0c;约定的目录结构对于 Maven 实现自动化构建而言是必不可少的一环&#xff0c;就拿自动编译来说&#xff0c;Maven 必须 能…

LeetCode 每日一题 2023/12/18-2023/12/24

记录了初步解题思路 以及本地实现代码&#xff1b;并不一定为最优 也希望大家能一起探讨 一起进步 目录 12/18 162. 寻找峰值12/19 1901. 寻找峰值 II12/20 2828. 判别首字母缩略词12/21 2866. 美丽塔 II12/22 1671. 得到山形数组的最少删除次数12/23 1962. 移除石子使总数最小…

python调用DALL·E绘画

实现用gpt的api和他对话后&#xff0c;我们试着调用DALLE的api进行绘画 参考文档 OpenAI API 运行代码 from openai import OpenAIclient OpenAI()user_prompt input("请输入您想生成的图片描述: ")response client.images.generate(model"dall-e-3"…

计算机网络 网络安全技术

网络安全基本要素 机密性 不泄密完整性 信息不会被破坏可用性 授权用户 正常有效使用可控性 被控制可审查性 网络安全的结构层次 物理安全 物理介质安全控制 计算机操作系统安全服务 应用层次 被动攻击 :截获信息 主动攻击 : 中断信息,篡改,伪造 篡改 …

分享70个Java源码总有一个是你想要的

分享70个Java源码总有一个是你想要的 学习知识费力气&#xff0c;收集整理更不易。 知识付费甚欢喜&#xff0c;为咱码农谋福利。 源码下载链接&#xff1a;https://pan.baidu.com/s/1uyWfeUuO_4jRbAEw825qRw?pwd6666 提取码&#xff1a;6666 项目名称 CRUD is ReallyU…

电商数据之巅:挖掘无限价值的蓝海

在数字时代的大潮中&#xff0c;数据已成为新的黄金和石油&#xff0c;尤其在电商领域。电商平台每天都在产生海量的数据&#xff0c;这些数据不仅是对消费者行为的记录&#xff0c;更是隐藏着无限的商机和价值。本文将带你走进电商数据的神奇世界&#xff0c;探寻其无尽可能的…

Go 泛型发展史与基本介绍

Go 泛型发展史与基本介绍 Go 1.18版本增加了对泛型的支持&#xff0c;泛型也是自 Go 语言开源以来所做的最大改变。 文章目录 Go 泛型发展史与基本介绍一、为什么要加入泛型&#xff1f;二、什么是泛型三、泛型的来源四、为什么需要泛型五、Go 泛型设计的简史六、泛型语法6.1 …

实战篇:一文讲清楚商品分析之返货品画像分析怎么做

01 什么是商品画像&#xff0c;怎样进行分析 “用户画像对于小伙伴们来说并不陌生&#xff0c;那有小伙伴知道商品画像吗&#xff1f;其实它和用户画像一样&#xff0c;可以简单理解成是商品海量数据的标签。”   商品画像的意义在于可以对商品进行精准的定位&#xff0c;让不…

探索人工智能 | 计算机视觉 让计算机打开新灵之窗

前言 计算机视觉是一门研究如何使机器“看”的科学&#xff0c;更进一步的说&#xff0c;就是指用摄影机和电脑代替人眼对目标进行识别、跟踪和测量等机器视觉&#xff0c;并进一步做图形处理&#xff0c;使电脑处理成为更适合人眼观察或传送给仪器检测的图像。 文章目录 前言…