一键导入
openshift-node-operations
Node lifecycle management with focus on safe drain procedures, automated-vs-manual infrastructure decisions, and node failure diagnosis.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Node lifecycle management with focus on safe drain procedures, automated-vs-manual infrastructure decisions, and node failure diagnosis.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Report a bug in Jira without fixing it — creates a Bug ticket with proper description, links it to an epic, and assigns it. Use when the user says 'report a bug', 'file a bug', 'log a bug', 'open a bug ticket', or wants to track a bug without immediately writing a fix.
Plan and troubleshoot OpenShift cluster upgrades with focus on irreversibility, upgrade-path validation, and stuck-upgrade diagnosis.
Diagnose OpenShift cluster issues using layered triage, failure-mode classification, and prioritized diagnostic workflows.
Diagnose degraded cluster operators and failing OLM operators using status-triple analysis, CSV lifecycle debugging, and OLM component triage.
Manage DCI jobs, components, Jira tickets, GitHub/GitLab issues, Red Hat support cases, and Google Drive docs via the dci-mcp-server MCP integration
Google Drive: Upload a file with automatic metadata.
| name | openshift-node-operations |
| description | Node lifecycle management with focus on safe drain procedures, automated-vs-manual infrastructure decisions, and node failure diagnosis. |
This fork affects EVERY node operation. Determine it first.
maxUnavailable: 0 or minAvailable equal to current replica count will block drain silently — it just hangs. Run oc get pdb -A and check if any PDB protects pods on your target node.--grace-period explicitly for databases and message queues.--force loses data. Force drain deletes pods with emptyDir volumes without waiting for graceful shutdown. Only use for node decommission, never for maintenance where you expect the node to return.--delete-emptydir-data is required for most drains because system pods (metrics, logging) use emptyDir. Without this flag, drain refuses to proceed. This is safe — it's the user-data emptyDir volumes you need to worry about, and --force is what skips their graceful handling.Scale the MachineSet: oc scale machineset <name> -n openshift-machine-api --replicas=<N>. Monitor the Machine status (not just node status) — a Machine stuck in "Provisioning" means the cloud provider call failed (quota, network, AMI issues).
After provisioning and booting with ignition, watch for TWO rounds of CSRs:
Both must be approved. Don't bulk-approve with xargs in production without inspecting each CSR — a rogue CSR could grant access to an unauthorized node.
Delete the Machine object, NOT the node object. The MachineSet controller notices the replica count is short and creates a replacement automatically. Deleting just the node object orphans the underlying VM — it keeps running and costing money but the cluster doesn't know about it.
Cordon → drain → oc delete node <name> → decommission the hardware/VM. The cluster does not manage the underlying infrastructure, so deleting the node object is the final cluster-side step.
For automated infra, simply deleting the Machine triggers replacement. For manual infra, you must provision a new machine from scratch (RHCOS + ignition + CSR approval + labeling).
When a node shows NotReady, check in this order (most common causes first):
/var/lib/containers/ fills up from accumulated images. Clean with crictl rmi --prune via oc debug node/. Also check journal size — journalctl --vacuum-time=3d reclaims space.oc adm top pods -A — it may be system workloads (monitoring, logging) not user pods causing pressure.oc debug node/<name>, then chroot /host && systemctl status kubelet. Check journalctl -u kubelet for the actual error.oc get csr — pending CSRs for the node indicate cert renewal problems.spec.template.spec.metadata.labels.oc debug node/ creates a privileged pod on the node. If the node can't schedule pods (disk full, kubelet down), debug won't work either. In that case, SSH is the only option.