KER - 学习空间
首页
文章
分类 ▾
前沿科技
编程开发
人工智能
羊毛福利
运维管理
闲语杂谈
登录
OpenStack/K8s 故障排查命令速查
作者:KER
发布于 2026-05-21 03:38:23
OpenStack运维
Kubernetes排错
虚拟机重置
DHCP修复
命令速查
← 返回文章列表
# OpenStack/K8s 故障排查常用命令速查 干运维这行,手头没几个顺手的命令是真不行。不管是虚拟机抽风还是网络断开,能快速定位问题、执行恢复才是硬道理。下面整理了一份我日常用得比较多的命令集,有些坑踩过才知道,直接上干货。 ## 虚拟机与存储操作 ### 1. 虚拟机卡死?先重置状态 虚拟机有时候会进入错误状态,导致无法操作。这时候别急着删,先试试重置它的状态。 ```bash # 重置虚拟机状态为 ACTIVE,仅修改状态,不影响实际运行 nova reset-state <主机ID> ``` > **注意**:这只是把状态标记改回来,如果虚拟机本身已经宕机,还需要配合 `nova start` 或 `nova reboot` 使用。 ### 2. 定位虚拟机在哪台物理机上 查到了主机ID,但不知道它跑在哪个K8s节点上?用这个。 ```bash nova show <主机ID> ``` 在输出中查找 `OS-DCF:kernel_id` 和 `OS-EXT-SRV-ATTR:host` 字段,就能找到对应的计算节点。 ### 3. 云盘(卷)操作 #### 克隆一个卷 需要复制一块云盘?基于现有卷创建一个一模一样的(需保持大小一致)。 ```bash # 克隆卷 cinder create --source-volid <源卷ID> --name <新卷名> <大小GB> # 例: 克隆ID为5523c9a3的卷,创建名为test的新卷,大小100GB cinder create --source-volid 5523c9a3-3132-48a9-a790-a1b810eb2350 --name test 100 ``` #### 查看卷挂载到了哪台虚拟机 ```bash nova volume-attachments <主机ID> ``` #### 卷状态卡住了?手动重置 如果卷因为异常操作卡在 `in-use` 或 `error` 状态,可以尝试重置。 ```bash # 强制重置卷状态为 in-use (或 available) cinder reset-state --state in-use <卷ID> ``` --- ## Kubernetes 节点与Pod运维 ### 4. 查看集群节点状态 第一步永远是确认集群整体状况。 ```bash kubectl get nodes ``` `STATUS` 为 `Ready` 才表示节点正常。 ### 5. 深入查看单个节点详情 发现某个节点状态不对?看看它的详细报告,包括资源使用、事件和已运行的Pod。 ```bash kubectl describe node <node-name> ``` 关注 `Conditions`(如 MemoryPressure)和 `Events` 部分,通常是问题根源。 ### 6. 列出指定节点上的所有Pod 快速查看某个节点上跑了哪些服务。 ```bash kubectl get pods --all-namespaces -o wide --field-selector spec.nodeName=<node-name> ``` `-o wide` 会显示Pod的IP和所在节点,方便定位。 ### 7. 清理已驱逐或错误的Pod 有些Pod会因为资源不足等原因被节点驱逐(状态为 `Evicted`)或出错。可以用下面这个一行命令批量清理它们。 ```bash # 查找所有Error或Evicted状态的Pod,并执行删除 kubectl get pod -A | grep -E "(Error|Evicted)" | awk '{print "kubectl delete pod -n "$1" "$2}' | xargs -L1 -I f sh -c f ``` **流程解析:** ```mermaid graph TD A[执行 kubectl get pod -A] --> B[通过 grep 过滤出<br>含 'Error' 或 'Evicted' 的行] B --> C[用 awk 拼接成<br>完整的 kubectl delete 命令] C --> D[用 xargs 逐行执行这些删除命令] ``` --- ## 云电脑网络修复专项 网络问题最烦人,尤其是DHCP分配失败导致整个子网的云电脑无法联网。以下是修复一个特定网段(以`fusion_vlan3104`为例)的典型步骤。 ```mermaid flowchart TD A[开始修复: 检查目标网络的DHCP Agent] --> B{网络是否绑定在<br>健康的DHCP Agent上?} B -- 是 --> C[检查Agent日志或网络本身] B -- 否/异常 --> D[执行解绑操作] D --> E[查找可用的健康DHCP Agent] E --> F[将网络重新绑定到新Agent] F --> G[验证修复结果] ``` **具体命令:** ```bash # 1. 查看目标网络被哪些DHCP Agent管理 neutron dhcp-agent-list-hosting-net fusion_vlan3104 # 2. 解绑网络与DHCP Agent的关系 (使用上面查到的Agent ID和网络名) neutron dhcp-agent-network-remove <dhcp-agent-id> fusion_vlan3104 # 3. 列出所有网络Agent,找到状态为 'alive' 的dhcp-agent openstack network agent list | grep dhcp # 4. 将网络绑定到新的、健康的DHCP Agent上 neutron dhcp-agent-network-add <新的健康dhcp-agent-id> fusion_vlan3104 ``` > **运维心得**:修复后,最好重启一下受影响虚拟机的网络或重启NetworkManager服务,确保它能重新获取IP。 --- OpenStack运维, Kubernetes排错, 虚拟机重置, DHCP修复, 命令速查