K8s 常用命令
常用 kubectl 命令与输出速查。
【…】 为待替换参数,各条命令按需使用。-n 【命名空间】 指定操作范围,-A 查询所有命名空间。路径或参数含空格等 Shell 特殊字符时,需加引号。
1. 集群切换
| |
get-contexts 输出示例:
| |
context 包含集群、访问身份和默认命名空间,名称取自 NAME 列,* 是当前选择。use-context 会影响后续命令;修改或删除资源前先确认集群。
2. 资源列表
| |
资源名称取自对应列表的 NAME 列。Node、PV、StorageClass 和 CRD 属于集群范围,不需要 -n;CRD 是资源类型的定义,查实例要用它注册的资源名。
get pods 输出示例:
| |
READY:就绪容器数 / 总数;RESTARTS:重启次数;AGE:Pod 对象存在时长。Running不保证应用可用;CrashLoopBackOff表示容器反复退出后正在延迟重启,需要查详情和日志。
筛选与观察:
| |
3. 详情与配置
| |
describe pod 的异常输出节选:
| |
这里上一次容器以退出码 1 结束,具体原因继续看日志。describe 不支持 -o wide;扩展列表用 get -o wide。
| 现象 | 优先检查 |
|---|---|
Pending | 调度事件、资源申请、PVC |
ImagePullBackOff | 镜像地址、仓库认证、网络 |
CrashLoopBackOff | 上一次日志、退出码、启动配置、探针 |
Running 但未就绪 | readiness probe、容器状态、依赖服务 |
事件里的 Insufficient cpu 表示资源申请无法满足,不等于实时 CPU 已满。重复事件可能聚合,创建时间也不等于最后发生时间。
4. 容器日志
| |
容器名可从 describe pod 的 Containers 部分查看;多容器 Pod 用 -c 指定。上述参数可组合,例如同时使用 -f --tail=100。
Nginx 容器的 --previous 日志示例:
| |
这条错误指向 Nginx 配置第 12 行。--previous 只查同一 Pod 上一个已终止的容器实例,不能找回已删除 Pod 的日志。logs 读取标准输出和标准错误,不会自动读取应用的日志文件。
5. 容器操作
| |
将 【命令】 换成 nginx -v,在装有 Nginx 的容器中执行,输出示例:
| |
-- 后面是容器内命令,镜像中必须有相应程序。容器名取自 describe pod 的 Containers 部分。cp 要求容器有 tar、目标路径可写,可能覆盖同名文件;成功时通常没有输出。
6. 服务访问
| |
查询名为 web 的 Service 及其 EndpointSlice,列表输出示例:
| |
<none> 表示没有外部 IP。访问失败时,检查 selector、端口和后端就绪状态。Service 的 port 是访问端口,targetPort 指向容器监听端口,两者可以不同。
临时转发到本机:
| |
本机端口设为 8080、Service 端口设为 80,且对应 Pod 的 80 端口时,输出示例:
| |
Service 需有 selector。按示例端口设置后,保持终端运行,在本机访问 http://127.0.0.1:8080。默认只监听本机,Ctrl+C 停止,选中的 Pod 终止后需重连;转发成功不代表常规 Service 访问链路正常。
7. 创建与更新
| |
创建命名空间内的资源时,命名空间需先存在。create 遇到同名对象会报错;apply 可更新已有对象。apply 更新 Deployment 的输出示例:
| |
created / configured / unchanged 分别表示新建、已更新、无变化;不代表应用已就绪,可用 kubectl rollout status deployment/【名称】 -n 【命名空间】 确认。diff 退出码 1 表示有差异,不是执行失败。临时修改线上对象后,应同步配置来源,避免后续部署覆盖。
8. 发布管理
| |
rollout status 成功输出:
| |
scaled只说明期望副本数已修改,仍需检查实际就绪数量。- 镜像值不变不会触发新发布。滚动更新能否保持服务可用,取决于副本、探针、更新策略和容量。
- 回滚恢复仍保留的历史 Pod 模板,不恢复副本数、数据库或独立 ConfigMap;修订号也不是镜像版本。回滚后同样检查
rollout status。
9. 用量与配额
| |
两条命令的输出示例:
| |
top 依赖资源指标 API,通常由 Metrics Server 提供。1000m 等于一个 CPU 核,Mi 是 MiB;describe node 中的容量和 Requests/Limits 不是实时用量。
命名空间配额与限制:
| |
describe resourcequota 输出节选:
| |
Hard 是上限,Used 是对应项目的已用额度;requests.cpu 统计申请量,不是实际 CPU 消耗。
10. 自动扩缩容
按 CPU 利用率自动扩缩容,需要集群提供 CPU 指标,并为容器设置 CPU requests。以下创建命令使用 kubectl 1.34 起支持的 --cpu 参数。
| |
最小副本数为 2、最大为 5、CPU 利用率目标为 80% 时,get hpa 输出示例:
| |
45%/80% 分别是当前平均利用率和目标利用率,都以 CPU requests 为基准,不是节点总 CPU。HPA 受容差和稳定窗口等影响,并非达到目标就立即扩容;手工 scale 和清单中的 replicas 也可能与 HPA 相互覆盖。
11. 标签与注解
| |
添加标签的输出示例:
| |
标签用于筛选,注解保存附加信息。直接修改 Pod 标签不会修改 Deployment 模板;要让后续 Pod 也带上标签,修改 spec.template.metadata.labels。改标签前注意 Service、网络策略等选择器的关联。
12. 删除资源
| |
删除 Pod 的输出示例:
| |
- 受 Deployment 等控制器管理的 Pod 通常会被重新创建;独立 Pod 不会因此自动重建。
- 删除静态 Pod 的 API 镜像对象,不能停止节点上的静态 Pod,需处理节点配置。
--force --grace-period=0强制移除 API 对象,不保证节点进程已停止,可能造成新旧实例同时运行。
13. 节点维护
| |
维护 worker-1 节点时,drain 成功输出节选:
| |
先确认其他节点容量和应用中断条件,等 drain 成功结束后再维护。PDB(中断预算)、独立 Pod、emptyDir 都可能阻止完成;DaemonSet Pod 和静态 Pod 的镜像对象不会被它删除。
--delete-emptydir-data 表示接受丢弃临时卷数据;drain --force 允许处理没有控制器等情况,并不绕过 PDB,不能当作通用修复选项。
节点标签与污点:
| |
给节点添加 NoSchedule 污点后,新 Pod 必须配置匹配的容忍规则(toleration),才能被调度到该节点;已经运行的 Pod 不会因此被驱逐。
标签需配合节点选择规则;污点与 cordon 独立,移除一个不会清除另一个。
评论
使用 GitHub 登录后参与讨论,评论将公开保存在 GitHub。
站长管理删除会同步到 GitHub,无法撤销。
阅读到这里时加载评论。