kubectl 命令参数详解与示例
kubectl 命令参数详解与示例
kubectl 是 Kubernetes 的命令行工具,用于与 Kubernetes 集群交互。下面我将详细介绍 kubectl 的主要命令参数,并提供相应的使用示例。
一、基础命令
1. kubectl get - 获取资源信息
常用参数:
-n, --namespace: 指定命名空间-o, --output: 输出格式 (json|yaml|wide|name|custom-columns=…)-w, --watch: 监听资源变化--show-labels: 显示标签--sort-by: 按指定字段排序
示例:
# 获取默认命名空间的所有pod
kubectl get pods# 获取kube-system命名空间的pod,显示标签
kubectl get pods -n kube-system --show-labels# 以yaml格式获取pod信息
kubectl get pod my-pod -o yaml# 监听pod状态变化
kubectl get pods -w# 自定义列输出
kubectl get pods -o custom-columns=NAME:.metadata.name,STATUS:.status.phase,NODE:.spec.nodeName
2. kubectl describe - 显示资源详细信息
常用参数:
-n, --namespace: 指定命名空间-l, --selector: 根据标签选择器过滤
示例:
# 描述特定pod
kubectl describe pod my-pod# 描述命名空间中的所有service
kubectl describe services -n kube-system# 使用标签选择器描述pod
kubectl describe pods -l app=nginx
3. kubectl create - 创建资源
常用参数:
-f, --filename: 使用文件或URL创建--dry-run=client: 试运行(不实际创建)-o, --output: 输出格式--save-config: 保存配置到注解中
示例:
# 从YAML文件创建资源
kubectl create -f deployment.yaml# 试运行创建deployment
kubectl create deployment my-nginx --image=nginx --dry-run=client -o yaml# 创建命名空间
kubectl create namespace test-ns
4. kubectl apply - 应用配置变更
常用参数:
-f, --filename: 使用文件或URL-k, --kustomize: 使用kustomization目录--prune: 删除不再存在的资源--dry-run=server: 服务器端试运行
示例:
# 应用YAML配置
kubectl apply -f deployment.yaml# 使用kustomize
kubectl apply -k ./kustomize-dir# 试运行应用变更
kubectl apply -f deployment.yaml --dry-run=server
二、调试命令
1. kubectl logs - 查看容器日志
常用参数:
-f, --follow: 实时跟踪日志--tail: 显示最后N行日志--since: 显示特定时间后的日志(如5s, 2m, 3h)-p, --previous: 查看前一个容器的日志(容器崩溃时)
示例:
# 查看pod日志
kubectl logs my-pod# 实时跟踪日志
kubectl logs -f my-pod# 查看最后50行日志
kubectl logs --tail=50 my-pod# 查看过去1小时的日志
kubectl logs --since=1h my-pod# 多容器pod中指定容器
kubectl logs my-pod -c my-container
2. kubectl exec - 在容器中执行命令
常用参数:
-i, --stdin: 保持STDIN打开-t, --tty: 分配TTY-c, --container: 指定容器
示例:
# 在pod中执行简单命令
kubectl exec my-pod -- ls /# 交互式shell
kubectl exec -it my-pod -- /bin/bash# 在特定容器中执行命令
kubectl exec -it my-pod -c my-container -- /bin/sh
3. kubectl port-forward - 端口转发
常用参数:
--address: 绑定地址(默认为localhost)--pod-running-timeout: 等待pod运行的最长时间
示例:
# 将本地8080转发到pod的80端口
kubectl port-forward my-pod 8080:80# 转发到service
kubectl port-forward svc/my-service 8080:80# 绑定到所有网络接口
kubectl port-forward --address 0.0.0.0 my-pod 8080:80
三、部署管理
1. kubectl rollout - 管理部署的滚动更新
子命令:
history: 查看历史pause: 暂停resume: 恢复status: 查看状态undo: 回滚
示例:
# 查看部署历史
kubectl rollout history deployment/my-deployment# 查看特定修订版本详情
kubectl rollout history deployment/my-deployment --revision=2# 暂停部署
kubectl rollout pause deployment/my-deployment# 恢复部署
kubectl rollout resume deployment/my-deployment# 回滚到上一个版本
kubectl rollout undo deployment/my-deployment# 回滚到特定版本
kubectl rollout undo deployment/my-deployment --to-revision=2
2. kubectl scale - 扩缩容
常用参数:
--current-replicas: 当前副本数验证--replicas: 目标副本数
示例:
# 将deployment扩展到3个副本
kubectl scale --replicas=3 deployment/my-deployment# 基于当前副本数进行扩展
kubectl scale --current-replicas=2 --replicas=5 deployment/my-deployment
四、集群管理
1. kubectl config - 管理kubeconfig
常用子命令:
current-context: 显示当前上下文get-contexts: 列出所有上下文use-context: 切换上下文set-cluster: 配置集群set-credentials: 配置凭证
示例:
# 查看当前配置
kubectl config view# 切换上下文
kubectl config use-context dev-cluster# 添加新集群配置
kubectl config set-cluster prod-cluster --server=https://prod.example.com
2. kubectl cluster-info - 显示集群信息
常用参数:
--dump: 转储当前集群状态--output: 输出格式
示例:
# 显示集群基本信息
kubectl cluster-info# 显示详细集群信息
kubectl cluster-info dump
五、高级命令
1. kubectl patch - 部分更新资源
常用参数:
--type: 补丁类型(merge|json|strategic)-p, --patch: 补丁内容
示例:
# 更新deployment的镜像
kubectl patch deployment my-deployment -p '{"spec":{"template":{"spec":{"containers":[{"name":"my-container","image":"nginx:1.19"}]}}}}'# 使用strategic merge patch
kubectl patch deployment my-deployment --type strategic -p '{"spec":{"replicas":5}}'
2. kubectl label - 管理资源标签
常用参数:
--overwrite: 覆盖现有标签--list: 显示现有标签--all: 选择所有资源
示例:
# 添加标签
kubectl label pods my-pod env=prod# 覆盖现有标签
kubectl label pods my-pod env=staging --overwrite# 批量添加标签
kubectl label pods --all env=test# 删除标签
kubectl label pods my-pod env-
3. kubectl annotate - 管理资源注解
常用参数:
--overwrite: 覆盖现有注解--list: 显示现有注解
示例:
# 添加注解
kubectl annotate pods my-pod description="This is a test pod"# 查看注解
kubectl annotate pods my-pod --list# 删除注解
kubectl annotate pods my-pod description-
六、资源管理
1. kubectl delete - 删除资源
常用参数:
-f, --filename: 使用文件删除--all: 删除所有资源--grace-period: 优雅删除期限(秒)--force: 强制删除
示例:
# 按名称删除pod
kubectl delete pod my-pod# 使用YAML文件删除
kubectl delete -f deployment.yaml# 删除命名空间下所有pod
kubectl delete pods --all -n test-ns# 强制删除pod
kubectl delete pod my-pod --grace-period=0 --force
2. kubectl edit - 编辑资源
常用参数:
-f, --filename: 使用文件--output: 输出格式--record: 记录当前命令到资源注解
示例:
# 编辑deployment
kubectl edit deployment/my-deployment# 使用特定编辑器
KUBE_EDITOR="nano" kubectl edit deployment/my-deployment# 编辑时记录命令
kubectl edit deployment/my-deployment --record
七、排错命令
1. kubectl top - 显示资源使用情况
常用参数:
--containers: 显示容器级别统计--sort-by: 按指定字段排序
示例:
# 查看节点资源使用
kubectl top nodes# 查看pod资源使用
kubectl top pods# 查看容器级别资源使用
kubectl top pods --containers# 按CPU排序
kubectl top pods --sort-by=cpu
2. kubectl cp - 在容器和本地系统间复制文件
常用参数:
-c, --container: 指定容器
示例:
# 从本地复制到pod
kubectl cp /local/path/file.txt my-pod:/remote/path/# 从pod复制到本地
kubectl cp my-pod:/remote/path/file.txt /local/path/# 指定容器复制
kubectl cp /local/path/file.txt my-pod:/remote/path/ -c my-container
八、插件管理
kubectl plugin - 管理插件
常用子命令:
list: 列出已安装插件install: 安装插件uninstall: 卸载插件
示例:
# 列出插件
kubectl plugin list# 安装插件(插件名需以kubectl-开头)
mv my-plugin /usr/local/bin/kubectl-my_plugin
chmod +x /usr/local/bin/kubectl-my_plugin# 使用插件
kubectl my-plugin
九、API资源管理
kubectl api-resources - 查看API资源
常用参数:
--namespaced: 仅显示命名空间资源--verbs: 过滤支持的动词--sort-by: 排序字段
示例:
# 查看所有API资源
kubectl api-resources# 查看命名空间资源
kubectl api-resources --namespaced=true# 查看支持create操作的资源
kubectl api-resources --verbs=create
十、自定义输出
自定义列输出
示例:
# 自定义列显示pod信息
kubectl get pods -o custom-columns="NAME:.metadata.name,STATUS:.status.phase,NODE:.spec.nodeName,IP:.status.podIP"# 使用JSONPath表达式
kubectl get pods -o=jsonpath='{range .items[*]}{.metadata.name}{"\t"}{.status.startTime}{"\n"}{end}'
十一、边车模式
在Kubernetes中,要向已经运行的Pod添加临时边车容器,有几种方法可以实现。需要注意的是,Kubernetes本身不支持直接修改正在运行的Pod的容器配置,因为Pod在Kubernetes中是 immutable(不可变)的。
方法1: 使用Ephemeral Containers (临时容器) - Kubernetes 1.23+
从Kubernetes 1.23开始,临时容器功能已稳定,这是官方推荐的向运行中Pod添加边车容器的方法。
kubectl debug <pod-name> -it --image=<sidecar-image> --target=<container-name> --share-processes
示例:
kubectl debug my-pod -it --image=busybox:latest --target=main-container --share-processes
参数说明:
–image: 指定边车容器使用的镜像
–target: 指定目标容器,边车将共享其命名空间
–share-processes: 允许边车查看主容器的进程
方法2: 使用kubectl alpha debug (旧版本)
对于Kubernetes 1.18-1.22版本:
kubectl alpha debug <pod-name> -it --image=<sidecar-image> --share-processes
方法3: 通过修改Deployment/DaemonSet/StatefulSet
如果需要更持久的边车容器,可以修改控制器定义:
编辑Deployment/DaemonSet/StatefulSet:
kubectl edit deployment <deployment-name>
在spec.template.spec.containers下添加边车容器定义
保存后,Kubernetes会滚动更新Pod
方法4: 使用临时Pod进行调试
如果只是需要临时调试,可以创建一个新Pod并共享目标Pod的命名空间:
kubectl run debugger --image=busybox -it --rm --restart=Never --pod-running-timeout=1m --overrides='{"spec": {"shareProcessNamespace": true, "containers": [{"name": "debugger", "image": "busybox", "stdin": true, "tty": true, "securityContext": {"privileged": true}}]}}' --target <pod-name>
注意事项
临时容器是短暂的,不会在Pod重启后保留
需要确保API服务器启用了临时容器功能
某些安全策略可能会限制临时容器的使用
对于生产环境,建议使用方法3(修改控制器定义)以获得更可靠的结果
验证边车容器
添加后,可以使用以下命令验证:
kubectl describe pod <pod-name>
kubectl exec -it <pod-name> -c <sidecar-container-name> -- /bin/sh
总结
kubectl 提供了丰富的命令和参数来管理 Kubernetes 集群。掌握这些参数可以帮助您:
- 高效地查询和管理资源
- 调试和排查问题
- 自动化日常操作
- 定制输出以满足特定需求
建议结合 --help 参数查看各命令的详细用法,如 kubectl get --help。随着 Kubernetes 版本更新,部分参数可能会有所变化,请参考对应版本的官方文档。
相关文章:
kubectl 命令参数详解与示例
kubectl 命令参数详解与示例 kubectl 是 Kubernetes 的命令行工具,用于与 Kubernetes 集群交互。下面我将详细介绍 kubectl 的主要命令参数,并提供相应的使用示例。 一、基础命令 1. kubectl get - 获取资源信息 常用参数: -n, --namesp…...
在 Ubuntu 20.04 上重新启动网络
参考链接: 如何在 Ubuntu 22.04 上重新启动网络 执行以下两条命令,ok sudo nmcli networking off sudo nmcli networking on...
STM32 - 在机器人、自动化领域,LL库相比HAL优势明显
在机器人控制器、电机控制器等领域的开发,需要高实时性、精细化控制或者对代码执行效率、占用空间有较高要求。所以,大家常用的HAL库明显不符合要求。再加上,我们学习一门技术,一定要学会掌握底层的原理。MCU开发的底层就是寄存器…...
【区块链安全 | 第二篇】区块链概念详解
文章目录 概述1. 区块链类型2 区块链五层架构3 账本模型4. 节点(Node)5. 区块(Block)6. 区块链(Blockchain)7. 区块链工作流程 核心技术1. 共识机制2. 智能合约 主要组件1. 交易(Transaction&am…...
【开源宝藏】30天学会CSS - DAY6 第六课 流光文字动画
第 0 步:项目结构 lighting-text/├─ index.html└─ style.cssindex.html:包含列表 <ul>,其中每个 <li> 放一个字母或符号。style.css:设置背景、文字样式,以及关键帧动画(lighting…...
linux - centos7 部署 redis6.0.5
事先说明 本篇文章只解决在部署redis中出现的问题,并没有部署redis的全过程,详细部署过程可以参考Linux安装部署Redis(超级详细) - 长沙大鹏 - 博客园 执行 make 命令时报错 原因:是因为gcc版本太低 升级gcc版本时 出现没有可用软件包 devt…...
Java反射机制详解:原理、应用与最佳实践
Java反射机制详解:原理、应用与最佳实践 1. 什么是反射? Java反射(Reflection)是指在运行时动态获取类的信息(如类名、方法、字段、构造方法等)并操作对象的能力。它允许程序在运行时检查和修改类的行为&…...
Swift实现嵌套json字典重排序并输出string
在网络请求或接口签名中,通常要求将参数按照一定规则拼接成字符串。一个常见的做法是对字典的 key 进行排序,然后按照 “keyvalue” 的格式拼接,多个参数之间以特定符号(例如 &)连接。 如果参数中包含嵌套的字典或…...
【Ai】--- 可视化 DeepSeek-r1 接入 Open WebUI(超详细)
在编程的艺术世界里,代码和灵感需要寻找到最佳的交融点,才能打造出令人为之惊叹的作品。而在这座秋知叶i博客的殿堂里,我们将共同追寻这种完美结合,为未来的世界留下属于我们的独特印记。【Ai】--- 可视化 DeepSeek-r1 接入 Open WebUI(超详细) 开发环境一、前情提要:你…...
VSCode加Cline插件加DeepSeek实现AI编程指南
VSCode加Cline插件加DeepSeek实现AI编程指南 简介 本文将详细介绍如何在VSCode中使用Cline插件结合DeepSeek AI实现高效的AI辅助编程,特别适合初学者快速上手。我们将通过实现一个TodoList应用的例子来演示整个流程。 环境准备 1. 安装VSCode 前往VSCode官网下…...
代码规范之Variable Names变量名
代码规范之Variable Names变量名 golang中 官方文档:https://go.dev/wiki/CodeReviewComments#variable-names Variable names in Go should be short rather than long. This is especially true for local variables with limited scope. Prefer c to lineCoun…...
2025春招市场迎AI热潮:生成式人工智能(GAI)认证如何重构人才竞争力
随着科技的飞速发展,人工智能(AI)已逐渐渗透到我们生活的方方面面,从智能家居到自动驾驶,从智能客服到医疗诊断,AI的身影无处不在。而在这股AI浪潮中,生成式人工智能(Generative AI,…...
Flink基础简介和安装部署
文章目录 一、Flink基础简介1、什么是Flink2、Flink流处理特性3、Flink四大基石4、Flink中的角色 二、Flink集群搭建1、Local模式①上传Flink安装包②启动交互窗口③提交任务测试④访问WebUI页面查看⑤退出停止集群 2、Standalone模式①修改配置⽂件 conf/flink-conf.yaml②修改…...
SpringBoot分布式项目实战:观察者模式的高阶应用与避坑指南
一、痛点场景:当观察者遇上分布式 在某电商平台重构项目中,我们遭遇了这样的困境:订单中心完成支付后需要触发库存扣减、积分结算、物流调度等12个后续操作。最初的实现采用了硬编码调用: // 伪代码示例 public void paySuccess…...
How to use pgbench to test performance for PostgreSQL?
pgbench 是一个用于测试 PostgreSQL 数据库性能的基准测试工具。通过模拟多个客户端并发执行 SQL 查询,它可以帮助你评估数据库的性能。以下是使用 pgbench 的基本步骤: 安装 pgbench pgbench 是 PostgreSQL 的一部分,因此在安装 PostgreSQ…...
C#基础学习(五)函数中的ref和out
1. 引言:为什么需要ref和out? 问题背景:函数参数默认按值传递,值类型在函数内修改不影响外部变量;引用类型重新赋值时外部对象不变。核心作用:允许函数内部修改外部变量的值,实现“双向传参…...
从零构建大语言模型全栈开发指南:第二部分:模型架构设计与实现-2.2.2文本生成逻辑:Top-k采样与温度控制
👉 点击关注不迷路 👉 点击关注不迷路 👉 点击关注不迷路 文章大纲 2.2.2 文本生成逻辑:Top-k采样与温度控制1. 文本生成的核心挑战与数学框架1.1 自回归生成的基本流程2. `Top-k`采样原理与工程实现2.1 数学定义与算法流程2.2 PyTorch实现优化3. 温度控制的数学本质与参…...
关于CodeJava的学习笔记——9
一、IO流 1、定义 IInput输入 OOutput输出 流 : 数据从源点传输到汇点的"管道"而已 2、流的分类 按照方向分: 输入流 输出流 *:参照物当前Java程序为参照物 按照单位分: 字节流 字符流 按照功能分: 节点流 过滤流(包装流 处…...
LeetCode算法题(Go语言实现)_11
题目 给定字符串 s 和 t ,判断 s 是否为 t 的子序列。 字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。(例如,"ace"是"abcde"的一个子序列&a…...
Python----数据分析(足球运动员数据分析)
一、数据展示 1.1、数据 1.2、列名 字段名备注Name姓名Nationality国籍National_Position国家队位置National_Kit国家队号码Club所在俱乐部Club_Position所在俱乐部位置Club_Kit俱乐部号码Club_Joining加入俱乐部时间Contract_Expiry合同到期时间Rating评分Height身高Weight体…...
Day38 | 1365. 有多少小于当前数字的数字、941. 有效的山脉数组、1207. 独一无二的出现次数、283. 移动零、189. 轮转数组
1365. 有多少小于当前数字的数字 题目链接:1365. 有多少小、于当前数字的数字 - 力扣(LeetCode) 题目难度:简单 代码: class Solution {public int[] smallerNumbersThanCurrent(int[] nums) {Map<Integer,Inte…...
Docker-清理容器空间prune
docker system prune -a 是一个非常有用的命令,用于清理 Docker 系统中未使用的资源,包括停止的容器、未使用的网络、卷以及未被任何容器引用的镜像(悬空镜像和所有未使用的镜像)。以下是关于该命令的详细说明: 命令格…...
matplotlib——南丁格尔玫瑰
南丁格尔玫瑰图(Nightingale Rose Chart),是一种特殊形式的柱状图,它以南丁格尔(Florence Nightingale)命名,她在1858年首次使用这种图表来展示战争期间士兵死亡原因的数据。 它将数据绘制在极坐…...
Django与网页表单
我叫补三补四,很高兴见到大家,欢迎一起学习交流和进步 今天来讲一讲网页表单 网页表单又叫做HTML表单,用来处理用户从页面输入发送到服务器的数据,页面表单通常会提供复选框、单选按钮和文本字段,方便用户填写各种形式…...
Rust从入门到精通之入门篇:10.包和模块
包和模块 在本章中,我们将学习 Rust 的包和模块系统,它们是组织和重用代码的重要工具。随着项目规模的增长,良好的代码组织变得越来越重要,Rust 提供了一套强大的机制来管理代码结构。 包和 Crate Crate Crate 是 Rust 中最高…...
ChatDBA VS DeepSeek:快速诊断 OceanBase 集群新租户数据同步异常
社区王牌专栏《一问一实验:AI 版》改版以来已发布多期(51-60),展现了 ChatDBA 在多种场景下解决问题的效果。 下面让我们正式进入《一问一实验:AI 版》第 62 期,看看 ChatDBA 最新效果以及与热门大模型 De…...
dify忘记密码
特别好,非常好,一把年纪忘了dify的账号、密码了,very good!!! 参考如下教程 https://zhuanlan.zhihu.com/p/24515387167 rootbae577d82ec7:/# psql -U postgres psql: error: connection to server on so…...
Python----计算机视觉处理(Opencv:图像边缘检测:非极大值抑制,双阈值筛选)
一、 高斯滤波 边缘检测本身属于锐化操作,对噪点比较敏感,所以需要进行平滑处理。这里使用的是一个5*5的高斯 核对图像进行消除噪声。 二、计算图像的梯度和方向 三、非极大值抑制 在得到每个边缘的方向之后,其实把它们连起来边缘检测就算完了…...
vue3(笔记)5.0--pinia工具的知识扩展
pinia工具 defineStore(创建pinia) 作用:用于定义一个 Pinia store。 用法: 接收一个唯一的 ID 和一个配置对象,配置对象中可以定义 state、getters 和 actions。state 是一个函数,返回初始状态。getters 类似于 Vue 组件中的计…...
基于Kubernetes部署Prometheus监控平台
#作者:stackofumbrella 文章目录 prometheus和k8s集群版本对照表架构Prometheus Operator简介kube-prometheus下载地址 安装修改镜像地址修改Prometheus的service修改Grafana的service修改Alertmanager的service数据持久化执行安装 Prometheus验证Grafana验证解决C…...
