PageSourceSearch

https://wavek8s.com/_next/static/chunks/pages/docs/wave-diagnosis/pod-scheduling-delay-d96158790fe4e209.js

js wavek8s.com collected 2026-10-03 21:14:42 UTC 143,256 bytes, 1 lines download raw bytes

1(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[4298],{75746:function(e,t,a){(window.__NEXT_P=window.__NEXT_P||[]).push(["/docs/wave-diagnosis/pod-scheduling-delay",function(){return a(74992)}])},74992:function(e,t,a){"use strict";a.r(t),a.d(t,{__toc:function(){return d}});var i=a(85893),n=a(4882),o=a(1603),r=a(84943);a(29488);var s=a(82643),l=a(52154);let d=[{depth:2,value:"The Scheduling Delays page",id:"the-scheduling-delays-page"},{depth:2,value:"Expandable row details",id:"expandable-row-details"},{depth:2,value:"Common Scheduling Failure Reasons",id:"common-scheduling-failure-reasons"},{depth:2,value:"Related",id:"related"}];function c(e){let t=Object.assign({h1:"h1",p:"p",strong:"strong",h2:"h2",ul:"ul",li:"li",ol:"ol",code:"code",pre:"pre",span:"span",a:"a"},(0,s.a)(),e.components);return l.mQ||u("Tabs",!1),l.mQ.Tab||u("Tabs.Tab",!0),(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(t.h1,{children:"Pod Scheduling Delay Detection"}),"\n",(0,i.jsxs)(t.p,{children:["A pod that sits in ",(0,i.jsx)(t.strong,{children:"Pending"})," is a deployment that has not happened yet. ",(0,i.jsx)(t.strong,{children:"Pod Scheduling Delay Detection"})," tracks every pod that waited longer than expected to schedule, how long it waited, and the exact scheduler conditions behind it, so you can tell a genuine capacity shortage from a misconfigured pod spec without reading raw events. It works per workload, in real time, and needs no warm-up period."]}),"\n",(0,i.jsxs)(t.p,{children:["Open it under ",(0,i.jsx)(t.strong,{children:"Wave Diagnosis"})," in the sidebar, then ",(0,i.jsx)(t.strong,{children:"Scheduling Delays"}),". The cluster selector and date-range picker (the last seven days by default) scope the chart and table; the finding banner and KPI cards summarize the last 24 hours."]}),"\n",(0,i.jsx)(t.h2,{id:"the-scheduling-delays-page",children:"The Scheduling Delays page"}),"\n",(0,i.jsx)("img",{className:"mx-auto rounded-lg shadow-md",src:"/docs/wave-diagnosis/pod-scheduling-delay-overview.png",alt:"Scheduling Delays page with the finding banner, KPI cards, Average Pending Time by Hour chart, and the delays table"}),"\n",(0,i.jsxs)(t.p,{children:[(0,i.jsx)(t.strong,{children:"Finding banner."}),' A one-line answer to "Why are pods stuck pending?" with how many pods waited, and for how long, in the last 24 hours.']}),"\n",(0,i.jsxs)(t.p,{children:[(0,i.jsx)(t.strong,{children:"KPI cards."})," Four numbers give the shape of the problem at a glance:"]}),"\n",(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.strong,{children:"Total Delays"}),": pods that experienced a scheduling delay in range."]}),"\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.strong,{children:"Average Delay Time"}),": mean time spent in Pending before scheduling or deletion."]}),"\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.strong,{children:"Resolved Count"}),": delays that cleared (the pod eventually scheduled)."]}),"\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.strong,{children:"Unresolved Count"}),": delays still pending. A rising number here means active, ongoing scheduling problems."]}),"\n"]}),"\n",(0,i.jsxs)(t.p,{children:[(0,i.jsx)(t.strong,{children:"Average Pending Time by Hour."})," An hourly area chart of mean pending time across the selected range. Use it to spot when delays cluster, for example around deploy windows or peak hours, and to confirm that a fix actually moved the line."]}),"\n",(0,i.jsxs)(t.p,{children:[(0,i.jsx)(t.strong,{children:"Delays table."})," One row per delayed pod, sortable and filterable: ",(0,i.jsx)(t.strong,{children:"Pod Creation Time"}),", ",(0,i.jsx)(t.strong,{children:"Scheduling Delay"}),", ",(0,i.jsx)(t.strong,{children:"Workload Type"}),", ",(0,i.jsx)(t.strong,{children:"Namespace"}),", ",(0,i.jsx)(t.strong,{children:"Workload Name"}),", ",(0,i.jsx)(t.strong,{children:"Pod Name"}),", ",(0,i.jsx)(t.strong,{children:"Current Status"})," (Resolved or Pending), ",(0,i.jsx)(t.strong,{children:"Latest Pod Condition"}),", and ",(0,i.jsx)(t.strong,{children:"Volume Issues"}),". Filter by workload type, namespace, workload name, or status to isolate one problem."]}
1),"\n",(0,i.jsx)(t.h2,{id:"expandable-row-details",children:"Expandable row details"}),"\n",(0,i.jsxs)(t.p,{children:["Click the ",(0,i.jsx)(t.strong,{children:"+"})," on any row to expand the full diagnosis for that pod."]}),"\n",(0,i.jsx)("img",{className:"mx-auto rounded-lg shadow-md",src:"/docs/wave-diagnosis/pod_scheduling_table_expanded.jpg",alt:"Expanded scheduling-delay row showing conditions history, volume binding history, and timestamps"}),"\n",(0,i.jsxs)(t.ol,{children:["\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.strong,{children:"Conditions history"})," lists every scheduler condition in chronological order, each with a timestamp, a color-coded badge (type, reason, status), and the scheduler's own message, for example ",(0,i.jsx)(t.code,{children:"0/5 nodes are available: 2 Insufficient cpu, 3 node(s) had taint that the pod did not tolerate"}),". Reading it top to bottom shows how the delay evolved."]}),"\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.strong,{children:"Volume binding history"})," appears only for pods that use PersistentVolumeClaims. For each pending PVC it shows the name and namespace, the binding ",(0,i.jsx)(t.strong,{children:"phase"}),", the requested ",(0,i.jsx)(t.strong,{children:"storage"})," and class, and the ",(0,i.jsx)(t.strong,{children:"binding failure reason"})," (for example, no available volumes or a zone mismatch)."]}),"\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.strong,{children:"Timestamps"})," summarize the pod creation time, the last detection time, and when the delay resolved."]}),"\n"]}),"\n",(0,i.jsx)(t.h2,{id:"common-scheduling-failure-reasons",children:"Common Scheduling Failure Reasons"}),"\n",(0,i.jsxs)(t.p,{children:["The ",(0,i.jsx)(t.strong,{children:"Latest Pod Condition"})," column and the conditions history surface the scheduler's own reason. Match it against the family below and apply the fix."]}),"\n",(0,i.jsxs)(l.mQ,{items:["Insufficient Resources","Affinity/Anti-Affinity","Volume Binding","Taints/Tolerations","Other"],children:[(0,i.jsxs)(l.mQ.Tab,{children:[(0,i.jsx)(t.p,{children:(0,i.jsx)(t.strong,{children:"Condition messages"})}),(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.code,{children:"PodExceedsFreeCPU"})," / ",(0,i.jsx)(t.code,{children:"PodExceedsFreeMemory"})]}),"\n",(0,i.jsx)(t.li,{children:'"Insufficient CPU" or "Insufficient memory"'}),"\n"]}),(0,i.jsx)(t.p,{children:(0,i.jsx)(t.strong,{children:"Root causes"})}),(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsx)(t.li,{children:"No node has enough free CPU or memory to satisfy the pod's resource requests"}),"\n",(0,i.jsx)(t.li,{children:"Pod count limit reached (max pods per node)"}),"\n",(0,i.jsx)(t.li,{children:"Cluster at capacity during peak usage"}),"\n"]}),(0,i.jsx)(t.p,{children:(0,i.jsx)(t.strong,{children:"Quick fixes"})}),(0,i.jsx)(t.p,{children:"Emergency (immediate):"}),(0,i.jsx)(t.pre,{"data-language":"bash","data-theme":"default",children:(0,i.jsxs)(t.code,{"data-language":"bash","data-theme":"default",children:[(0,i.jsx)(t.span,{className:"line",children:(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-comment)"},children:"# Delete unused pods to free resources"})}),"\n",(0,i.jsxs)(t.span,{className:"line",children:[(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-function)"},children:"kubectl"}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-string)"},children:"delete"}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-string)"},children:"pod"}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-keyword)"},children:"<"}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-string)"},children:"unused-po"}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:"d"}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-keyword)"},children:">"}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-string)"},children:"-n"}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-keyword)"},children:"<"}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-string)"},children:"namespac"}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:"e"}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-keyword)"},children:">"})]}),"\n",(0,i.jsx)(t.span,{className:"line",children:" "}),"\n",(0,i.jsx)(t.span,{className:"line",children:(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-comment)"},children:"# Reduce resource requests temporarily"})}),"\n",(0,i.jsxs)(t.span,{className:"line",children:[(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-function)"},children:"kubectl"}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-string)"},children:"set"}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-string)"},children:"resources"}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-string)"},children:"deployment"}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-keyword)"},children:"<"}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-string)"},children:"nam"}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:"e"}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-keyword)"},children:">"}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-string)"},children:"-c="}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-keyword)"},children:"<"}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-string)"},children:"container"}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-keyword)"},children:">"}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-string)"},children:"--requests=cpu=500m,memory=512Mi"})]})]})}),(0,i.jsx)(t.p,{children:"Sustainable (long-term):"}),(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsx)(t.li,{children:"Add more nodes to the cluster via your cloud provider"}),"\n",(0,i.jsx)(t.li,{children:"Enable Cluster Autoscaler for automatic node provisioning"}),"\n",(0,i.jsxs)(t.li,{children:["Use ",(0,i.jsx)(t.a,{href:"/docs/wave-sizing/overview",children:"Smart Sizing"})," to optimize resource requests"]}),"\n",(0,i.jsxs)(t.li,{children:["Review the ",(0,i.jsx)(t.a,{href:"/docs/wave-sizing/dashboard",children:"Sizing Console"})," for cluster-wide over-provisioning"]}),"\n"]})]}),(0,i.jsxs)(l.mQ.Tab,{children:[(0,i.jsx)(t.p,{children:(0,i.jsx)(t.strong,{children:"Condition messages"})}),(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.code,{children:"PodAffinityRulesNotMatch"})," / ",(0,i.jsx)(t.code,{children:"NodeSelectorNotMatch"})]}),"\n",(0,i.jsx)(t.li,{children:'"No nodes match pod affinity rules"'}),"\n"]}),(0,i.jsx)(t.p,{children:(0,i.jsx)(t.strong,{children:"Root causes"})}),(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsx)(t.li,{children:"Node selector specifies labels that no nodes have"}),"\n",(0,i.jsx)(t.li,{children:"Pod affinity requires co-location with pods that don't exist"}),"\n",(0,i.jsx)(t.li,{children:"Pod anti-affinity prevents scheduling on all available nodes"}),"\n",(0,i.jsx)(t.li,{children:"Topology constraints can't be satisfied"}),"\n"]}
1),(0,i.jsx)(t.p,{children:(0,i.jsx)(t.strong,{children:"Quick fixes"})}),(0,i.jsx)(t.p,{children:"Check current affinity rules:"}),(0,i.jsx)(t.pre,{"data-language":"bash","data-theme":"default",children:(0,i.jsxs)(t.code,{"data-language":"bash","data-theme":"default",children:[(0,i.jsxs)(t.span,{className:"line",children:[(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-function)"},children:"kubectl"}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-string)"},children:"get"}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-string)"},children:"pod"}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-keyword)"},children:"<"}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-string)"},children:"pod-nam"}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:"e"}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-keyword)"},children:">"}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-string)"},children:"-n"}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-keyword)"},children:"<"}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-string)"},children:"namespac"}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:"e"}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-keyword)"},children:">"}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-string)"},children:"-o"}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-string)"},children:"jsonpath="}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-string-expression)"},children:"'{.spec.affinity}'"})]}),"\n",(0,i.jsxs)(t.span,{className:"line",children:[(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-function)"},children:"kubectl"}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-string)"},children:"get"}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-string)"},children:"nodes"}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-string)"},children:"--show-labels"})]})]})}),(0,i.jsx)(t.p,{children:"Relax hard requirements to soft preferences:"}),(0,i.jsx)(t.pre,{"data-language":"yaml","data-theme":"default",children:(0,i.jsxs)(t.code,{"data-language":"yaml","data-theme":"default",children:[(0,i.jsx)(t.span,{className:"line",children:(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-comment)"},children:"# Change from requiredDuringSchedulingIgnoredDuringExecution"})}),"\n",(0,i.jsx)(t.span,{className:"line",children:(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-comment)"},children:"# to preferredDuringSchedulingIgnoredDuringExecution"})}),"\n",(0,i.jsxs)(t.span,{className:"line",children:[(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-keyword)"},children:"affinity"}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-keyword)"},children:":"})]}),"\n",(0,i.jsxs)(t.span,{className:"line",children:[(0,i.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:"  "}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-keyword)"},children:"nodeAffinity"}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-keyword)"},children:":"})]}),"\n",(0,i.jsxs)(t.span,{className:"line",children:[(0,i.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:"    "}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-keyword)"},children:"preferredDuringSchedulingIgnoredDuringExecution"}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-keyword)"},children:":"})]}),"\n",(0,i.jsxs)(t.span,{className:"line",children:[(0,i.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:"    - "}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-keyword)"},children:"weight"}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-keyword)"},children:":"}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-constant)"},children:"100"})]}),"\n",(0,i.jsxs)(t.span,{className:"line",children:[(0,i.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:"      "}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-keyword)"},children:"preference"}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-keyword)"},children:":"})]}),"\n",(0,i.jsxs)(t.span,{className:"line",children:[(0,i.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:"        "}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-keyword)"},children:"matchExpressions"}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-keyword)"},children:":"})]}),"\n",(0,i.jsxs)(t.span,{className:"line",children:[(0,i.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:"        - "}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-keyword)"},children:"key"}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-keyword)"},children:":"}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-string-expression)"},children:"disktype"})]}),"\n",(0,i.jsxs)(t.span,{className:"line",children:[(0,i.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:"          "}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-keyword)"},children:"operator"}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-keyword)"},children:":"}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-string-expression)"},children:"In"})]}),"\n",(0,i.jsxs)(t.span,{className:"line",children:[(0,i.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:"          "}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-keyword)"},children:"values"}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-keyword)"},children:":"}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:" ["}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-string)"},children:"ssd"}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:"]"})]})]})}),(0,i.jsx)(t.p,{children:"Or add the missing labels to nodes:"}),(0,i.jsx)(t.pre,{"data-language":"bash","data-theme":"default",children:(0,i.jsx)(t.code,{"data-language":"bash","data-theme":"default",children:(0,i.jsxs)(t.span,{className:"line",children:[(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-function)"},children:"kubectl"}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-string)"},children:"label"}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-string)"},children:"nodes"}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-keyword)"},children:"<"}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-string)"},children:"node-nam"}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:"e"}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-keyword)"},children:">"}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-string)"},children:"disktype=ssd"})]})})})]}),(0,i.jsxs)(l.mQ.Tab,{children:[(0,i.jsx)(t.p,{children:(0,i.jsx)(t.strong,{children:"Condition messages"})}),(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.code,{children:"VolumeBindingFailed"})," / ",(0,i.jsx)(t.code,{children:"PersistentVolumeClaimNotFound"})]}),"\n",(0,i.jsx)(t.li,{children:'"PVC not bound" or "Volume zone mismatch"'}),"\n"]}),(0,i.jsx)(t.p,{children:(0,i.jsx)(t.strong,{children:"Root causes"})}),(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsx)(t.li,{children:"PVC waiting for the PV provisioner to create the volume"}),"\n",(0,i.jsx)(t.li,{children:"PV exists but in a different availability zone than the node"}),"\n",(0,i.jsx)(t.li,{children:"Storage class doesn't support dynamic provisioning"}),"\n",(0,i.jsx)(t.li,{children:"Volume capacity exhausted (no available PVs)"}),"\n"]}
1),(0,i.jsx)(t.p,{children:(0,i.jsx)(t.strong,{children:"Quick fixes"})}),(0,i.jsx)(t.p,{children:"Diagnose PVC status:"}),(0,i.jsx)(t.pre,{"data-language":"bash","data-theme":"default",children:(0,i.jsxs)(t.code,{"data-language":"bash","data-theme":"default",children:[(0,i.jsxs)(t.span,{className:"line",children:[(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-function)"},children:"kubectl"}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-string)"},children:"get"}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-string)"},children:"pvc"}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-string)"},children:"-n"}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-keyword)"},children:"<"}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-string)"},children:"namespac"}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:"e"}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-keyword)"},children:">"})]}),"\n",(0,i.jsxs)(t.span,{className:"line",children:[(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-function)"},children:"kubectl"}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-string)"},children:"describe"}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-string)"},children:"pvc"}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-keyword)"},children:"<"}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-string)"},children:"pvc-nam"}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:"e"}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-keyword)"},children:">"}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-string)"},children:"-n"}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-keyword)"},children:"<"}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-string)"},children:"namespac"}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:"e"}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-keyword)"},children:">"})]}),"\n",(0,i.jsx)(t.span,{className:"line",children:" "}),"\n",(0,i.jsx)(t.span,{className:"line",children:(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-comment)"},children:"# Check storage class and provisioner"})}),"\n",(0,i.jsxs)(t.span,{className:"line",children:[(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-function)"},children:"kubectl"}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-string)"},children:"get"}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-string)"},children:"storageclass"}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-keyword)"},children:"<"}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-string)"},children:"clas"}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:"s"}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-keyword)"},children:">"}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-string)"},children:"-o"}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-string)"},children:"jsonpath="}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-string-expression)"},children:"'{.provisioner}'"})]}),"\n",(0,i.jsxs)(t.span,{className:"line",children:[(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-function)"},children:"kubectl"}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-string)"},children:"get"}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-string)"},children:"pods"}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-string)"},children:"-n"}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-string)"},children:"kube-system"}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-keyword)"},children:"|"}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-function)"},children:"grep"}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-string)"},children:"provisioner"})]})]})}),(0,i.jsx)(t.p,{children:"Check zone alignment:"}),(0,i.jsx)(t.pre,{"data-language":"bash","data-theme":"default",children:(0,i.jsxs)(t.code,{"data-language":"bash","data-theme":"default",children:[(0,i.jsx)(t.span,{className:"line",children:(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-comment)"},children:"# Verify PV and node are in the same zone"})}),"\n",(0,i.jsxs)(t.span,{className:"line",children:[(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-function)"},children:"kubectl"}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-string)"},children:"get"}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-string)"},children:"pv"}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-keyword)"},children:"<"}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-string)"},children:"pv-nam"}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:"e"}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-keyword)"},children:">"}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-string)"},children:"-o"}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-string)"},children:"jsonpath="}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-string-expression)"},children:"'{.metadata.labels.topology\\.kubernetes\\.io/zone}'"})]}),"\n",(0,i.jsxs)(t.span,{className:"line",children:[(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-function)"},children:"kubectl"}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-string)"},children:"get"}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-string)"},children:"node"}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-keyword)"},children:"<"}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-string)"},children:"node-nam"}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:"e"}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-keyword)"},children:">"}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-string)"},children:"-o"}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-string)"},children:"jsonpath="}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-string-expression)"},children:"'{.metadata.labels.topology\\.kubernetes\\.io/zone}'"})]})]})}),(0,i.jsxs)(t.p,{children:["See also: ",(0,i.jsx)(t.a,{href:"/docs/wave-diagnosis/pv-capacity-forecast",children:"PV Capacity Forecast"}
1)," for storage capacity planning."]})]}),(0,i.jsxs)(l.mQ.Tab,{children:[(0,i.jsx)(t.p,{children:(0,i.jsx)(t.strong,{children:"Condition messages"})}),(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsx)(t.li,{children:(0,i.jsx)(t.code,{children:"PodToleratesNodeTaints"})}),"\n",(0,i.jsx)(t.li,{children:'"Node has taints that the pod doesn\'t tolerate"'}),"\n"]}),(0,i.jsx)(t.p,{children:(0,i.jsx)(t.strong,{children:"Root causes"})}),(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsxs)(t.li,{children:["Node has taints (for example, ",(0,i.jsx)(t.code,{children:"node-role.kubernetes.io/master:NoSchedule"}),")"]}),"\n",(0,i.jsx)(t.li,{children:"Pod doesn't have matching tolerations"}),"\n",(0,i.jsx)(t.li,{children:"All nodes have taints the pod can't tolerate"}),"\n"]}),(0,i.jsx)(t.p,{children:(0,i.jsx)(t.strong,{children:"Quick fixes"})}),(0,i.jsx)(t.p,{children:"Check node taints:"}),(0,i.jsx)(t.pre,{"data-language":"bash","data-theme":"default",children:(0,i.jsx)(t.code,{"data-language":"bash","data-theme":"default",children:(0,i.jsxs)(t.span,{className:"line",children:[(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-function)"},children:"kubectl"}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-string)"},children:"describe"}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-string)"},children:"node"}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-keyword)"},children:"<"}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-string)"},children:"node-nam"}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:"e"}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-keyword)"},children:">"}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-keyword)"},children:"|"}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-function)"},children:"grep"}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-string)"},children:"Taints"})]})})}),(0,i.jsx)(t.p,{children:"Add a toleration to the pod:"}),(0,i.jsx)(t.pre,{"data-language":"yaml","data-theme":"default",children:(0,i.jsxs)(t.code,{"data-language":"yaml","data-theme":"default",children:[(0,i.jsxs)(t.span,{className:"line",children:[(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-keyword)"},children:"spec"}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-keyword)"},children:":"})]}),"\n",(0,i.jsxs)(t.span,{className:"line",children:[(0,i.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:"  "}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-keyword)"},children:"template"}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-keyword)"},children:":"})]}),"\n",(0,i.jsxs)(t.span,{className:"line",children:[(0,i.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:"    "}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-keyword)"},children:"spec"}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-keyword)"},children:":"})]}),"\n",(0,i.jsxs)(t.span,{className:"line",children:[(0,i.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:"      "}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-keyword)"},children:"tolerations"}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-keyword)"},children:":"})]}),"\n",(0,i.jsxs)(t.span,{className:"line",children:[(0,i.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:"      - "}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-keyword)"},children:"key"}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-keyword)"},children:":"}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-string-expression)"},children:'"dedicated"'})]}),"\n",(0,i.jsxs)(t.span,{className:"line",children:[(0,i.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:"        "}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-keyword)"},children:"operator"}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-keyword)"},children:":"}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-string-expression)"},children:'"Equal"'})]}),"\n",(0,i.jsxs)(t.span,{className:"line",children:[(0,i.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:"        "}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-keyword)"},children:"value"}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-keyword)"},children:":"}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-string-expression)"},children:'"gpu"'})]}),"\n",(0,i.jsxs)(t.span,{className:"line",children:[(0,i.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:"        "}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-keyword)"},children:"effect"}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-keyword)"},children:":"}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-string-expression)"},children:'"NoSchedule"'})]})]})}),(0,i.jsx)(t.p,{children:"Or remove the taint from the node:"}),(0,i.jsx)(t.pre,{"data-language":"bash","data-theme":"default",children:(0,i.jsx)(t.code,{"data-language":"bash","data-theme":"default",children:(0,i.jsxs)(t.span,{className:"line",children:[(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-function)"},children:"kubectl"}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-string)"},children:"taint"}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-string)"},children:"nodes"}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-keyword)"},children:"<"}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-string)"},children:"node-nam"}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:"e"}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-keyword)"},children:">"}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-color-text)"},children:" "}),(0,i.jsx)(t.span,{style:{color:"var(--shiki-token-string)"},children:"dedicated=gpu:NoSchedule-"})]})})})]}),(0,i.jsxs)(l.mQ.Tab,{children:[(0,i.jsx)(t.p,{children:(0,i.jsx)(t.strong,{children:"Node Not Ready"})}),(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsx)(t.li,{children:"The node is NotReady due to kubelet failure, network issues, or disk pressure."}),"\n",(0,i.jsxs)(t.li,{children:["Check ",(0,i.jsx)(t.code,{children:"kubectl describe node 
1<node-name>"}),", restart kubelet, or replace the node."]}),"\n"]}),(0,i.jsx)(t.p,{children:(0,i.jsx)(t.strong,{children:"Resource Quotas"})}),(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsx)(t.li,{children:"The namespace has a ResourceQuota limiting total CPU or memory."}),"\n",(0,i.jsxs)(t.li,{children:["Check ",(0,i.jsx)(t.code,{children:"kubectl describe quota -n <namespace>"}),", then raise the quota or delete unused pods."]}),"\n"]}),(0,i.jsx)(t.p,{children:(0,i.jsx)(t.strong,{children:"Priority Preemption"})}),(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsx)(t.li,{children:"A low-priority pod is waiting for higher-priority pods to schedule first."}),"\n",(0,i.jsx)(t.li,{children:"Raise the pod's priority class, or wait for preemption to complete."}),"\n"]}),(0,i.jsx)(t.p,{children:(0,i.jsx)(t.strong,{children:"Image Pull Issues"})}),(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsx)(t.li,{children:"ImagePullBackOff or ErrImagePull is not a scheduling issue, but it shows up in pod conditions."}),"\n",(0,i.jsx)(t.li,{children:"Verify the image exists, check registry credentials, and confirm nodes can reach the registry."}),"\n"]})]})]}),"\n",(0,i.jsx)(t.h2,{id:"related",children:"Related"}),"\n",(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsx)(t.li,{children:(0,i.jsx)(t.a,{href:"/docs/wave-diagnosis/overview",children:"Wave Diagnosis Overview"})}),"\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.a,{href:"./cluster-resource-forecast",children:"Cluster Resource Forecast"}),": predict when capacity will run short."]}),"\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.a,{href:"./idle-node-detection",children:"Idle Node Detection"}),": delays despite idle nodes point to taints, labels, or affinity."]}),"\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.a,{href:"/docs/wave-diagnosis/pv-capacity-forecast",children:"PV Capacity Forecast"}),": volume-binding delays that trace back to storage exhaustion."]}),"\n"]})]})}function u(e,t){throw Error("Expected "+(t?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}let p={MDXContent:function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},{wrapper:t}=Object.assign({},(0,s.a)(),e.components);return t?(0,i.jsx)(t,{...e,children:(0,i.jsx)(c,{...e})}):c(e)},pageOpts:{filePath:"pages/docs/wave-diagnosis/pod-scheduling-delay.mdx",route:"/docs/wave-diagnosis/pod-scheduling-delay",frontMatter:{title:"Pod Scheduling Delay Detection",description:"Pod Scheduling Delay Detection tracks how long pods waited in Pending and why, with the exact scheduler conditions per workload, so you can tell a capacity shortage from a misconfigured pod spec at a glance.",searchable:!0},pageMap:[{kind:"MdxPage",name:"CLAUDE",route:"/CLAUDE"},{kind:"Meta",data:{index:{title:"Home",type:"page",display:"hidden",theme:{layout:"raw",navbar:!0}},solutions:{title:"Solutions",type:"page"},features:{title:"Features",type:"page"},pricing:{title:"Pricing",type:"page",theme:{layout:"raw",navbar:!0}},license:{title:"Free licence",type:"page",display:"hidden",theme:{layout:"raw",navbar:!0}},demo:{title:"Live Demo",type:"page",display:"hidden",theme:{layout:"raw",navbar:!0}},aws:{title:"AWS",type:"page",display:"hidden",theme:{layout:"raw",navbar:!0}},gpu:{title:"Wave GPU",type:"page",display:"hidden",theme:{layout:"raw",navbar:!0}},"ai-agent":{title:"Wave AI Agent",type:"page",display:"hidden",theme:{layout:"raw",navbar:!0}},docs:{title:"Docs",type:"page",href:"/docs/introduction"},"api-reference":{title:"API Reference",type:"page",href:"/api-reference",display:"hidden"},"korean-docs":{display:"hidden",type:"page",theme:{layout:"default",sidebar:!0,toc:!0}},blog:{title:"Blog",type:"page",href:"/blog"},"korean-blog":{display:"hidden",type:"page",theme:{layout:"default",sidebar:!0,toc:!0}},"japanese-blog":{display:"hidden",type:"page",theme:{layout:"default",sidebar:!0,toc:!0}},contact:{title:"Book a demo",type:"page"},"with-netfunnel":{title:"with NetFUNNEL",type:"page",href:"/contact/with-netfunnel",display:"hidden"},support:{title:"Support via Slack",type:"page",href:"https://waveautoscale.slack.com",newWindow:!0,display:"hidden"},company:{title:"Company",type:"page",href:"https://cloud.stclab.com",newWindow:!0},CLAUDE:{display:"hidden"}}},{kind:"MdxPage",name:"ai-agent",route:"/ai-agent",frontMatter:{title:"Wave AI Agent — an AI workflow that runs when an alert fires, and leaves a report | Wave",description:"Wave AI Agent runs a fixed four-step workflow inside the Wave console: a trigger, an AI agent, a report, and a notification. The agent investigates with built-in cluster tools and writes what it found and why. Bring your own 
1LLM, hosted or self-hosted in the cluster. Coming 2026 Q4.",searchable:!0}},{kind:"Folder",name:"api-reference",route:"/api-reference",children:[{kind:"Meta",data:{index:{title:"Home",type:"page",theme:{layout:"raw",toc:!1}}}},{kind:"MdxPage",name:"index",route:"/api-reference",frontMatter:{title:"API Reference",description:"Interactive Wave Autoscale v3 REST API reference—endpoints, schemas, and code samples to automate Kubernetes Day 2 operations programmatically.",searchable:!0}}]},{kind:"MdxPage",name:"aws",route:"/aws",frontMatter:{title:"Wave Autoscale for AWS EKS — Service Ready Partner & Marketplace",description:"Wave Autoscale is an AWS EKS Service Ready Partner available on AWS Marketplace. Automate Day 2 operations with ML-driven scaling, smart sizing, traffic control, and predictive insights for Amazon EKS.",searchable:!0}},{kind:"Folder",name:"blog",route:"/blog",children:[{kind:"MdxPage",name:"2025-01-13-why-kubernetes-automation-matters",route:"/blog/2025-01-13-why-kubernetes-automation-matters",frontMatter:{type:"posts",title:"Why Kubernetes Automation Matters: Simplify Complexity, Boost Productivity",date:"2025-01-13T00:00:00.000Z",author:"Hwansoo Kim",description:"Is your team overwhelmed by Kubernetes complexity? As containerized applications grow, managing Kubernetes at scale has become a massive challenge. Here’s why automation is not just helpful—it’s essential for modern cloud-native environments.",tags:["Kubernetes","Automation","Cloud-Native","DevOps"]}},{kind:"MdxPage",name:"2025-02-12-hpa-is-not-enough-for-your-kubernetes-operation",route:"/blog/2025-02-12-hpa-is-not-enough-for-your-kubernetes-operation",frontMatter:{type:"posts",title:"HPA Is Not Enough for Your Kubernetes Operation—Here’s Why",date:"2025-02-12T00:00:00.000Z",author:"Hwansoo Kim",description:"HPA is not enough for Kubernetes scaling! Learn why Horizontal Pod Autoscaler (HPA) struggles with slow response times, traffic prediction, and cost inefficiencies—and how Wave Autoscale uses AI to optimize scaling, reduce cloud waste, and improve performance. \uD83D\uDE80",tags:["Kubernetes","Automation","Cloud-Native","DevOps","HPA","VPA"]}},{kind:"MdxPage",name:"2025-04-04-what-llms-can-do-for-sres-in-cloud-native-infrastructure",route:"/blog/2025-04-04-what-llms-can-do-for-sres-in-cloud-native-infrastructure",frontMatter:{type:"posts",title:"What LLMs Can Do for SREs in Cloud Native Infrastructure",date:"2025-04-04T00:00:00.000Z",author:"Hwansoo Kim",description:"Discover how Large Language Models (LLMs) are reshaping cloud native operations by augmenting SRE workflows, enabling leaner teams to manage complex Kubernetes infrastructure with AI-powered automation.",tags:["Kubernetes","SRE","Cloud Native","Infrastructure Automation","AI in DevOps","Large Language Models","LLM","Kubernetes Scaling","Kubernetes Automation","AI Ops","Machine Learning","DevOps Tools","Wave Autoscale","Site Reliability Engineering","Pod Recovery","Smart Sizing","Horizontal Scaling","Vertical Scaling","Cloud Infrastructure","CNCF"]}},{kind:"MdxPage",name:"2025-04-23-wave-autoscale-2-4-0",route:"/blog/2025-04-23-wave-autoscale-2-4-0",frontMatter:{type:"posts",title:"Wave Autoscale 2.4.0",date:"2025-04-23",author:"Hwansoo Kim",description:"Wave Autoscale 2.4.0",tags:["Kubernetes","SRE","Cloud Native","Infrastructure Automation","AI in DevOps","Large Language Models","LLM","Kubernetes Scaling","Kubernetes Automation","AI Ops","Machine Learning","DevOps Tools","Wave Autoscale","Site Reliability Engineering","Pod Recovery","Smart Sizing","Horizontal Scaling","Vertical Scaling","Cloud Infrastructure","CNCF"]}},{kind:"MdxPage",name:"2025-05-13-wave-autoscale-2-5-0",route:"/blog/2025-05-13-wave-autoscale-2-5-0",frontMatter:{type:"posts",title:"Wave Autoscale 2.5.0",date:"2025-05-13",author:"Hwansoo Kim",description:"Wave Autoscale 2.5.0",tags:["Kubernetes","SRE","Cloud Native","Infrastructure Automation","Kubernetes Monitoring","AI in DevOps","Kubernetes Scaling","Kubernetes Automation","DevOps Tools","Wave Autoscale","Cluster Report","HPA Migration"]}},{kind:"MdxPage",name:"2025-06-24-wave-autoscale-2-6-0",route:"/blog/2025-06-24-wave-autoscale-2-6-0",frontMatter:{type:"posts",title:"Wave Autoscale 2.6.0",date:"2025-06-24",author:"Hwansoo Kim",description:"Wave Autoscale 2.6.0",tags:["Kubernetes","SRE","Cloud Native","Infrastru
1cture Automation","Kubernetes Monitoring","AI in DevOps","Kubernetes Scaling","Kubernetes Automation","DevOps Tools","Wave Autoscale","Istio","Autopilot","WASM"]}},{kind:"MdxPage",name:"2025-07-21-wave-autoscale-2-7-0",route:"/blog/2025-07-21-wave-autoscale-2-7-0",frontMatter:{type:"posts",title:"Wave Autoscale 2.7.0",date:"2025-07-21",author:"Hwansoo Kim",description:"Wave Autoscale 2.7.0 adds NetFUNNEL SaaS integration, Prometheus export, OpenShift fix, and Fargate support.",tags:["Kubernetes","SRE","Cloud Native","Infrastructure Automation","DevOps Tools","Wave Autoscale","NetFUNNEL","Prometheus","Grafana","AWS Fargate","OpenShift"]}},{kind:"MdxPage",name:"2025-11-28-wave-autoscale-3-0",route:"/blog/2025-11-28-wave-autoscale-3-0",frontMatter:{type:"posts",title:"Wave Autoscale 3.0",date:"2025-11-28",author:"Hwansoo Kim",description:"Wave Autoscale 3.0 delivers 40% cloud cost savings, 2x faster autoscaling than HPA, and comprehensive Day 2 operations automation from a single platform.",tags:["Kubernetes","SRE","Cloud Native","Infrastructure Automation","DevOps Tools","Wave Autoscale","Day 2 Operations","Autoscaling","EKS","Cost Optimization"]}},{kind:"MdxPage",name:"2025-12-16-8-hidden-costs-in-kubernetes-clusters-and-how-to-eliminate-them",route:"/blog/2025-12-16-8-hidden-costs-in-kubernetes-clusters-and-how-to-eliminate-them",frontMatter:{type:"posts",title:"8 Hidden Costs in Kubernetes Clusters and How to Eliminate Them",date:"2025-12-16",author:"Hwansoo Kim",description:"Discover the 8 hidden costs draining your Kubernetes budget—from overprovisioning and orphaned storage to reactive scaling lag—and learn how to eliminate them with intelligent automation.",tags:["Kubernetes","FinOps","Cloud Cost Optimization","SRE","Cloud Native","DevOps","Wave Autoscale","Autoscaling","Resource Management"]}},{kind:"MdxPage",name:"2025-12-30-AI-driven-vs-Rules-based-Scaling-What-Saves-More",route:"/blog/2025-12-30-AI-driven-vs-Rules-based-Scaling-What-Saves-More",frontMatter:{type:"posts",title:"AI-driven vs Rules-based Scaling: What Saves More?",date:"2025-12-30",author:"Thomas Mathew",description:"Rules-based Kubernetes autoscaling breaks down at scale, static thresholds cannot keep up with hundreds of evolving workloads. Learn how AI-driven scaling eliminates manual tuning and delivers up to 40% cost savings.",tags:["Kubernetes","Autoscaling","HPA","KEDA","FinOps","Cloud Cost Optimization","SRE","DevOps","Wave Autoscale","AI Ops"]}},{kind:"MdxPage",name:"2025-12-31-what-is-smart-sizing-for-smarter-clouds",route:"/blog/2025-12-31-what-is-smart-sizing-for-smarter-clouds",frontMatter:{type:"posts",title:'What is "Smart Sizing" for Smarter Clouds: The Next Step Beyond Rightsizing',date:"2025-12-31",author:"Thomas Mathew",description:"Kubernetes clusters waste 30-40% of resources due to oversized requests. Learn why manual rightsizing and VPA fall short, and how Smart Sizing delivers actionable recommendations with unified scaling.",tags:["Kubernetes","Autoscaling","HPA","VPA","FinOps","Cloud Cost Optimization","SRE","DevOps","Wave Autoscale","AI Ops","Rightsizing","Smart Sizing","Resource Optimization"]}},{kind:"MdxPage",name:"2026-01-20-wave-autoscale-works-with-your-existing-infrastructure",route:"/blog/2026-01-20-wave-autoscale-works-with-your-existing-infrastructure",frontMatter:{type:"posts",title:"Wave Autoscale Works with Your Existing Infrastructure: Understanding Workload Management vs Infrastructure Management",date:"2026-01-20",author:"Wave Autoscale Team",description:"Learn how Wave Autoscale focuses on workload optimization within your existing Kubernetes infrastructure, complementing rather than replacing tools like Karpenter and Cluster Autoscaler.",tags:["Kubernetes","Autoscaling","Infrastructure","Workload Management","Karpenter","Cluster Autoscaler","Wave Autoscale","Cloud Native","DevOps","SRE","Resource Optimization"]}},{kind:"MdxPage",name:"2026-01-30-how-to-manage-enterprise-kubernetes-workloads-beyond-hpa",route:"/blog/2026-01-30-how-to-manage-enterprise-kubernetes-workloads-beyond-hpa",frontMatter:{type:"posts",title:"How to Manage Enterprise Kubernetes Workloads Beyond HPA: Eliminating Scaling Lag",date:"2026-01-30",author:"Thomas Mathew",description:"Learn why HPAs threshold-based scaling fails under real-world traffic patterns and how ML-driven autoscaling eliminates scaling lag, reducing error rates from 38% to near zero while cutting costs by up to 40%.",tags:["Kubernetes","Autoscaling","HPA","Wave Autoscale","Performance","SRE","DevOps","Cloud Cost Optimization","Machine Learning","Workload Management","Scaling","Enterprise Kubernetes"]}},{kind:"MdxPage",name:"2026-03-11-rethinking-kubernetes-observability",route:"/blog/2026-03-11-rethinking-kubernetes-observability",frontMatter:{type:"posts",title:"Rethinking Kubernetes Observability",date:"2026-03-11",author:"Thomas Mathew",description:"Teams spend 30-100% of their time manually analyzing Kubernetes metrics. Wave Autoscale transforms this operational overhead into automated intelligence: 7-30 day advance warnings, automated root cause analysis, and continuous optimization that identifies 40-60% resource waste.",tags:["Kubernetes","Observability","FinOps","Platform Engineering","SRE","Wave Autoscale","Resource Optimization","Capacity Planning"]}},{kind:"MdxPage",name:"2026-03-12-why-traffic-shaping-is-the-missing-piece-in-your-kubernetes-scaling-strategy",route:"/blog/2026-03-12-why-traffic-shaping-is-the-missing-piece-in-your-kubernetes-scaling-strategy",frontMatter:{type:"posts",title:"Why Traffic Shaping Is the Missing Piece in Your Kubernetes Scaling Strategy",date:"2026-03-12",author:"Thomas Mathew",description:"Netflix, Uber, and Google all use priority-based load shedding to protect critical services under pressure. Here is why your Kubernetes cluster needs the same pattern and how to implement it.",tags:["Kubernetes","Traffic Management","Load Shedding","Service Mesh","Platform Engineering","SRE","Wave Autoscale","Wave Flow","Istio","Enterprise Kubernetes"]}},{kind:"MdxPage",name:"2026-03-13-toward-an-ai-native-control-plane-wave-autoscales-next-chapter",route:"/blog/2026-03-13-toward-an-ai-native-control-plane-wave-autoscales-next-chapter",frontMatter:{type:"posts",title:"Toward an AI-Native Control Plane: Wave Autoscale's Next Chapter",date:"2026-03-13",author:"Wave Autoscale Team",description:"How Wave Autoscale is evolving from a scaling engine into an AI-native control plane for Kubernetes, replacing fragmented toolchains with a single natural-language interface.",tags:["Kubernetes","AI Agent","Wave Autoscale","MCP","Agentic Operations"]}},{kind:"MdxPage",name:"2026-03-23-wave-autoscale-3-1-0",route:"/blog/2026-03-23-wave-autoscale-3-1-0",frontMatter:{type:"posts",title:"Wave Autoscale 3.1.0: Taking Control of Karpenter with Node-Level Intelligence",date:"2026-03-23",author:"Hwansoo Kim",description:"Wave Autoscale 3.1.0 brings full Karpenter visibility and control to Amazon EKS — a real-time dashboard, intelligent node warmup with image pre-caching, zero-touch spot workload placement via webhook, and a 2x faster gRPC-powered Metrics Agent.",tags:["Kubernetes","Amazon EKS","Karpe
1nter","Spot Instances","SRE","Cloud Native","DevOps","Wave Autoscale","Node Management","gRPC"]}},{kind:"MdxPage",name:"2026-04-29-wave-autoscale-3-2-0-gpu-aware-autoscaling-and-openshift-support",route:"/blog/2026-04-29-wave-autoscale-3-2-0-gpu-aware-autoscaling-and-openshift-support",frontMatter:{type:"posts",title:"Wave Autoscale 3.2.0: GPU-Aware Autoscaling and OpenShift Support",date:"2026-04-29",author:"Hwansoo Kim",description:"Wave Autoscale 3.2.0 brings GPU-aware autoscaling — DCGM-based metrics, cost tracking, and waste detection — and adds first-class OpenShift support, including DeploymentConfig and a Red Hat-certified Helm chart.",tags:["Kubernetes","Autoscaling","GPU","NVIDIA DCGM","OpenShift","FinOps","Cost Optimization","Wave Autoscale","Platform Engineering","Helm"]}},{kind:"MdxPage",name:"2026-05-21-wave-autoscale-3-2-2",route:"/blog/2026-05-21-wave-autoscale-3-2-2",frontMatter:{type:"posts",title:"Wave Autoscale 3.2.2: SSO, Realtime Smart Sizing, and Wave Diagnosis",date:"2026-05-21",author:"Hwansoo Kim",description:"Wave Autoscale 3.2.2 closes the loop between Smart Sizing recommendations and the cluster with in-place pod resize, adds OIDC single sign-on to the Web Console, and reorganizes the diagnostic surface into a failure-first information architecture.",tags:["Kubernetes","Autoscaling","Smart Sizing","In-Place Pod Resize","SSO","OIDC","Wave Diagnosis","Wave Autoscale","Platform Engineering","SRE"]}},{kind:"Meta",data:{index:{title:"Blog",type:"page",display:"hidden"},"2026-05-21-wave-autoscale-3-2-2":{title:"Wave Autoscale 3.2.2: SSO, Realtime Smart Sizing, and Wave Diagnosis"},"2026-04-29-wave-autoscale-3-2-0-gpu-aware-autoscaling-and-openshift-support":{title:"Wave Autoscale 3.2.0: GPU-Aware Autoscaling and OpenShift Support"},"2026-03-23-wave-autoscale-3-1-0":{title:"Wave Autoscale 3.1.0: Taking Control of Karpenter"},"2026-03-13-toward-an-ai-native-control-plane-wave-autoscales-next-chapter":{title:"Toward an AI-Native Control Plane: Wave Autoscale's Next Chapter"},"2026-03-12-why-traffic-shaping-is-the-missing-piece-in-your-kubernetes-scaling-strategy":{title:"Why Traffic Shaping Is the Missing Piece in Your Kubernetes Scaling Strategy"},"2026-03-11-rethinking-kubernetes-observability":{title:"Rethinking Kubernetes Observability"},"2026-01-30-how-to-manage-enterprise-kubernetes-workloads-beyond-hpa":{title:"How to Manage Enterprise Kubernetes Workloads Beyond HPA: Eliminating Scaling Lag"},"2026-01-20-wave-autoscale-works-with-your-existing-infrastructure":{title:"Understanding Workload Management vs Infrastructure Management"},"2025-12-31-what-is-smart-sizing-for-smarter-clouds":{title:"What is 'Smart Sizing' for Smarter Clouds: The Next Step Beyond Rightsizing"},"2025-12-30-AI-driven-vs-Rules-based-Scaling-What-Saves-More":{title:"AI-driven vs Rules-based Scaling: What Saves More?"},"2025-12-16-8-hidden-costs-in-kubernetes-clusters-and-how-to-eliminate-them":{title:"8 Hidden Costs in Kubernetes Clusters and How to Eliminate Them"},"2025-11-28-wave-autoscale-3-0":{title:"Wave Autoscale 3.0"},"2025-07-21-wave-autoscale-2-7-0":{title:"Wave Autoscale 2.7.0"},"2025-06-24-wave-autoscale-2-6-0":{title:"Wave Autoscale 2.6.0"},"2025-05-13-wave-autoscale-2-5-0":{title:"Wave Autoscale 2.5.0"},"2025-04-23-wave-autoscale-2-4-0":{title:"Wave Autoscale 2.4.0"},"2025-04-04-what-llms-can-do-for-sres-in-cloud-native-infrastructure":{title:"What LLMs Can Do for SREs in Cloud Native Infrastructure"},"2025-02-12-hpa-is-not-enough-for-your-kubernetes-operation":{title:"HPA is not enough for your Kubernetes operation"},"2025-01-13-why-kubernetes-automation-matters":{title:"Why Kubernetes Automation Matters"}}}]},{kind:"Folder",name:"contact",route:"/contact",children:[{kind:"MdxPage",name:"CLAUDE",route:"/contact/CLAUDE"},{kind:"Meta",data:{index:{title:"Home",type:"page",theme:{layout:"raw",toc:!1}},"with-netfunnel":{title:"With NetFunnel",type:"page",theme:{layout:"raw",toc:!1}}}},{kind:"MdxPage",name:"index",route:"/contact",frontMatter:{title:"Contact",description:"Contact the Wave team to book a free demo and see how Wave automates Kubernetes Day 2 operations while reducing cost and engineering overhead.",searchable:!0}},{kind:"MdxPage",name:"with-netfunnel",route:"/contact/with-netfunnel",frontMatter:{title:"With Netfunnel",description:"Combine Wave's intelligent scaling with NetFUNNEL traffic control for unified Kubernetes Day 2 operations during peak traffic events.",searchable:!0}}]},{kind:"MdxPage",name:"demo",route:"/demo",frontMatter:{title:"Wave Console Live Demo — explore the product in your browser | Wave",description:"Click through the Wave console with simulated data — sizing recommendations, Autopilot scaling, K8s diagnosis. No signup.",searchable:!0}},{kind:"Folder",name:"docs",route:"/docs",children:[{kind:"Folder",name:"___kubernetes",route:"/docs/___kubernetes",children:[{kind:"Meta",data:{deloyments:{title:"Deployments"},"statefulsets-and-daemonsets":{title:"StatefulSets and DaemonSets"},"traffic-protection":{title:"Traffic Protection"},"pod-placement":{title:"Pod Placement"}}},{kind:"MdxPage",name:"deloyments",route:"/docs/___kubernetes/deloyments"},{kind:"MdxPage",name:"pod-placement",route:"/docs/___kubernetes/pod-placement"},{kind:"MdxPage",name:"statefulsets-and-daemonsets",route:"/docs/___kubernetes/statefulsets-and-daemonsets"},{kind:"MdxPage",name:"traffic-protection",route:"/docs/___kubernetes/traffic-protection"}]},{kind:"Folder",name:"__backup",route:"/docs/__backup",children:[{kind:"MdxPage",name:"___core-concepts",route:"/docs/__backup/___core-concepts"},{kind:"MdxPage",name:"___getting-started",route:"/docs/__backup/___getting-started"},{kind:"Meta",data:{"--- Overview":{title:"Overview",type:"separator"},introduction:{title:"Introduction",theme:{sidebar:!0,toc:!0}},"supported-kubernetes-platforms":{title:"Supported Kubernetes Platforms",theme:{sidebar:!0,toc:!0}},"--- Getting Started":{title:"Getting Started",type:"separator"},"quick-start":{title:"Quick Start"}
1,licensing:{title:"Licensing"},"supported-platforms":{title:"Supported Platforms"},"installation-guides":{title:"Installation Guides"},"--- Features":{title:"Features",type:"separator"},"features-workloads":{title:"Workloads"},autopilot:{title:"Autopilot (Horizontal Scaling)"},"right-sizing":{title:"Right Sizing (Vertical Scaling)"},"auto-traffic-control":{title:"Auto Traffic Control"},"wa-metrics-agent":{title:"WA Metrics Agent"}}},{kind:"MdxPage",name:"auto-traffic-control",route:"/docs/__backup/auto-traffic-control"},{kind:"MdxPage",name:"autopilot",route:"/docs/__backup/autopilot"},{kind:"MdxPage",name:"features-workloads",route:"/docs/__backup/features-workloads"},{kind:"MdxPage",name:"right-sizing",route:"/docs/__backup/right-sizing"},{kind:"MdxPage",name:"wa-metrics-agent",route:"/docs/__backup/wa-metrics-agent"}]},{kind:"Meta",data:{"--- Overview":{title:"Overview",type:"separator"},introduction:{title:"Introduction",theme:{sidebar:!0,toc:!0}},"wave-vs-hpa-vpa-prometheus":{title:"Wave vs HPA, VPA, and Prometheus",theme:{sidebar:!0,toc:!0}},architecture:{title:"Architecture",theme:{sidebar:!0,toc:!0}},"--- Getting Started":{title:"Getting Started",type:"separator"},"important-before-you-begin":{title:"Important: Before You Begin",theme:{sidebar:!0,toc:!0}},"quick-start":{title:"Quick Start"},"installation-guides":{title:"Installation Guides"},"helm-values-environment-variables":{title:"Helm Values & Environment Variables",theme:{sidebar:!0,toc:!0}},"crd-mode":{title:"CRD Mode",theme:{sidebar:!0,toc:!0}},"--- Features":{title:"Features",type:"separator"},"wave-sizing":{title:"Wave Sizing",theme:{collapsed:!0}},"wave-autoscale":{title:"Wave Autoscale",theme:{collapsed:!0}},"wave-diagnosis":{title:"Wave Diagnosis",theme:{collapsed:!0}},"wave-karpenter":{title:"Wave Karpenter",theme:{collapsed:!0}},"wave-flow":{title:"Wave Flow",theme:{collapsed:!0}},"additional-features":{title:"Additional Features",theme:{collapsed:!0}},"wave-gpu":{title:"Wave GPU (Preview)",theme:{collapsed:!0}},"wave-ai-agent":{title:"Wave AI Agent (Preview)",theme:{collapsed:!0}},administration:{title:"Administration",theme:{collapsed:!0}},reference:{title:"Reference",theme:{collapsed:!0}}}},{kind:"Folder",name:"additional-features",route:"/docs/additional-features",children:[{kind:"Meta",data:{"*":{theme:{sidebar:!0,toc:!0}},"pv-lifecycle":{title:"PV Lifecycle"},alerts:{title:"Alerts"}}},{kind:"Folder",name:"alerts",route:"/docs/additional-features/alerts",children:[{kind:"Meta",data:{overview:{title:"Overview"},"getting-started":{title:"Getting Started"},"how-it-works":{title:"How it Works"},crds:{title:"CRDs"}}},{kind:"MdxPage",name:"crds",route:"/docs/additional-features/alerts/crds",frontMatter:{title:"Alert CRDs",description:"Field reference for the two CRD kinds that configure Alerts in CRD Mode.",searchable:!0}},{kind:"MdxPage",name:"getting-started",route:"/docs/additional-features/alerts/getting-started",frontMatter:{title:"Getting Started with Alerts"}},{kind:"MdxPage",name:"how-it-works",route:"/docs/additional-features/alerts/how-it-works",frontMatter:{title:"How Alerts Works"}},{kind:"MdxPage",name:"overview",route:"/docs/additional-features/alerts/overview",frontMatter:{title:"Alerts Overview"}}]},{kind:"Folder",name:"pv-lifecycle",route:"/docs/additional-features/pv-lifecycle",children:[{kind:"Meta",data:{overview:{title:"Overview"},"getting-started":{title:"Getting Started"},"auto-clean-up":{title:"Auto Clean Up"},"auto-expansion":{title:"Auto Expansion"},"capacity-forecast":{title:"PV Capacity Forecast"},"unused-detection":{title:"Unused PV Detection"},crds:{title:"CRDs"}}},{kind:"MdxPage",name:"auto-clean-up",route:"/docs/additional-features/pv-lifecycle/auto-clean-up",frontMatter:{title:"Auto Clean Up"}},{kind:"MdxPage",name:"auto-expansion",route:"/docs/additional-features/pv-lifecycle/auto-expansion",frontMatter:{title:"Auto Expansion"}},{kind:"MdxPage",name:"capacity-forecast",route:"/docs/additional-features/pv-lifecycle/capacity-forecast",frontMatter:{title:"PV Capacity Forecast"}},{kind:"MdxPage",name:"crds",route:"/docs/additional-features/pv-lifecycle/crds",frontMatter:{title:"PV Lifecycle CRDs",description:"Field reference for the WavePvcAutoExpansion CRD kind that configures PVC auto-expansion in CRD Mode.",searchable:!0}},{kind:"MdxPage",name:"getting-started",route:"/docs/additional-features/pv-lifecycle/getting-started",frontMatter:{title:"Getting Started with PV Lifecycle Management"}},{kind:"MdxPage",name:"overview",route:"/docs/additional-features/pv-lifecycle/overview",frontMatter:{title:"PV Lifecycle Management Overview"}},{kind:"MdxPage",name:"unused-detection",route:"/docs/additional-features/pv-lifecycle/unused-detection",frontMatter:{title:"Unused PV Detection"}}]}]},{kind:"Folder",name:"administration",route:"/docs/administration",children:[{kind:"Meta",data:{"sso-setup":{title:"SSO Setup (OIDC)"}}},{kind:"MdxPage",name:"sso-setup",route:"/docs/administration/sso-setup",frontMatter:{title:"SSO Setup (OIDC)",description:"Configure OpenID Connect single sign-on for the Wave Web Console — Okta, Microsoft Entra ID (Azure AD), Google Worksp
1ace, Keycloak, and other standards-compliant OIDC providers.",searchable:!0}}]},{kind:"MdxPage",name:"architecture",route:"/docs/architecture",frontMatter:{title:"Architecture",description:"Wave's cloud-native architecture: five core components across a centralized StatefulSet and a per-node DaemonSet for Kubernetes Day 2 automation."}},{kind:"MdxPage",name:"crd-mode",route:"/docs/crd-mode",frontMatter:{title:"CRD Mode",description:"Manage every Wave operational setting as Kubernetes Custom Resources in Git — Console Mode vs CRD Mode, enabling, the 14 CRD kinds, sync status, and ArgoCD integration.",searchable:!0}},{kind:"MdxPage",name:"helm-values-environment-variables",route:"/docs/helm-values-environment-variables",frontMatter:{title:"Helm Values & Environment Variables",description:"Full reference for Wave's environment variables and Helm values."}},{kind:"MdxPage",name:"important-before-you-begin",route:"/docs/important-before-you-begin",frontMatter:{title:"Important: Before You Begin",description:"Wave's runtime behaviors that trip up first-time users: ML training warmup, monitoring mode, 10-minute analysis cadences, and Realtime Resizing caveats."}},{kind:"Folder",name:"installation-guides",route:"/docs/installation-guides",children:[{kind:"Meta",data:{"amazon-eks":{title:"Amazon EKS"},openshift:{title:"Red Hat OpenShift"},"generic-kubernetes":{title:"Generic Kubernetes"}}},{kind:"MdxPage",name:"amazon-eks",route:"/docs/installation-guides/amazon-eks",frontMatter:{title:"Amazon EKS Installation",description:"Install Wave on Amazon EKS via AWS Marketplace (Metered or BYOL) or GHCR."}},{kind:"MdxPage",name:"generic-kubernetes",route:"/docs/installation-guides/generic-kubernetes",frontMatter:{title:"Generic Kubernetes Installation",description:"Install Wave on AKS, GKE, OKD, or self-managed Kubernetes via GHCR. Includes air-gapped / private registry guidance."}},{kind:"MdxPage",name:"openshift",route:"/docs/installation-guides/openshift",frontMatter:{title:"Red Hat OpenShift Installation",description:"Install Wave on OpenShift via the certified Operator (OperatorHub), the Red Hat Ecosystem Catalog Helm chart, or GHCR."}}]},{kind:"MdxPage",name:"introduction",route:"/docs/introduction",frontMatter:{title:"Introduction to Wave",description:"Wave is the best-practice operations layer for Kubernetes: it advises and automates Day 2 operations. Six sub-brands cover scaling, sizing, node management, traffic, insights, and more."}},{kind:"MdxPage",name:"quick-start",route:"/docs/quick-start",frontMatter:{title:"Quick Start",description:"Pick your platform and install Wave on Kubernetes."}},{kind:"Folder",name:"reference",route:"/docs/reference",children:[{kind:"Meta",data:{"*":{theme:{sidebar:!0,toc:!0}},"api-reference":{title:"API Reference",href:"/api-reference"},troubleshooting:{title:"Troubleshooting"}}},{kind:"MdxPage",name:"troubleshooting",route:"/docs/reference/troubleshooting",frontMatter:{title:"Troubleshooting",description:"Common issues and how to resolve them."}}]},{kind:"Folder",name:"wave-ai-agent",route:"/docs/wave-ai-agent",children:[{kind:"Meta",data:{"*":{theme:{sidebar:!0,toc:!0}},overview:{title:"Overview"},"mcp-server-architecture":{title:"MCP Server Architecture"},roadmap:{title:"Roadmap"}}},{kind:"MdxPage",name:"mcp-server-architecture",route:"/docs/wave-ai-agent/mcp-server-architecture",frontMatter:{title:"Wave AI Agent — MCP Server Architecture",description:"How the Wave MCP server exposes Kubernetes operations to AI coding agents."}},{kind:"MdxPage",name:"overview",route:"/docs/wave-ai-agent/overview",frontMatter:{title:"Wave AI Agent Overview",description:"The Unified K8s MCP Server for Claude, Codex, and Cursor. Currently in development."}},{kind:"MdxPage",name:"roadmap",route:"/docs/wave-ai-agent/roadmap",frontMatter:{title:"Wave AI Agent Roadmap",description:"What's coming next for Wave AI Agent."}}]},{kind:"Folder",name:"wave-autoscale",route:"/docs/wave-autoscale",children:[{kind:"Meta",data:{overview:{title:"Overview"},"getting-started":{title:"Getting Started"},"core-configuration":{title:"Core Configuration"},"cost-vs-performance":{title:"Cost vs Performance Optimization"},"predictive-scaling":{title:"Predictive Scaling"}
1,"timing-controls":{title:"Timing Controls"},scheduler:{title:"Autopilot Scheduler"},"min-max-recommendations":{title:"Min/Max Recommendations"},crds:{title:"CRDs"}}},{kind:"MdxPage",name:"core-configuration",route:"/docs/wave-autoscale/core-configuration",frontMatter:{title:"Autopilot Core Configuration | Wave",description:"Complete reference for all Wave Autopilot configuration settings including scaling thresholds, metrics, and policy options."}},{kind:"MdxPage",name:"cost-vs-performance",route:"/docs/wave-autoscale/cost-vs-performance",frontMatter:{title:"Autopilot Cost vs Performance Optimization | Wave",description:"Understand the two Autopilot scaling strategies — cost-optimized and performance-optimized — and how to choose the right one for each workload."}},{kind:"MdxPage",name:"crds",route:"/docs/wave-autoscale/crds",frontMatter:{title:"Wave Autoscale CRDs",description:"Field reference for the three CRD kinds that configure Wave Autoscale (Autopilot) in CRD Mode.",searchable:!0}},{kind:"MdxPage",name:"getting-started",route:"/docs/wave-autoscale/getting-started",frontMatter:{title:"Getting Started with Autopilot | Wave",description:"Quick start guide to enable Wave Autopilot for your Kubernetes workloads from the Autopilot page in minutes."}},{kind:"MdxPage",name:"min-max-recommendations",route:"/docs/wave-autoscale/min-max-recommendations",frontMatter:{title:"Min/Max Recommendations | Wave",description:"ML-driven minimum and maximum replica boundaries for Autopilot, derived from each Deployment's traffic patterns."}},{kind:"MdxPage",name:"overview",route:"/docs/wave-autoscale/overview",frontMatter:{title:"Autopilot Overview | Wave",description:"Learn how Wave Autopilot uses ML-driven horizontal pod autoscaling to react in seconds and replace manual HPA configuration."}},{kind:"MdxPage",name:"predictive-scaling",route:"/docs/wave-autoscale/predictive-scaling",frontMatter:{title:"Autopilot Predictive Scaling | Wave",description:"How Wave Autopilot uses time-series forecasting to predict future load and scale workloads before traffic arrives, preventing latency spikes."}},{kind:"MdxPage",name:"scheduler",route:"/docs/wave-autoscale/scheduler",frontMatter:{title:"Autopilot Scheduler | Wave",description:"Apply different Autopilot configurations at specific times using cron expressions — ideal for business hours, promotional events, and maintenance windows."}},{kind:"MdxPage",name:"timing-controls",route:"/docs/wave-autoscale/timing-controls",frontMatter:{title:"Autopilot Timing Controls | Wave",description:"Fine-tune Autopilot scaling behavior with timing controls that balance responsiveness and stability — scale-up delay, scale-down stabilization, and cooldown periods."}}]},{kind:"Folder",name:"wave-diagnosis",route:"/docs/wave-diagnosis",children:[{kind:"Meta",data:{overview:{title:"Overview"},crds:{title:"CRDs"},"--- Failures":{title:"Failures",type:"separator"},"pod-container-failures":{title:"Pod/Container Failures"},"memory-leak-detection":{title:"Memory Leak Detection"}
1,"pod-scheduling-delay":{title:"Pod Scheduling Delay"},"cpu-utilization":{title:"Workload CPU Utilization"},"--- Waste":{title:"Waste",type:"separator"},"idle-node-detection":{title:"Idle Node Detection"},"--- Capacity":{title:"Capacity",type:"separator"},"cluster-resource-forecast":{title:"Cluster Resource Forecast"},"pv-capacity-forecast":{title:"PV Capacity Forecast"}}},{kind:"MdxPage",name:"cluster-resource-forecast",route:"/docs/wave-diagnosis/cluster-resource-forecast",frontMatter:{title:"Cluster Resource Forecast",description:"Cluster Resource Forecast projects cluster-level CPU and memory utilization at 7 and 30 days, so you can add capacity or right-size workloads before the cluster runs short instead of after.",searchable:!0}},{kind:"MdxPage",name:"cpu-utilization",route:"/docs/wave-diagnosis/cpu-utilization",frontMatter:{title:"Workload CPU Utilization Analysis",description:"Workload CPU Utilization Analysis classifies every workload by how hard its CPU runs into four levels, so you can spot CPU-starved and over-provisioned workloads across the whole cluster at a glance.",searchable:!0}},{kind:"MdxPage",name:"crds",route:"/docs/wave-diagnosis/crds",frontMatter:{title:"Wave Diagnosis CRDs",description:"Field reference for the WaveDiagnosisConfig CRD kind that configures Wave Diagnosis tasks in CRD Mode.",searchable:!0}},{kind:"MdxPage",name:"idle-node-detection",route:"/docs/wave-diagnosis/idle-node-detection",frontMatter:{title:"Idle Node Detection",description:"Idle Node Detection finds nodes you are paying for but not using, ones running only DaemonSets or no pods at all, and quantifies the wasted CPU and memory so you can consolidate or scale them down.",searchable:!0}},{kind:"MdxPage",name:"memory-leak-detection",route:"/docs/wave-diagnosis/memory-leak-detection",frontMatter:{title:"Memory Leak Detection",description:"Memory Leak Detection finds workloads whose memory floor keeps climbing, and flags workloads running close to their memory limit, so you can act before an OOMKill instead of after it.",searchable:!0}},{kind:"MdxPage",name:"overview",route:"/docs/wave-diagnosis/overview",frontMatter:{title:"Wave Diagnosis Overview",description:"Wave Diagnosis is a diagnosis console that answers three operator questions directly: what is failing right now, where money is leaking, and what will soon run short. It turns raw cluster signals into answers instead of leaving you to interpret dashboards."}},{kind:"MdxPage",name:"pod-container-failures",route:"/docs/wave-diagnosis/pod-container-failures",frontMatter:{title:"Pod/Container Failures",description:"Pod/Container Failures automatically detects abnormal pod and container terminations (OOMKilled, CrashLoopBackOff, silent crashes, evictions, preemptions, and more) directly from agent push data, and captures the logs, YAML, and incident timeline needed to find the root cause.",searchable:!0}},{kind:"MdxPage",name:"pod-scheduling-delay",route:"/docs/wave-diagnosis/pod-scheduling-delay",frontMatter:{title:"Pod Scheduling Delay Detection",description:"Pod Scheduling Delay Detection tracks how long pods waited in Pending and why, with the exact scheduler conditions per workload, so you can tell a capacity shortage from a misconfigured pod spec at a glance.",searchable:!0}},{kind:"MdxPage",name:"pv-capacity-forecast",route:"/docs/wave-diagnosis/pv-capacity-forecast",frontMatter:{title:"PV Capacity Forecast",description:"PV Capacity Forecast projects each PersistentVolume's usage at 7 and 30 days, so you expand or clean up storage before a volume fills and takes an application down.",searchable:!0}}]},{kind:"Folder",name:"wave-flow",route:"/docs/wave-flow",children:[{kind:"Meta",data:{overview:{title:"Overview",theme:{sidebar:!0,toc:!0}},"getting-started":{title:"Getting Started",theme:{sidebar:!0,toc:!0}},"priority-load-shedding":{title:"Priority-Based Traffic Protection",theme:{sidebar:!0,toc:!0}},netfunnel:{title:"NetFUNNEL Integration"},crds:{title:"CRDs"}}},{kind:"MdxPage",name:"crds",route:"/docs/wave-flow/crds",frontMatter:{title:"Wave Flow CRDs",description:"Field reference for the three CRD kinds that configure Wave Flow in CRD Mode.",searchable:!0}},{kind:"MdxPage",name:"getting-started",route:"/docs/wave-flow/getting-started",frontMatter:{title:"Getting Started with Wave Flow"}},{kind:"MdxPage",name:"netfunnel",route:"/docs/wave-flow/netfunnel",frontMatter:{title:"NetFUNNEL Integration",searchable:!0}},{kind:"MdxPage",name:"overview",route:"/docs/wave-flow/overview",frontMatter:{title:"Wave Flow Overview"}},{kind:"MdxPage",name:"priority-load-shedding",route:"/docs/wave-flow/priority-load-shedding",frontMatter:{title:"Priority-Based Traffic Protection"}}]},{kind:"Folder",name:"wave-gpu",route:"/docs/wave-gpu",children:[{kind:"Meta",data:{"*":{theme:{sidebar:!0,toc:!0}},overview:{title:"Overview"},roadmap:{title:"Roadmap"}}},{kind:"MdxPage",name:"overview",route:"/docs/wave-gpu/overview",frontMatter:{title:"Wave GPU Overview",description:"The GPU Operations Layer for Kubernetes, from visibility to optimization."}},{kind:"MdxPage",name:"roadmap",route:"/docs/wave-gpu/roadmap",frontMatter:{title:"Wave GPU Roadmap",description:"What's coming next for Wave GPU."}}]},{kind:"Folder",name:"wave-karpenter",route:"/docs/wave-karpenter",children:[{kind:"Meta",data:{overview:{title:"Overview"},"getting-started":{title:"Getting Started"},dashboard:{title:"Dashboard"}
1,"node-warmup":{title:"Node Warmup"},"spot-workload-placement":{title:"Spot Workload Placement"},crds:{title:"CRDs"}}},{kind:"MdxPage",name:"crds",route:"/docs/wave-karpenter/crds",frontMatter:{title:"Wave Karpenter CRDs",description:"Field reference for the CRD kinds that configure Wave Karpenter in CRD Mode.",searchable:!0}},{kind:"MdxPage",name:"dashboard",route:"/docs/wave-karpenter/dashboard",frontMatter:{title:"Karpenter Dashboard"}},{kind:"MdxPage",name:"getting-started",route:"/docs/wave-karpenter/getting-started",frontMatter:{title:"Getting Started with Karpenter Integration"}},{kind:"MdxPage",name:"node-warmup",route:"/docs/wave-karpenter/node-warmup",frontMatter:{title:"Node Warmup"}},{kind:"MdxPage",name:"overview",route:"/docs/wave-karpenter/overview",frontMatter:{title:"Karpenter Integration Overview"}},{kind:"MdxPage",name:"spot-workload-placement",route:"/docs/wave-karpenter/spot-workload-placement",frontMatter:{title:"Spot Workload Placement"}}]},{kind:"Folder",name:"wave-sizing",route:"/docs/wave-sizing",children:[{kind:"Meta",data:{overview:{title:"Overview"},"getting-started":{title:"Getting Started"},dashboard:{title:"The Sizing Console"},"smart-sizing-tab":{title:"Smart Sizing Tab in Workload"},"aggressive-recommendations":{title:"Aggressive Recommendations"},"resize-now":{title:"Resize Now (Manual Apply)"},"realtime-smart-sizing":{title:"Realtime Resizing"},"container-settings":{title:"Container Settings"},"smart-sizing-report":{title:"Smart Sizing Report"},crds:{title:"CRDs"}}},{kind:"MdxPage",name:"aggressive-recommendations",route:"/docs/wave-sizing/aggressive-recommendations",frontMatter:{title:"Aggressive Recommendations",description:"Cost-first Smart Sizing: recommend from the last 1 hour of usage (request = average, limit = peak) instead of the 7+ day window, and when to use it.",searchable:!0}},{kind:"MdxPage",name:"container-settings",route:"/docs/wave-sizing/container-settings",frontMatter:{title:"Container Settings",description:"Per-container Smart Sizing controls: recommendation bounds (min/max and safety buffer) and auto-apply opt-in with request/limit granularity.",searchable:!0}},{kind:"MdxPage",name:"crds",route:"/docs/wave-sizing/crds",frontMatter:{title:"Wave Sizing CRDs",description:"Field reference for the WaveSmartSizingPolicy CRD kind that configures Smart Sizing in CRD Mode.",searchable:!0}},{kind:"MdxPage",name:"dashboard",route:"/docs/wave-sizing/dashboard",frontMatter:{title:"The Sizing Console",description:"Reading the Wave Sizing console: the Overview and Recommendations pages, with savings and risk KPIs, Provisioning Mix, Take Action lists, and per-container status badges.",searchable:!0}},{kind:"MdxPage",name:"getting-started",route:"/docs/wave-sizing/getting-started",frontMatter:{title:"Getting Started with Smart Sizing",description:"From a fresh Wave install to your first right-sized workload: reviewing the dashboard, applying a recommendation, and graduating to Realtime Resizing.",searchable:!0}},{kind:"MdxPage",name:"overview",route:"/docs/wave-sizing/overview",frontMatter:{title:"Smart Sizing Overview",description:"How Smart Sizing recommends CPU and memory for every workload: the usage-based model, the workload performance model for HPA/Autopilot, and the two ways to apply recommendations.",searchable:!0}},{kind:"MdxPage",name:"realtime-smart-sizing",route:"/docs/wave-sizing/realtime-smart-sizing",frontMatter:{title:"Realtime Resizing",description:"Operational guide for Realtime Resizing, Wave's automatic application pipeline for Smart Sizing recommendations. Apply Modes, skip thresholds, cluster prerequisites, and known interactions with ArgoCD and Autopilot.",searchable:!0}},{kind:"MdxPage",name:"resize-now",route:"/docs/wave-sizing/resize-now",frontMatter:{title:"Resize Now (Manual Apply)",description:"Applying a Smart Sizing recommendation on demand: the Resize Now modal, Edit CRD vs In-Place Pod Resize, Kubernetes version requirements, and troubleshooting.",searchable:!0}},{kind:"MdxPage",name:"smart-sizing-report",route:"/docs/wave-sizing/smart-sizing-report",frontMatter:{title:"Smart Sizing Report",description:"The Smart Sizing Report summarizes a cluster's right-sizing posture in one place (potential savings, efficiency rate, reliability posture, AS-IS → TO-BE CPU/memory, monthly spend, and a savings journey), ready to share or export to PDF.",searchable:!0}},{kind:"MdxPage",name:"smart-sizing-tab",route:"/docs/wave-sizing/smart-sizing-tab",frontMatter:{title:"Smart Sizing Tab in Workload",description:"Reading a workload's Smart Sizing tab: Info card, container cards, recommendation history, Apply History, and Restore Original.",searchable:!0}}]},{kind:"MdxPage",name:"wave-vs-hpa-vpa-prometheus",route:"/docs/wave-vs-hpa-vpa-prometheus",frontMatter:{title:"Wave vs HPA, VPA, and Prometheus",description:"How Wave compares to default Kubernetes autoscaling primitives and the Prometheus + HPA pattern."}}]},{kind:"Folder",name:"features",route:"/features",children:[{kind:"MdxPage",name:"CLAUDE",route:"/features/CLAUDE"},{kind:"Meta",data:{"*":{display:"hidden"},"---wave-autoscale":{type:"separator",title:"Wave Autoscale"},autopilot:{title:"Autopilot",type:"page"},"autopilot-scheduler":{title:"Autopilot Scheduler",type:"page"},"min-max-recommendation":{title:"Min/Max Recommendation",type:"page"},"---wave-sizing":{type:"separator",title:"Wave Sizing"},"smart-sizing":{title:"Smart Sizing",type:"page"},"realtime-resizing":{title:"Realtime Resizing",type:"page"},"---wave-karpenter":{type:"separator",title:"Wave Karpenter"},"karpenter-dashboard":{title:"Karpenter Dashboard",type:"page"}
1,"karpenter-node-warmup":{title:"Node Warmup",type:"page"},"karpenter-spot-workload-placement":{title:"Spot Workload Placement",type:"page"},"---wave-flow":{type:"separator",title:"Wave Flow"},"wave-flow":{title:"Wave Flow",type:"page"},"netfunnel-integration":{title:"NetFUNNEL Integration",type:"page"},"---wave-diagnosis":{type:"separator",title:"Wave Diagnosis"},"cluster-resource-forecast":{title:"Cluster Resource Forecast",type:"page"},"memory-leak-detection":{title:"Memory Leak Detection",type:"page"},"cpu-utilization-analysis":{title:"CPU Utilization Analysis",type:"page"},"pod-scheduling-delay-detection":{title:"Pod Scheduling Delay Detection",type:"page"},"idle-node-detection":{title:"Idle Node Detection",type:"page"},"---other":{type:"separator",title:"Other Features"},"pv-auto-expansion":{title:"PV Auto-Expansion",type:"page"},"pv-capacity-forecast":{title:"PV Capacity Forecast",type:"page"},"pv-cleanup":{title:"PV Cleanup",type:"page"},"unused-pv-detection":{title:"Unused PV Detection",type:"page"},alerts:{title:"Alerts",type:"page"},"programmable-api":{title:"Programmable API",type:"page"},sso:{title:"SSO (OIDC)",type:"page"}}},{kind:"MdxPage",name:"alerts",route:"/features/alerts",frontMatter:{title:"Alerts — Proactive Kubernetes Monitoring | Wave",description:"Proactive Kubernetes alerts that notify you of predicted failures and optimization opportunities before they impact production.",searchable:!0}},{kind:"MdxPage",name:"autopilot-scheduler",route:"/features/autopilot-scheduler",frontMatter:{title:"Autopilot Scheduler — Schedule Kubernetes Scaling Policies | Wave",description:"Schedule recurring and one-time Kubernetes scaling policies for known events like peak hours and campaigns, automating capacity guardrails.",searchable:!0}},{kind:"MdxPage",name:"autopilot",route:"/features/autopilot",frontMatter:{title:"Autopilot — ML-Driven Kubernetes Auto-Scaling | Wave",description:"Wave Autopilot replaces manual HPA configuration with ML-driven scaling that reacts in seconds, not minutes.",searchable:!0}},{kind:"MdxPage",name:"cluster-resource-forecast",route:"/features/cluster-resource-forecast",frontMatter:{title:"Cluster Resource Forecast — Predictive Kubernetes Resource Management | Wave",description:"Predict CPU, memory, and pod-count limit breaches 7-30 days ahead to prevent Kubernetes cluster saturation before it happens.",searchable:!0}},{kind:"MdxPage",name:"cpu-utilization-analysis",route:"/features/cpu-utilization-analysis",frontMatter:{title:"CPU Utilization Analysis — Optimize Workload Performance | Wave",description:"Categorize Kubernetes workloads by CPU usage bands to surface under-utilization and hotspots, guiding right-sizing and performance tuning.",searchable:!0}},{kind:"MdxPage",name:"idle-node-detection",route:"/features/idle-node-detection",frontMatter:{title:"Idle Node Detection — Reduce Infrastructure Waste | Wave",description:"Find Kubernetes nodes running only DaemonSet pods with no application workloads and flag them for removal to cut infrastructure costs.",searchable:!0}},{kind:"MdxPage",name:"index",route:"/features",frontMatter:{title:"Features — Wave Kubernetes Automation Platform",description:"Explore Wave's Kubernetes Day 2 automation features—scaling, sizing, traffic control, storage, and predictive insights—organized by category.",searchable:!0}},{kind:"MdxPage",name:"karpenter-dashboard",route:"/features/karpenter-dashboard",frontMatter:{title:"Karpenter Dashboard",description:"Real-time Karpenter node monitoring with cost tracking, disruption detection, and per-NodePool analytics"}},{kind:"MdxPage",name:"karpenter-node-warmup",route:"/features/karpenter-node-warmup",frontMatter:{title:"Node Warmup",description:"Proactive node pre-provisioning with parallel image pre-caching — reduce first pod startup from 31s to 3s (10x faster)"}},{kind:"MdxPage",name:"karpenter-spot-workload-placement",route:"/features/karpenter-spot-workload-placement",frontMatter:{title:"Spot Workload Placement",description:"Zero-touch spot/on-demand splitting via webhook injection — spot instances cost 60-90% less than on-demand, with granular per-deployment c
1ontrol"}},{kind:"MdxPage",name:"memory-leak-detection",route:"/features/memory-leak-detection",frontMatter:{title:"Memory Leak Detection — Proactive OOM Prevention for Kubernetes | Wave",description:"Automatically detect memory leak patterns before OOM failures, enabling planned responses instead of emergency restarts in Kubernetes.",searchable:!0}},{kind:"MdxPage",name:"min-max-recommendation",route:"/features/min-max-recommendation",frontMatter:{title:"Min/Max Recommendation — Data-Driven HPA Boundaries | Wave",description:"Data-driven HPA min/max boundary recommendations for optimal replica ranges, based on your workload's actual traffic patterns.",searchable:!0}},{kind:"MdxPage",name:"netfunnel-integration",route:"/features/netfunnel-integration",frontMatter:{title:"NetFUNNEL Integration — Virtual Waiting Room for Kubernetes | Wave",description:"Integrate NetFUNNEL's virtual waiting room with Wave to protect Kubernetes infrastructure during massive traffic surges and flash events.",searchable:!0}},{kind:"MdxPage",name:"pod-scheduling-delay-detection",route:"/features/pod-scheduling-delay-detection",frontMatter:{title:"Pod Scheduling Delay Detection — Prevent Bottlenecks | Wave",description:"Identify Kubernetes deployments hit by pod scheduling delays and analyze root causes before they turn into production bottlenecks.",searchable:!0}},{kind:"MdxPage",name:"programmable-api",route:"/features/programmable-api",frontMatter:{title:"Programmable API — Automate Kubernetes Day 2 Operations | Wave",description:"Full RESTful API access to every Wave feature—automate Kubernetes Day 2 operations programmatically and integrate with your workflows.",searchable:!0}},{kind:"MdxPage",name:"pv-auto-expansion",route:"/features/pv-auto-expansion",frontMatter:{title:"PV Auto-Expansion — Automated Storage Scaling | Wave",description:"Automatically expand Kubernetes Persistent Volumes before they hit capacity, preventing disk-full outages without manual intervention.",searchable:!0}},{kind:"MdxPage",name:"pv-capacity-forecast",route:"/features/pv-capacity-forecast",frontMatter:{title:"PV Capacity Forecast — Predict Storage Capacity Issues | Wave",description:"Analyze storage growth trends to predict when Kubernetes Persistent Volumes will reach capacity, triggering timely auto-expansion.",searchable:!0}},{kind:"MdxPage",name:"pv-cleanup",route:"/features/pv-cleanup",frontMatter:{title:"PV Cleanup — Automated Storage Cleanup | Wave",description:"Automatically delete unused Kubernetes Persistent Volumes to reclaim storage capacity and reduce ongoing infrastructure costs.",searchable:!0}},{kind:"MdxPage",name:"realtime-resizing",route:"/features/realtime-resizing",frontMatter:{title:"Realtime Resizing — Automatic In-Place Pod Resizing | Wave",description:"Realtime Resizing is Wave's automatic apply pipeline for Smart Sizing recommendations — In-Place Pod Resize (no restart, no rollout, no downtime) or Manifest Patch, with per-container opt-in and VPA-style hysteresis.",searchable:!0}},{kind:"MdxPage",name:"smart-sizing",route:"/features/smart-sizing",frontMatter:{title:"Smart Sizing — In-Place Pod Resource Optimization | Wave",description:"Wave Smart Sizing continuously optimizes container CPU and memory using Kubernetes in-place resize — no pod restarts needed. Replaces VPA for production stateful workloads.",searchable:!0}},{kind:"MdxPage",name:"sso",route:"/features/sso",frontMatter:{title:"SSO (OIDC) — Federated Login for the Wave Console | Wave",description:"Wave 3.2.2 adds OIDC-based single sign-on for the Web Console with break-glass local admin. Works with Okta, Microsoft Entra ID (Azure AD), Google Workspace, Keycloak, and other standards-compliant OIDC providers.",searchable:!0}},{kind:"MdxPage",name:"unused-pv-detection",route:"/features/unused-pv-detection",frontMatter:{title:"Unused PV Detection — Optimize Storage Costs | Wave",description:"Identify orphaned Kubernetes Persistent Volumes and calculate wasted storage costs to target cleanup and optimize spend.",searchable:!0}},{kind:"MdxPage",name:"wave-flow",route:"/features/wave-flow",frontMatter:{title:"Wave Flow — Priority-Based Traffic Shaping | Wave",description:"Priority-based traffic shaping with WASM modules for Istio and Kong, protecting critical Kubernetes services during load spikes.",searchable:!0}}]},{kind:"MdxPage",name:"gpu",route:"/gpu",frontMatter:{title:"Wave GPU — see every GPU and every workload, then share the card | Wave",description:"Wave GPU makes GPUs and GPU workloads visible on the Kubernetes cluster you run today, then shares one card across several workloads with HAMi Enterprise from Dynamia. Measured on one NVIDIA A10G: six predictive models, three training jobs or two vLLM 8B services on a 
1single card.",searchable:!0}},{kind:"MdxPage",name:"index",route:"/",frontMatter:{title:"Monitor, diagnose, optimize, control, report — the whole Kubernetes operations lifecycle | Wave",description:"Wave runs all five stages of the Kubernetes operations lifecycle in one console. It analyzes your cluster every day, finds the root cause, recommends the right configuration, then applies it automatically — filling the operational gaps Amazon EKS and OpenShift leave open.",searchable:!0}},{kind:"Folder",name:"japanese-blog",route:"/japanese-blog",children:[{kind:"MdxPage",name:"2025-01-13-why-kubernetes-automation-matters",route:"/japanese-blog/2025-01-13-why-kubernetes-automation-matters",frontMatter:{type:"posts",title:"なぜKubernetesの自動化が重要なのか:複雑さを簡素化し、生産性を向上させる",date:"2025-01-13T00:00:00.000Z",author:"Hwansoo Kim",description:"あなたのチームはKubernetesの複雑さに圧倒されていますか?コンテナ化されたアプリケーションが増えるにつれ、大規模なKubernetesの管理は大きな課題となっています。ここでは、自動化がなぜ役立つだけでなく、現代のクラウドネイティブ環境にとって不可欠であるかを説明します。",tags:["Kubernetes","自動化","クラウドネイティブ","DevOps"]}},{kind:"MdxPage",name:"2025-12-30-AI-driven-vs-Rules-based-Scaling-What-Saves-More",route:"/japanese-blog/2025-12-30-AI-driven-vs-Rules-based-Scaling-What-Saves-More",frontMatter:{type:"posts",title:"AI駆動型スケーリング vs ルールベーススケーリング:どちらがコスト削減に効果的か?",date:"2025-12-30",author:"Thomas Mathew",description:"ルールベースのKubernetesオートスケーリングは、規模が拡大すると破綻します。静的なしきい値では、進化し続ける数百のワークロードに対応できません。AI駆動型スケーリングが手動チューニングを排除し、最大40%のコスト削減を実現する方法をご紹介します。",tags:["Kubernetes","Autoscaling","HPA","KEDA","FinOps","Cloud Cost Optimization","SRE","DevOps","Wave Autoscale","AI Ops"]}},{kind:"MdxPage",name:"2025-12-31-what-is-smart-sizing-for-smarter-clouds",route:"/japanese-blog/2025-12-31-what-is-smart-sizing-for-smarter-clouds",frontMatter:{type:"posts",title:"Smart Sizingとは:Rightsizingを超えたスマートなクラウドへの次のステップ",date:"2025-12-31",author:"Thomas Mathew",description:"Kubernetesクラスターは過剰なリソース要求により30〜40%のリソースを無駄にしています。手動Rightsizingとvpaの限界を学び、Smart Sizingがより優れたメトリクスと統合スケーリングでどのように実用的な推奨事項を提供するかをご覧ください。",tags:["Kubernetes","Autoscaling","HPA","VPA","FinOps","Cloud Cost Optimization","SRE","DevOps","Wave Autoscale","AI Ops","Rightsizing","Smart Sizing","Resource Optimization"]}},{kind:"MdxPage",name:"2026-01-20-wave-autoscale-works-with-your-existing-infrastructure",route:"/japanese-blog/2026-01-20-wave-autoscale-works-with-your-existing-infrastructure",frontMatter:{type:"posts",title:"Wave Autoscaleとは何か:ワークロード管理 vs インフラ管理の理解",date:"2026-01-20",author:"Wave Autoscale Team",description:"Wave Autoscaleが既存のKubernetesインフラ内でワークロード最適化に焦点を当てる方法と、KarpenterやCluster Autoscalerなどのツールを置き換えるのではなく補完する方法を学びます。",tags:["Kubernetes","Autoscaling","Infrastructure","Workload Management","Karpenter","Cluster Autoscaler","Wave Autoscale","Cloud Native","DevOps","SRE","Resource Optimization"]}},{kind:"MdxPage",name:"2026-01-30-how-to-manage-enterprise-kubernetes-workloads-beyond-hpa",route:"/japanese-blog/2026-01-30-how-to-manage-enterprise-kubernetes-workloads-beyond-hpa",frontMatter:{type:"posts",title:"HPAを超えたエンタープライズKubernetesワークロード管理:スケーリング遅延の解消",date:"2026-01-30",author:"Thomas Mathew",description:"HPAの閾値ベースのスケーリングが実際のトラフィックパターンで失敗する理由と、ML駆動型オートスケーリングがどのようにスケーリング遅延を排除し、エラー率を38%からほぼゼロに削減し、最大40%のコスト削減を実現するかを解説します。",tags:["Kubernetes","Autoscaling","HPA","Wave Autoscale","Performance","SRE","DevOps","Cloud Cost Optimization","Machine Learning","Workload Management","Scaling","Enterprise Kubernetes"]}},{kind:"MdxPage",name:"2026-03-11-rethinking-kubernetes-observability",route:"/japanese-blog/2026-03-11-rethinking-kubernetes-observability",frontMatter:{type:"posts",title:"Kubernetes Observabilityを再考する",date:"2026-03-11",author:"Thomas Mathew",description:"エンジニアリングチームはKubernetesメトリクスの手動分析に全作業時間の30〜100%を費やしています。Wave Autoscaleはこの運用負担を自動化されたインテリジェンスへと変換します:7〜30日前の事前警告、自動的なroot cause分析、そして40〜60%のリソース無駄を特定する継続的な最適化。",tags:["Kubernetes","Observability","FinOps","プラットフォームエンジニアリング","SRE","Wave Autoscale","リソース最適化","キャパシティプランニング"]}},{kind:"MdxPage",name:"2026-03-12-why-traffic-shaping-is-the-missing-piece-in-your-kubernetes-scaling-strategy",route:"/japanese-blog/2026-03-12-why-traffic-shaping-is-the-missing-piece-in-your-kubernetes-scaling-strategy",frontMatter:{type:"posts",title:"トラフィックシェーピングがKubernetesスケーリング戦略に欠けている理由",date:"2026-03-12",author:"Thomas Mathew",description:"Netflix、Uber、Googleはいずれも優先度ベースの負荷シェディングを使用して、プレッシャー下で重要なサービスを保護しています。Kubernetesクラスターに同じパターンが必要な理由と実装方法をご紹介します。",tags:["Kubernetes","トラフィック管理","負荷シェディング","サービスメッシュ","プラットフォームエンジニアリング","SRE","Wave Autoscale","Wave Flow","Istio","エンタープライズKubernetes"]}},{kind:"MdxPage",name:"2026-03-13-toward-an-ai-native-control-plane-wave-autoscales-next-chapter",route:"/japanese-blog/2026-03-13-toward-an-ai-native-control-plane-wave-autoscales-next-chapter",frontMatter:{type:"posts",title:"AIネイãƒ
1†ã‚£ãƒ–コントロールプレーンへ:Wave Autoscaleの次なる章",date:"2026-03-13",author:"Wave Autoscale チーム",description:"Wave Autoscaleがスケーリングエンジンから、断片化されたツールチェーンを単一の自然言語インターフェースに置き換えるKubernetes向けAIネイティブコントロールプレーンへと進化する過程をご紹介します。",tags:["Kubernetes","AI Agent","Wave Autoscale","MCP","Agentic Operations"]}},{kind:"MdxPage",name:"2026-03-23-wave-autoscale-3-1-0",route:"/japanese-blog/2026-03-23-wave-autoscale-3-1-0",frontMatter:{type:"posts",title:"Wave Autoscale 3.1.0: Karpenterを完全に制御するノードレベルインテリジェンス",date:"2026-03-23",author:"Hwansoo Kim",description:"Wave Autoscale 3.1.0は、Amazon EKSにKarpenterの完全な可視性と制御を提供します — リアルタイムダッシュボード、イメージプリキャッシュ付きのインテリジェントなノードウォームアップ、Webhook経由のゼロタッチSpotワークロード配置、そして2倍高速なgRPC搭載Metrics Agent。",tags:["Kubernetes","Amazon EKS","Karpenter","Spot Instances","SRE","Cloud Native","DevOps","Wave Autoscale","Node Management","gRPC"]}},{kind:"MdxPage",name:"2026-04-29-wave-autoscale-3-2-0-gpu-aware-autoscaling-and-openshift-support",route:"/japanese-blog/2026-04-29-wave-autoscale-3-2-0-gpu-aware-autoscaling-and-openshift-support",frontMatter:{type:"posts",title:"Wave Autoscale 3.2.0: GPU 対応オートスケーリングと OpenShift サポート",date:"2026-04-29",author:"Hwansoo Kim",description:"Wave Autoscale 3.2.0 は、DCGM ベースのメトリクス収集、コスト追跡、無駄検出を備えた GPU 対応オートスケーリングを提供します。あわせて DeploymentConfig サポートと Red Hat 認定 Helm チャートを含む OpenShift のファーストクラス対応が追加されます。",tags:["Kubernetes","Autoscaling","GPU","NVIDIA DCGM","OpenShift","FinOps","Cost Optimization","Wave Autoscale","Platform Engineering","Helm"]}},{kind:"MdxPage",name:"2026-05-21-wave-autoscale-3-2-2",route:"/japanese-blog/2026-05-21-wave-autoscale-3-2-2",frontMatter:{type:"posts",title:"Wave Autoscale 3.2.2: SSO、Realtime Smart Sizing、Wave Diagnosis",date:"2026-05-21",author:"Hwansoo Kim",description:"Wave Autoscale 3.2.2 は in-place pod resize で Smart Sizing 推奨値とクラスタの間のループを自動で閉じ、Web Console に OIDC single sign-on を追加し、診断領域を failure-first な情報アーキテクチャに再構成します。",tags:["Kubernetes","Autoscaling","Smart Sizing","In-Place Pod Resize","SSO","OIDC","Wave Diagnosis","Wave Autoscale","Platform Engineering","SRE"]}},{kind:"Meta",data:{index:{title:"ブログ",type:"page",display:"hidden"},"2026-05-21-wave-autoscale-3-2-2":{title:"Wave Autoscale 3.2.2: SSO、Realtime Smart Sizing、Wave Diagnosis"},"2026-04-29-wave-autoscale-3-2-0-gpu-aware-autoscaling-and-openshift-support":{title:"Wave Autoscale 3.2.0: GPU 対応オートスケーリングと OpenShift サポート"},"2026-03-23-wave-autoscale-3-1-0":{title:"Wave Autoscale 3.1.0: Karpenterを完全に制御するノードレベルインテリジェンス"},"2026-03-13-toward-an-ai-native-control-plane-wave-autoscales-next-chapter":{title:"AIネイティブコントロールプレーンへ:Wave Autoscaleの次なる章"},"2026-03-12-why-traffic-shaping-is-the-missing-piece-in-your-kubernetes-scaling-strategy":{title:"トラフィックシェーピングがKubernetesスケーリング戦略に欠けている理由"},"2026-03-11-rethinking-kubernetes-observability":{title:"Kubernetes Observabilityを再考する"},"2026-01-30-how-to-manage-enterprise-kubernetes-workloads-beyond-hpa":{title:"HPAを超えたエンタープライズKubernetesワークロード管理:スケーリング遅延の解消"},"2026-01-20-wave-autoscale-works-with-your-existing-infrastructure":{title:"ワークロード管理 vs インフラ管理の理解"},"2025-12-31-what-is-smart-sizing-for-smarter-clouds":{title:"Smart Sizingとは:Rightsizingを超えたスマートなクラウドへの次のステップ"},"2025-12-30-AI-driven-vs-Rules-based-Scaling-What-Saves-More":{title:"AI駆動型スケーリング vs ルールベーススケーリング:どちらがコスト削減に効果的か?"},"2025-01-13-why-kubernetes-automation-matters":{title:"なぜKubernetesの自動化が重要なのか:複雑さを簡素化し、生産性を向上させる"}}}]},{kind:"Folder",name:"korean-blog",route:"/korean-blog",children:[{kind:"MdxPage",name:"2025-01-13-why-kubernetes-automation-matters",route:"/korean-blog/2025-01-13-why-kubernetes-automation-matters",frontMatter:{type:"posts",title:"쿠버네티스 자동화의 중요성: 복잡성 단순화, 생산성 향상",date:"2025-01-13T00:00:00.000Z",author:"Hwansoo Kim",description:"팀이 쿠버네티스의 복잡성에 압도되고 있습니까? 컨테이너화된 애플리케이션이 증가함에 따라 대규모로 쿠버네티스를 관리하는 것은 엄청난 도전 과제가 되었습니다. 자동화가 단순히 도움이 되는 것이 아니라 현대 클라우드 네이티브 환경에서 필수적인 이유를 알아보세요.",tags:["Kubernetes","Automation","Cloud-Native","DevOps"]}},{kind:"MdxPage",name:"2025-02-12-hpa-is-not-enough-for-your-kubernetes-operation",route:"/korean-blog/2025-02-12-hpa-is-not-enough-for-your-kubernetes-operation",frontMatter:{type:"posts",title:"HPA만으로는 Kubernetes 운영이 부족한 이유",date:"2025-02-12T00:00:00.000Z",author:"Hwansoo Kim",description:"HPA만으로는 Kubernetes 스케일링이 부족합니다! Horizontal Pod Autoscaler(HPA)의 느린 반응 속도, 트래픽 예측 한계, 비용 비효율성을 극복하고, Wave Autoscale이 AI로 어떻게 스케일링을 최적화하는지 알아보세요. \uD83D\uDE80",tags:["Kubernetes","Automation","Cloud-Native","DevOps","HPA","VPA"]}},{kind:"MdxPage",name:"2025-04-04-what-llms-can-do-for-sres-in-cloud-native-infrastru
1cture",route:"/korean-blog/2025-04-04-what-llms-can-do-for-sres-in-cloud-native-infrastructure",frontMatter:{type:"posts",title:"클라우드 네이티브 인프라에서 LLM이 SRE를 위해 할 수 있는 일",date:"2025-04-04T00:00:00.000Z",author:"Hwansoo Kim",description:"대규모 언어 모델(LLM)이 클라우드 네이티브 운영 방식을 어떻게 변화시키고 있는지 살펴보세요. SRE의 워크플로우를 보완하고, AI 기반 자동화를 통해 복잡한 Kubernetes 인프라를 소수 인원으로도 운영할 수 있도록 지원합니다.",tags:["Kubernetes","SRE","Cloud Native","Infrastructure Automation","AI in DevOps","Large Language Models","LLM","Kubernetes Scaling","Kubernetes Automation","AI Ops","Machine Learning","DevOps Tools","Wave Autoscale","Site Reliability Engineering","Pod Recovery","Smart Sizing","Horizontal Scaling","Vertical Scaling","Cloud Infrastructure","CNCF"]}},{kind:"MdxPage",name:"2025-04-23-wave-autoscale-2-4-0",route:"/korean-blog/2025-04-23-wave-autoscale-2-4-0",frontMatter:{type:"posts",title:"Wave Autoscale 2.4.0",date:"2025-04-23",author:"Hwansoo Kim",description:"Wave Autoscale 2.4.0",tags:["Kubernetes","SRE","Cloud Native","Infrastructure Automation","AI in DevOps","Large Language Models","LLM","Kubernetes Scaling","Kubernetes Automation","AI Ops","Machine Learning","DevOps Tools","Wave Autoscale","Site Reliability Engineering","Pod Recovery","Smart Sizing","Horizontal Scaling","Vertical Scaling","Cloud Infrastructure","CNCF"]}},{kind:"MdxPage",name:"2025-05-13-wave-autoscale-2-5-0",route:"/korean-blog/2025-05-13-wave-autoscale-2-5-0",frontMatter:{type:"posts",title:"Wave Autoscale 2.5.0",date:"2025-05-13",author:"Hwansoo Kim",description:"Wave Autoscale 2.5.0",tags:["Kubernetes","SRE","Cloud Native","Infrastructure Automation","Kubernetes Monitoring","AI in DevOps","Kubernetes Scaling","Kubernetes Automation","DevOps Tools","Wave Autoscale","Cluster Report","HPA Migration"]}},{kind:"MdxPage",name:"2025-06-24-wave-autoscale-2-6-0",route:"/korean-blog/2025-06-24-wave-autoscale-2-6-0",frontMatter:{type:"posts",title:"Wave Autoscale 2.6.0",date:"2025-06-24",author:"Hwansoo Kim",description:"Wave Autoscale 2.6.0",tags:["Kubernetes","SRE","Cloud Native","Infrastructure Automation","Kubernetes Monitoring","AI in DevOps","Kubernetes Scaling","Kubernetes Automation","DevOps Tools","Wave Autoscale","Istio","Autopilot","WASM"]}},{kind:"MdxPage",name:"2025-07-21-wave-autoscale-2-7-0",route:"/korean-blog/2025-07-21-wave-autoscale-2-7-0",frontMatter:{type:"posts",title:"Wave Autoscale 2.7.0",date:"2025-07-21",author:"Hwansoo Kim",description:"Wave Autoscale 2.7.0 adds NetFUNNEL SaaS integration, Prometheus export, OpenShift fix, and Fargate support.",tags:["Kubernetes","SRE","Cloud Native","Infrastructure Automation","DevOps Tools","Wave Autoscale","NetFUNNEL","Prometheus","Grafana","AWS Fargate","OpenShift"]}},{kind:"MdxPage",name:"2025-11-28-wave-autoscale-3-0",route:"/korean-blog/2025-11-28-wave-autoscale-3-0",frontMatter:{type:"posts",title:"Wave Autoscale 3.0",date:"2025-11-28",author:"Hwansoo Kim",description:"Wave Autoscale 3.0은 오토스케일링 도구에서 완전한 Kubernetes Day 2 운영 플랫폼으로 진화했습니다.",tags:["Kubernetes","SRE","Cloud Native","Infrastructure Automation","DevOps Tools","Wave Autoscale","NetFUNNEL","Prometheus","Grafana","AWS Fargate","OpenShift"]}},{kind:"MdxPage",name:"2025-12-16-8-hidden-costs-in-kubernetes-clusters-and-how-to-eliminate-them",route:"/korean-blog/2025-12-16-8-hidden-costs-in-kubernetes-clusters-and-how-to-eliminate-them",frontMatter:{type:"posts",title:"Kubernetes 클러스터의 숨은 비용 8가지와 비용을 최적화하는 방법",date:"2025-12-16",author:"Thomas Mathew",description:"Kubernetes 예산을 잠식하는 8가지 숨은 비용 요인—과도한 프로비저닝, 방치된 스토리지, 반응형 스케일링 지연 등—과 지능형 자동화로 이를 해결하는 방법을 알아봅니다.",tags:["Kubernetes","FinOps","클라우드 비용 최적화","SRE","Cloud Native","DevOps","Wave Autoscale","Autoscaling","리소스 관리"]}},{kind:"MdxPage",name:"2025-12-30-AI-driven-vs-Rules-based-Scaling-What-Saves-More",route:"/korean-blog/2025-12-30-AI-driven-vs-Rules-based-Scaling-What-Saves-More",frontMatter:{type:"posts",title:"AI 기반 스케일링 vs. 규칙 기반 스케일링, 비용 절감에 더 효과적인 선택은?",date:"2025-12-30",author:"Thomas Mathew",description:"규칙 기반 Kubernetes 자동 확장은 규모가 커지면 한계에 부딪히며, 고정 임계값은 수백 개의 진화하는 워크로드를 따라갈 수 없습니다. AI 기반 스케일링이 어떻게 수동 조정을 제거하고 최대 40%의 비용 절감을 제공하는지 알아보세요.",tags:["Kubernetes","Autoscaling","HPA","KEDA","FinOps","Cloud Cost Optimization","SRE","DevOps","Wave Autoscale","AI Ops"]}},{kind:"MdxPage",name:"2025-12-31-what-is-smart-sizing-for-smarter-clouds",route:"/korean-blog/2025-12-31-what-is-smart-sizing-for-smarter-clouds",frontMatter:{type:"posts",title:"Smart Sizing이란 무엇인가: Rightsizing을 넘어선 더 스마트한 클라우드",date:"2025-12-31",author:"Thomas Mathew",description:"Kubernetes 클러스터는 과도한 리소스 요청으로 인해 30-40%의 리소스를 낭비합니다. 수동 Rightsizing과 VPA의 한계를 알아보고, Smart Sizing이 어떻게 더 나은 메트릭과 통합 스케일링으로 실행 가능한 권장 사항을 제공하는지 알아보세요.",tags:["Kubernetes","Autoscaling","HPA","VPA","FinOps","Cloud Cost Optimization","SRE","DevOps","Wave Autoscale","AI Ops","Rightsizing","Smart Sizing","Resource Optimization"]}},{kind:"MdxPage",name:"2026-01-20-wave-autoscale-works-with-your-existing-infrastru
1cture",route:"/korean-blog/2026-01-20-wave-autoscale-works-with-your-existing-infrastructure",frontMatter:{type:"posts",title:"Wave Autoscale이란 무엇인가: 워크로드 관리 vs 인프라 관리 이해하기",date:"2026-01-20",author:"Wave Autoscale Team",description:"Wave Autoscale이 기존 Kubernetes 인프라에서 워크로드 최적화에 집중하는 방법과 Karpenter, Cluster Autoscaler 같은 도구를 대체하는 것이 아니라 보완하는 방법을 알아보세요.",tags:["Kubernetes","Autoscaling","Infrastructure","Workload Management","Karpenter","Cluster Autoscaler","Wave Autoscale","Cloud Native","DevOps","SRE","Resource Optimization"]}},{kind:"MdxPage",name:"2026-01-30-how-to-manage-enterprise-kubernetes-workloads-beyond-hpa",route:"/korean-blog/2026-01-30-how-to-manage-enterprise-kubernetes-workloads-beyond-hpa",frontMatter:{type:"posts",title:"HPA를 넘어선 엔터프라이즈 Kubernetes 워크로드 관리 방법: 스케일링 지연 제거",date:"2026-01-30",author:"Thomas Mathew",description:"HPA의 임계값 기반 스케일링이 실제 트래픽 패턴에서 실패하는 이유와 ML 기반 오토스케일링이 어떻게 스케일링 지연을 제거하고 에러율을 38%에서 거의 0%로 낮추며 비용을 최대 40%까지 절감하는지 알아보세요.",tags:["Kubernetes","Autoscaling","HPA","Wave Autoscale","Performance","SRE","DevOps","Cloud Cost Optimization","Machine Learning","Workload Management","Scaling","Enterprise Kubernetes"]}},{kind:"MdxPage",name:"2026-03-11-rethinking-kubernetes-observability",route:"/korean-blog/2026-03-11-rethinking-kubernetes-observability",frontMatter:{type:"posts",title:"Kubernetes Observability를 다시 생각하다",date:"2026-03-11",author:"Thomas Mathew",description:"엔지니어링 팀은 Kubernetes metrics를 분석하는 수동 반복 작업에 전체 시간의 30%~100%를 사용합니다. Wave Autoscale은 이 운영 부담을 자동화된 인텔리전스로 전환합니다: 7~30일 전 사전 경고, 자동 root cause 분석, 그리고 40~60%의 리소스 낭비를 식별하는 지속적인 최적화.",tags:["Kubernetes","Observability","FinOps","플랫폼 엔지니어링","SRE","Wave Autoscale","리소스 최적화","용량 계획"]}},{kind:"MdxPage",name:"2026-03-12-why-traffic-shaping-is-the-missing-piece-in-your-kubernetes-scaling-strategy",route:"/korean-blog/2026-03-12-why-traffic-shaping-is-the-missing-piece-in-your-kubernetes-scaling-strategy",frontMatter:{type:"posts",title:"트래픽 셰이핑이 Kubernetes 스케일링 전략에서 빠진 이유",date:"2026-03-12",author:"Thomas Mathew",description:"Netflix, Uber, Google은 모두 우선순위 기반 부하 차단을 사용해 압박 상황에서 핵심 서비스를 보호합니다. Kubernetes 클러스터에 동일한 패턴이 필요한 이유와 구현 방법을 알아보세요.",tags:["Kubernetes","트래픽 관리","부하 차단","서비스 메시","플랫폼 엔지니어링","SRE","Wave Autoscale","Wave Flow","Istio","엔터프라이즈 Kubernetes"]}},{kind:"MdxPage",name:"2026-03-13-toward-an-ai-native-control-plane-wave-autoscales-next-chapter",route:"/korean-blog/2026-03-13-toward-an-ai-native-control-plane-wave-autoscales-next-chapter",frontMatter:{type:"posts",title:"AI 네이티브 컨트롤 플레인을 향하여: Wave Autoscale의 다음 챕터",date:"2026-03-13",author:"Wave Autoscale 팀",description:"Wave Autoscale이 스케일링 엔진에서 Kubernetes를 위한 AI 네이티브 컨트롤 플레인으로 진화하는 과정 — 분산된 도구 체인을 하나의 자연어 인터페이스로 통합합니다.",tags:["Kubernetes","AI Agent","Wave Autoscale","MCP","Agentic Operations"]}},{kind:"MdxPage",name:"2026-03-23-wave-autoscale-3-1-0",route:"/korean-blog/2026-03-23-wave-autoscale-3-1-0",frontMatter:{type:"posts",title:"Wave Autoscale 3.1.0: Karpenter를 완벽하게 제어하는 노드 레벨 인텔리전스",date:"2026-03-23",author:"Hwansoo Kim",description:"Wave Autoscale 3.1.0은 Amazon EKS에 Karpenter의 완전한 가시성과 제어를 제공합니다 — 실시간 대시보드, 이미지 사전 캐싱이 포함된 지능형 노드 워밍업, 웹훅 기반의 제로터치 Spot 워크로드 배치, 그리고 2배 빠른 gRPC 기반 Metrics Agent.",tags:["Kubernetes","Amazon EKS","Karpe
1nter","Spot Instances","SRE","Cloud Native","DevOps","Wave Autoscale","Node Management","gRPC"]}},{kind:"MdxPage",name:"2026-04-29-wave-autoscale-3-2-0-gpu-aware-autoscaling-and-openshift-support",route:"/korean-blog/2026-04-29-wave-autoscale-3-2-0-gpu-aware-autoscaling-and-openshift-support",frontMatter:{type:"posts",title:"Wave Autoscale 3.2.0: GPU 인지형 오토스케일링과 OpenShift 지원",date:"2026-04-29",author:"Hwansoo Kim",description:"Wave Autoscale 3.2.0은 DCGM 기반 메트릭 수집, 비용 추적, 낭비 감지를 통해 GPU 인지형 오토스케일링을 제공합니다. 동시에 DeploymentConfig 지원과 Red Hat 인증 Helm 차트를 포함한 OpenShift 풀(first-class) 지원이 추가됩니다.",tags:["Kubernetes","Autoscaling","GPU","NVIDIA DCGM","OpenShift","FinOps","Cost Optimization","Wave Autoscale","Platform Engineering","Helm"]}},{kind:"MdxPage",name:"2026-05-21-wave-autoscale-3-2-2",route:"/korean-blog/2026-05-21-wave-autoscale-3-2-2",frontMatter:{type:"posts",title:"Wave Autoscale 3.2.2: SSO, Realtime Smart Sizing, Wave Diagnosis",date:"2026-05-21",author:"Hwansoo Kim",description:"Wave Autoscale 3.2.2 는 in-place pod resize 로 Smart Sizing 권장값과 클러스터 사이의 루프를 자동으로 닫고, Web Console 에 OIDC single sign-on 을 추가하며, 진단 영역을 failure-first 정보 구조로 재구성합니다.",tags:["Kubernetes","Autoscaling","Smart Sizing","In-Place Pod Resize","SSO","OIDC","Wave Diagnosis","Wave Autoscale","Platform Engineering","SRE"]}},{kind:"Meta",data:{index:{title:"블로그",type:"page",display:"hidden"},"2026-05-21-wave-autoscale-3-2-2":{title:"Wave Autoscale 3.2.2: SSO, Realtime Smart Sizing, Wave Diagnosis"},"2026-04-29-wave-autoscale-3-2-0-gpu-aware-autoscaling-and-openshift-support":{title:"Wave Autoscale 3.2.0: GPU 인지형 오토스케일링과 OpenShift 지원"},"2026-03-23-wave-autoscale-3-1-0":{title:"Wave Autoscale 3.1.0: Karpenter를 완벽하게 제어하는 노드 레벨 인텔리전스"},"2026-03-13-toward-an-ai-native-control-plane-wave-autoscales-next-chapter":{title:"AI 네이티브 컨트롤 플레인을 향하여: Wave Autoscale의 다음 챕터"},"2026-03-12-why-traffic-shaping-is-the-missing-piece-in-your-kubernetes-scaling-strategy":{title:"트래픽 셰이핑이 Kubernetes 스케일링 전략에서 빠진 이유"},"2026-03-11-rethinking-kubernetes-observability":{title:"Kubernetes Observability를 다시 생각하다"},"2026-01-30-how-to-manage-enterprise-kubernetes-workloads-beyond-hpa":{title:"HPA를 넘어선 엔터프라이즈 Kubernetes 워크로드 관리 방법: 스케일링 지연 제거"},"2026-01-20-wave-autoscale-works-with-your-existing-infrastructure":{title:"Wave Autoscale은 기존 인프라와 완벽하게 연동됩니다: 워크로드 관리 vs 인프라 관리의 이해"},"2025-12-31-what-is-smart-sizing-for-smarter-clouds":{title:"Smart Sizing이란 무엇인가: Rightsizing을 넘어선 더 스마트한 클라우드"},"2025-12-30-AI-driven-vs-Rules-based-Scaling-What-Saves-More":{title:"AI 기반 스케일링 vs. 규칙 기반 스케일링, 비용 절감에 더 효과적인 선택은?"},"2025-12-16-8-hidden-costs-in-kubernetes-clusters-and-how-to-eliminate-them":{title:"Kubernetes 클러스터의 숨은 비용 8가지와 비용을 최적화하는 방법"},"2025-11-28-wave-autoscale-3-0":{title:"Wave Autoscale 3.0 업데이트"},"2025-07-21-wave-autoscale-2-7-0":{title:"Wave Autoscale 2.7.0 업데이트"},"2025-06-24-wave-autoscale-2-6-0":{title:"Wave Autoscale 2.6.0 업데이트"},"2025-05-13-wave-autoscale-2-5-0":{title:"Wave Autoscale 2.5.0 업데이트"},"2025-04-23-wave-autoscale-2-4-0":{title:"Wave Autoscale 2.4.0 업데이트"},"2025-04-04-what-llms-can-do-for-sres-in-cloud-native-infrastructure":{title:"클라우드 네이티브 인프라에서 LLM이 SRE를 위해 할 수 있는 일"},"2025-02-12-hpa-is-not-enough-for-your-kubernetes-operation":{title:"HPA만으로는 Kubernetes 운영이 부족한 이유"},"2025-01-13-why-kubernetes-automation-matters":{title:"왜 Kubernetes 자동화가 중요한가"}}}]},{kind:"Folder",name:"korean-docs",route:"/korean-docs",children:[{kind:"Meta",data:{"--- 개요":{title:"개요",type:"separator"},introduction:{title:"소개",theme:{sidebar:!0,toc:!0}},"wave-vs-hpa-vpa-prometheus":{title:"Wave vs HPA, VPA, Prometheus",theme:{sidebar:!0,toc:!0}},architecture:{title:"아키텍처",theme:{sidebar:!0,toc:!0}},"--- 시작하기":{title:"시작하기",type:"separator"},"important-before-you-begin":{title:"시작하기 전에",theme:{sidebar:!0,toc:!0}},"quick-start":{title:"빠른 시작"},"installation-guides":{title:"설치 가이드"},"helm-values-environment-variables":{title:"Helm 값 & 환경 변수",theme:{sidebar:!0,toc:!0}},"crd-mode":{title:"CRD 모드",theme:{sidebar:!0,toc:!0}},"--- 기능":{title:"기능",type:"separator"},"wave-sizing":{title:"Wave Sizing",theme:{collapsed:!0}},"wave-autoscale":{title:"Wave Autoscale",theme:{collapsed:!0}}
1,"wave-diagnosis":{title:"Wave Diagnosis",theme:{collapsed:!0}},"wave-karpenter":{title:"Wave Karpenter",theme:{collapsed:!0}},"wave-flow":{title:"Wave Flow",theme:{collapsed:!0}},"additional-features":{title:"추가 기능",theme:{collapsed:!0}},administration:{title:"관리",theme:{collapsed:!0}},reference:{title:"레퍼런스",theme:{collapsed:!0}}}},{kind:"Folder",name:"additional-features",route:"/korean-docs/additional-features",children:[{kind:"Meta",data:{"*":{theme:{sidebar:!0,toc:!0}},"pv-lifecycle":{title:"PV 라이프사이클"},alerts:{title:"Alerts"}}},{kind:"Folder",name:"alerts",route:"/korean-docs/additional-features/alerts",children:[{kind:"Meta",data:{overview:{title:"개요"},"getting-started":{title:"시작하기"},"how-it-works":{title:"동작 방식"},crds:{title:"CRDs"}}},{kind:"MdxPage",name:"crds",route:"/korean-docs/additional-features/alerts/crds",frontMatter:{title:"Alert CRD",description:"CRD Mode에서 Alerts를 설정하는 두 가지 CRD 종류에 대한 필드 레퍼런스입니다.",searchable:!0}},{kind:"MdxPage",name:"getting-started",route:"/korean-docs/additional-features/alerts/getting-started",frontMatter:{title:"Alerts 시작하기"}},{kind:"MdxPage",name:"how-it-works",route:"/korean-docs/additional-features/alerts/how-it-works",frontMatter:{title:"Alerts 동작 방식"}},{kind:"MdxPage",name:"overview",route:"/korean-docs/additional-features/alerts/overview",frontMatter:{title:"Alerts 개요"}}]},{kind:"Folder",name:"pv-lifecycle",route:"/korean-docs/additional-features/pv-lifecycle",children:[{kind:"Meta",data:{overview:{title:"개요"},"getting-started":{title:"시작하기"},"auto-clean-up":{title:"자동 정리"},"auto-expansion":{title:"자동 확장"},"capacity-forecast":{title:"PV 용량 예측"},"unused-detection":{title:"미사용 PV 감지"},crds:{title:"CRDs"}}},{kind:"MdxPage",name:"auto-clean-up",route:"/korean-docs/additional-features/pv-lifecycle/auto-clean-up",frontMatter:{title:"Auto Clean Up"}},{kind:"MdxPage",name:"auto-expansion",route:"/korean-docs/additional-features/pv-lifecycle/auto-expansion",frontMatter:{title:"Auto Expansion"}},{kind:"MdxPage",name:"capacity-forecast",route:"/korean-docs/additional-features/pv-lifecycle/capacity-forecast",frontMatter:{title:"PV Capacity Forecast"}},{kind:"MdxPage",name:"crds",route:"/korean-docs/additional-features/pv-lifecycle/crds",frontMatter:{title:"PV Lifecycle CRD",description:"CRD Mode에서 PVC auto-expansion을 설정하는 WavePvcAutoExpansion CRD kind의 필드 레퍼런스입니다.",searchable:!0}},{kind:"MdxPage",name:"getting-started",route:"/korean-docs/additional-features/pv-lifecycle/getting-started",frontMatter:{title:"PV Lifecycle Management 시작하기"}},{kind:"MdxPage",name:"overview",route:"/korean-docs/additional-features/pv-lifecycle/overview",frontMatter:{title:"PV Lifecycle Management 개요"}},{kind:"MdxPage",name:"unused-detection",route:"/korean-docs/additional-features/pv-lifecycle/unused-detection",frontMatter:{title:"Unused PV Detection"}}]}]},{kind:"Folder",name:"administration",route:"/korean-docs/administration",children:[{kind:"Meta",data:{"sso-setup":{title:"SSO 설정 (OIDC)"}}},{kind:"MdxPage",name:"sso-setup",route:"/korean-docs/administration/sso-setup",frontMatter:{title:"SSO 설정 (OIDC)",description:"Wave 웹 콘솔에 OpenID Connect(OIDC) 기반 싱글 사인온을 설정합니다. Okta, Microsoft Entra ID(Azure AD), Google Workspace, Keycloak 등 표준을 준수하는 모든 OIDC 제공자를 지원합니다.",searchable:!0}}]},{kind:"MdxPage",name:"architecture",route:"/korean-docs/architecture",frontMatter:{title:"아키텍처",description:"확장성과 안정성, 기존 Kubernetes 환경과의 매끄러운 통합을 위한 Wave의 클라우드 네이티브 아키텍처입니다. 중앙 집중형 StatefulSetê³¼ 노드별 DaemonSet에 걸친 다섯 가지 핵심 구성 요소로 이루어져 있습니다."}},{kind:"MdxPage",name:"crd-mode",route:"/korean-docs/crd-mode",frontMatter:{title:"CRD Mode",description:"Wave의 모든 운영 설정을 Git 안의 Kubernetes Custom Resource로 관리하는 방법입니다. Console Mode와 CRD Mode의 차이, 활ì„
1±í™” 방법, 14가지 CRD kind, 동기화 상태, ArgoCD 연동을 다룹니다.",searchable:!0}},{kind:"MdxPage",name:"helm-values-environment-variables",route:"/korean-docs/helm-values-environment-variables",frontMatter:{title:"Helm Values 및 환경 변수",description:"Wave의 환경 변수와 Helm values 전체 레퍼런스입니다."}},{kind:"MdxPage",name:"important-before-you-begin",route:"/korean-docs/important-before-you-begin",frontMatter:{title:"중요: 시작하기 전에",description:"처음 사용하는 분들이 자주 놓치는 Wave의 런타임 동작 방식입니다. ML 학습 warmup, 모니터링 모드, 10분 분석 주기, Realtime Resizing 관련 주의 사항을 다룹니다."}},{kind:"Folder",name:"installation-guides",route:"/korean-docs/installation-guides",children:[{kind:"Meta",data:{"amazon-eks":{title:"Amazon EKS"},openshift:{title:"Red Hat OpenShift"},"generic-kubernetes":{title:"일반 Kubernetes"}}},{kind:"MdxPage",name:"amazon-eks",route:"/korean-docs/installation-guides/amazon-eks",frontMatter:{title:"Amazon EKS 설치",description:"AWS Marketplace(Metered 또는 BYOL) 또는 GHCR를 통해 Amazon EKS에 Wave를 설치합니다."}},{kind:"MdxPage",name:"generic-kubernetes",route:"/korean-docs/installation-guides/generic-kubernetes",frontMatter:{title:"범용 Kubernetes 설치",description:"GHCR를 통해 AKS, GKE, OKD 또는 자체 관리형 Kubernetes에 Wave를 설치합니다. 에어갭 환경 및 프라이빗 레지스트리 가이드도 포함합니다."}},{kind:"MdxPage",name:"openshift",route:"/korean-docs/installation-guides/openshift",frontMatter:{title:"Red Hat OpenShift 설치",description:"인증된 Operator(OperatorHub), Red Hat Ecosystem Catalog Helm 차트 또는 GHCR를 통해 OpenShift에 Wave를 설치합니다."}}]},{kind:"MdxPage",name:"introduction",route:"/korean-docs/introduction",frontMatter:{title:"Wave 소개",description:"Wave는 쿠버네티스 운영을 위한 베스트 프랙티스 운영 레이어입니다. Day 2 운영을 권고하고 자동화합니다. 스케일링, 사이징, 노드 관리, 트래픽, 진단을 아우르는 여섯 개 서브 브랜드를 제공합니다."}},{kind:"MdxPage",name:"quick-start",route:"/korean-docs/quick-start",frontMatter:{title:"빠른 시작",description:"플랫폼을 선택하고 Kubernetes에 Wave를 설치합니다."}},{kind:"Folder",name:"reference",route:"/korean-docs/reference",children:[{kind:"Meta",data:{"*":{theme:{sidebar:!0,toc:!0}},"api-reference":{title:"API 레퍼런스",href:"/api-reference"},troubleshooting:{title:"문제 해결"}}},{kind:"MdxPage",name:"troubleshooting",route:"/korean-docs/reference/troubleshooting",frontMatter:{title:"문제 해결",description:"자주 발생하는 문제와 해결 방법입니다."}}]},{kind:"Folder",name:"wave-autoscale",route:"/korean-docs/wave-autoscale",children:[{kind:"Meta",data:{overview:{title:"개요"},"getting-started":{title:"시작하기"},"core-configuration":{title:"핵심 구성"},"cost-vs-performance":{title:"비용 대 성능 최적화"},"predictive-scaling":{title:"Predictive Scaling"},"timing-controls":{title:"타이밍 제어"},scheduler:{title:"Autopilot Scheduler"},"min-max-recommendations":{title:"Min/Max Recommendations"},crds:{title:"CRDs"}}},{kind:"MdxPage",name:"core-configuration",route:"/korean-docs/wave-autoscale/core-configuration",frontMatter:{title:"Autopilot Core Configuration | Wave",description:"스케일링 임계값, 메트릭, 정책 옵션을 포함한 Wave Autopilot의 전체 설정 레퍼런스입니다."}},{kind:"MdxPage",name:"cost-vs-performance",route:"/korean-docs/wave-autoscale/cost-vs-performance",frontMatter:{title:"Autopilot Cost vs Performance 최적화 | Wave",description:"비용 최적화와 성능 최적화라는 두 가지 Autopilot 스케일링 전략을 이해하고, 워크로드에 맞는 전략을 선택하는 방법을 알아봅니다."}},{kind:"MdxPage",name:"crds",route:"/korean-docs/wave-autoscale/crds",frontMatter:{title:"Wave Autoscale CRD 참조",description:"CRD Mode에서 Wave Autoscale(Autopilot)을 설정하는 세 가지 CRD kind의 필드 레퍼런스입니다.",searchable:!0}},{kind:"MdxPage",name:"getting-started",route:"/korean-docs/wave-autoscale/getting-started",frontMatter:{title:"Autopilot 시작하기 | Wave",description:"Autopilot 페이지에서 몇 분 만에 Kubernetes 워크로드에 Wave Autopilot을 활성화하는 빠른 시작 가이드입니다."}},{kind:"MdxPage",name:"min-max-recommendations",route:"/korean-docs/wave-autoscale/min-max-recommendations",frontMatter:{title:"Min/Max Recommendations | Wave",description:"각 Deployment의 트래픽 패턴을 바탕으로 산출하는, Autopilot의 ML 기반 최소/최대 레플리카 범위입니다."}},{kind:"MdxPage",name:"overview",route:"/korean-docs/wave-autoscale/overview",frontMatter:{title:"Autopilot 개요 | Wave",description:"Wave Autopilot이 ML 기반 수평 Pod 오토스케일링으로 수초 내에 반응하고 수동 HPA 설정을 대체하는 방법을 알아봅니다."}},{kind:"MdxPage",name:"predictive-scaling",route:"/korean-docs/wave-autoscale/predictive-scaling",frontMatter:{title:"Autopilot Predictive Scaling | Wave",description:"Wave Autopilot이 시계열 포캐스팅으로 향후 부하를 가늠해 트래픽 발생 전에 워크로드를 스케일링함으로써 지연 시간 급증을 방지하는 방법을 설명합니다."}},{kind:"MdxPage",name:"scheduler",route:"/korean-docs/wave-autoscale/scheduler",frontMatter:{title:"Autopilot Scheduler | Wave",description:"cron 표현식을 사용해 특정 시간에 서로 다른 Autopilot 설정을 적용합니다. 영업시간, 프로모션 이벤트, 유지보수 기간에 적합합니다."}}
1,{kind:"MdxPage",name:"timing-controls",route:"/korean-docs/wave-autoscale/timing-controls",frontMatter:{title:"Autopilot Timing Controls | Wave",description:"응답성과 안정성의 균형을 맞추는 타이밍 제어로 Autopilot의 스케일링 동작을 세밀하게 조정하는 방법을 설명합니다. scale-up 지연, scale-down stabilization, cooldown 기간을 다룹니다."}}]},{kind:"Folder",name:"wave-diagnosis",route:"/korean-docs/wave-diagnosis",children:[{kind:"Meta",data:{overview:{title:"개요"},crds:{title:"CRDs"},"--- Failures":{title:"장애",type:"separator"},"pod-container-failures":{title:"Pod/컨테이너 장애"},"memory-leak-detection":{title:"메모리 누수 감지"},"pod-scheduling-delay":{title:"Pod 스케줄링 지연"},"cpu-utilization":{title:"워크로드 CPU 사용률"},"--- Waste":{title:"낭비",type:"separator"},"idle-node-detection":{title:"유휴 노드 감지"},"--- Capacity":{title:"용량",type:"separator"},"cluster-resource-forecast":{title:"클러스터 리소스 예측"},"pv-capacity-forecast":{title:"PV 용량 예측"}}},{kind:"MdxPage",name:"cluster-resource-forecast",route:"/korean-docs/wave-diagnosis/cluster-resource-forecast",frontMatter:{title:"Cluster Resource Forecast",description:"Cluster Resource Forecast는 클러스터 수준의 CPU와 메모리 사용률을 7일, 30일 시점으로 예측해서, 클러스터가 부족해지기 전에 용량을 추가하거나 워크로드를 적정 사이징할 수 있게 합니다.",searchable:!0}},{kind:"MdxPage",name:"cpu-utilization",route:"/korean-docs/wave-diagnosis/cpu-utilization",frontMatter:{title:"Workload CPU Utilization Analysis",description:"Workload CPU Utilization Analysis는 모든 워크로드를 CPU 부하 수준에 따라 네 단계로 분류해서, 클러스터 전체에서 CPU가 부족한 워크로드와 과다 프로비저닝된 워크로드를 한눈에 찾아낼 수 있게 합니다.",searchable:!0}},{kind:"MdxPage",name:"crds",route:"/korean-docs/wave-diagnosis/crds",frontMatter:{title:"Wave Diagnosis CRDs",description:"CRD Mode에서 Wave Diagnosis 작업을 설정하는 WaveDiagnosisConfig CRD 종류의 필드 레퍼런스입니다.",searchable:!0}},{kind:"MdxPage",name:"idle-node-detection",route:"/korean-docs/wave-diagnosis/idle-node-detection",frontMatter:{title:"Idle Node Detection",description:"Idle Node Detection은 비용은 내지만 실제로 쓰이지 않는 Node, 즉 DaemonSet만 돌고 있거나 아예 Pod가 없는 Node를 찾아내고, 낭비되는 CPU와 메모리를 수치화해서 통합하거나 스케일 다운할 수 있게 합니다.",searchable:!0}},{kind:"MdxPage",name:"memory-leak-detection",route:"/korean-docs/wave-diagnosis/memory-leak-detection",frontMatter:{title:"Memory Leak Detection",description:"Memory Leak Detection은 메모리 최저치가 계속 올라가는 워크로드를 찾아내고, memory limit에 근접해 실행 중인 워크로드를 알려줘서, OOMKill이 나기 전에 미리 대응할 수 있게 합니다.",searchable:!0}},{kind:"MdxPage",name:"overview",route:"/korean-docs/wave-diagnosis/overview",frontMatter:{title:"Wave Diagnosis 개요",description:"Wave Diagnosis는 운영자가 묻는 세 가지 질문, 즉 지금 무엇이 실패하고 있는지, 비용이 어디서 새고 있는지, 무엇이 곧 부족해질지에 직접 답하는 진단 콘솔입니다. 대시보드를 해석하는 대신 클러스터의 원시 신호를 곧바로 답으로 바꿔줍니다."}},{kind:"MdxPage",name:"pod-container-failures",route:"/korean-docs/wave-diagnosis/pod-container-failures",frontMatter:{title:"Pod/Container Failures",description:"Pod/Container Failures는 에이전트가 전송하는 데이터에서 비정상적인 Pod 및 컨테이너 종료(OOMKilled, CrashLoopBackOff, silent crash, eviction, preemption 등)를 직접 감지하고, 근본 원인을 찾는 데 필요한 로그, YAML, 인시던트 타임라인을 수집합니다.",searchable:!0}},{kind:"MdxPage",name:"pod-scheduling-delay",route:"/korean-docs/wave-diagnosis/pod-scheduling-delay",frontMatter:{title:"Pod Scheduling Delay Detection",description:"Pod Scheduling Delay Detection은 Pod가 Pending 상태로 얼마나 오래 대기했는지와 그 이유를, 워크로드별 정확한 스케줄러 조건과 함께 추적합니다. 그래서 실제 용량 부족과 잘못된 pod spec 설정을 한눈에 구분할 수 있습니다.",searchable:!0}},{kind:"MdxPage",name:"pv-capacity-forecast",route:"/korean-docs/wave-diagnosis/pv-capacity-forecast",frontMatter:{title:"PV Capacity Forecast",description:"PV Capacity Forecast는 각 PersistentVolume의 사용량을 7일, 30일 시점으로 예측해서, 볼륨이 가득 차서 애플리케이션이 멈추기 전에 스토리지를 확장하거나 정리할 수 있게 합니다.",searchable:!0}}]},{kind:"Folder",name:"wave-flow",route:"/korean-docs/wave-flow",children:[{kind:"Meta",data:{overview:{title:"개요",theme:{sidebar:!0,toc:!0}},"getting-started":{title:"시작하기",theme:{sidebar:!0,toc:!0}},"priority-load-shedding":{title:"우선순위 기반 트래픽 보호",theme:{sidebar:!0,toc:!0}},netfunnel:{title:"NetFUNNEL 연동"},crds:{title:"CRDs"}}},{kind:"MdxPage",name:"crds",route:"/korean-docs/wave-flow/crds",frontMatter:{title:"Wave Flow CRD",description:"CRD Mode에서 Wave Flow를 설정하는 세 가지 CRD 종류의 필드 레퍼런스입니다.",searchable:!0}},{kind:"MdxPage",name:"getting-started",route:"/korean-docs/wave-flow/getting-started",frontMatter:{title:"Wave Flow 시작하기"}},{kind:"MdxPage",name:"netfunnel",route:"/korean-docs/wave-flow/netfunnel",frontMatter:{title:"NetFUNNEL 연동",searchable:!0}},{kind:"MdxPage",name:"overview",route:"/korean-docs/wave-flow/overview",frontMatter:{title:"Wave Flow 개요"}},{kind:"MdxPage",name:"priority-load-shedding",route:"/korean-docs/wave-flow/priority-load-shedding",frontMatter:{title:"우선순위 기반 트래픽 보호"}}]},{kind:"Folder",name:"wave-karpenter",route:"/korean-docs/wave-karpenter",children:[{kind:"Meta",data:{overview:{title:"개요"},"getting-started":{title:"시작하기"},dashboard:{title:"대시보드"}
1,"node-warmup":{title:"노드 워밍업"},"spot-workload-placement":{title:"스팟 워크로드 배치"},crds:{title:"CRDs"}}},{kind:"MdxPage",name:"crds",route:"/korean-docs/wave-karpenter/crds",frontMatter:{title:"Wave Karpenter CRDs",description:"CRD Mode에서 Wave Karpenter를 구성하는 CRD kind 필드 레퍼런스입니다.",searchable:!0}},{kind:"MdxPage",name:"dashboard",route:"/korean-docs/wave-karpenter/dashboard",frontMatter:{title:"Karpenter Dashboard"}},{kind:"MdxPage",name:"getting-started",route:"/korean-docs/wave-karpenter/getting-started",frontMatter:{title:"Karpenter 통합 시작하기"}},{kind:"MdxPage",name:"node-warmup",route:"/korean-docs/wave-karpenter/node-warmup",frontMatter:{title:"Node Warmup"}},{kind:"MdxPage",name:"overview",route:"/korean-docs/wave-karpenter/overview",frontMatter:{title:"Karpenter 통합 개요"}},{kind:"MdxPage",name:"spot-workload-placement",route:"/korean-docs/wave-karpenter/spot-workload-placement",frontMatter:{title:"Spot Workload Placement"}}]},{kind:"Folder",name:"wave-sizing",route:"/korean-docs/wave-sizing",children:[{kind:"Meta",data:{overview:{title:"개요"},"getting-started":{title:"시작하기"},dashboard:{title:"Sizing 콘솔"},"smart-sizing-tab":{title:"워크로드의 Smart Sizing 탭"},"aggressive-recommendations":{title:"Aggressive 추천"},"resize-now":{title:"Resize Now (수동 적용)"},"realtime-smart-sizing":{title:"Realtime Resizing"},"container-settings":{title:"컨테이너 설정"},"smart-sizing-report":{title:"Smart Sizing Report"},crds:{title:"CRDs"}}},{kind:"MdxPage",name:"aggressive-recommendations",route:"/korean-docs/wave-sizing/aggressive-recommendations",frontMatter:{title:"Aggressive Recommendations",description:"비용 우선 Smart Sizing: 7일 이상 관찰 ì°½ 대신 최근 1시간의 사용량(request = 평균, limit = 최고)으로 추천하며, 언제 사용해야 하는지 다룹니다.",searchable:!0}},{kind:"MdxPage",name:"container-settings",route:"/korean-docs/wave-sizing/container-settings",frontMatter:{title:"Container Settings",description:"컨테이너별 Smart Sizing 제어: 추천 범위(min/max와 안전 버퍼), request/limit 단위로 세분화된 auto-apply opt-in을 다룹니다.",searchable:!0}},{kind:"MdxPage",name:"crds",route:"/korean-docs/wave-sizing/crds",frontMatter:{title:"Wave Sizing CRDs",description:"CRD Mode에서 Smart Sizing을 설정하는 WaveSmartSizingPolicy CRD 종류의 필드 레퍼런스입니다.",searchable:!0}},{kind:"MdxPage",name:"dashboard",route:"/korean-docs/wave-sizing/dashboard",frontMatter:{title:"Sizing Console",description:"Wave Sizing 콘솔을 읽는 방법: savings/risk KPI, Provisioning Mix, Take Action 목록, 컨테이너별 상태 배지가 있는 Overview와 Recommendations 페이지를 다룹니다.",searchable:!0}},{kind:"MdxPage",name:"getting-started",route:"/korean-docs/wave-sizing/getting-started",frontMatter:{title:"Smart Sizing 시작하기",description:"Wave를 새로 설치한 뒤 워크로드를 처음으로 적정 사이징하기까지: 대시보드 검토, 추천 적용, Realtime Resizing으로 넘어가는 과정을 다룹니다.",searchable:!0}},{kind:"MdxPage",name:"overview",route:"/korean-docs/wave-sizing/overview",frontMatter:{title:"Smart Sizing 개요",description:"Smart Sizing이 모든 워크로드의 CPU와 메모리 사용량을 어떻게 추천하는지 설명합니다: 사용량 기반 모델, HPA/Autopilot을 위한 워크로드 성능 모델, 그리고 추천을 적용하는 두 가지 방법을 다룹니다.",searchable:!0}},{kind:"MdxPage",name:"realtime-smart-sizing",route:"/korean-docs/wave-sizing/realtime-smart-sizing",frontMatter:{title:"Realtime Resizing",description:"Realtime Resizing 운영 가이드: Wave가 Smart Sizing 추천 값을 자동으로 적용하는 파이프라인입니다. Apply Modes, 스킵 임계값, 클러스터 사전 요구사항, ArgoCD 및 Autopilot과의 알려진 상호작용을 다룹니다.",searchable:!0}},{kind:"MdxPage",name:"resize-now",route:"/korean-docs/wave-sizing/resize-now",frontMatter:{title:"Resize Now (수동 적용)",description:"Smart Sizing 추천 값을 즉시 적용하는 방법: Resize Now 모달, Edit CRD와 In-Place Pod Resize 비교, Kubernetes 버전 요구사항, 문제 해결을 다룹니다.",searchable:!0}},{kind:"MdxPage",name:"smart-sizing-report",route:"/korean-docs/wave-sizing/smart-sizing-report",frontMatter:{title:"Smart Sizing Report",description:"Smart Sizing Report는 클러스터의 적정 사이징 현황(예상 절감액, 효율 비율, 신뢰성 현황, AS-IS → TO-BE CPU/메모리, 월간 지출, 절감 여정)을 한곳에 정리해 공유하거나 PDF로 내보낼 수 있게 해줍니다.",searchable:!0}},{kind:"MdxPage",name:"smart-sizing-tab",route:"/korean-docs/wave-sizing/smart-sizing-tab",frontMatter:{title:"워크로드의 Smart Sizing 탭",description:"워크로드의 Smart Sizing 탭을 읽는 방법: Info 카드, 컨테이너 카드, 추천 이력, Apply History, Restore Original을 다룹니다.",searchable:!0}}]},{kind:"MdxPage",name:"wave-vs-hpa-vpa-prometheus",route:"/korean-docs/wave-vs-hpa-vpa-prometheus",frontMatter:{title:"Wave와 HPA, VPA, Prometheus 비교",description:"Wave가 Kubernetes 기본 오토스케일링 요소들 및 Prometheus + HPA 패턴ê
1³¼ 어떻게 다른지 설명합니다."}}]},{kind:"MdxPage",name:"license",route:"/license",frontMatter:{title:"Request a free licence key - Wave",description:"Request a free Wave licence key for Kubernetes clusters under 200 vCPU. Amazon EKS, OpenShift, GKE, AKS, OKE and self-managed clusters.",searchable:!0}},{kind:"MdxPage",name:"pricing",route:"/pricing",frontMatter:{title:"Pricing - Wave Autoscale Kubernetes Automation",description:"Wave pricing for Amazon EKS, OpenShift, and other Kubernetes—free under 200 vCPUs, with simple per-vCPU metered billing above that.",searchable:!0}},{kind:"Folder",name:"solutions",route:"/solutions",children:[{kind:"Meta",data:{"*":{display:"hidden"},index:{title:"Solutions",type:"page",theme:{layout:"raw",navbar:!0}},"cost-optimization":{title:"Cost Optimization",type:"page",theme:{layout:"raw",navbar:!0}},"right-sizing":{title:"Right-Sizing",type:"page",theme:{layout:"raw",navbar:!0}},autoscaling:{title:"Autoscaling",type:"page",theme:{layout:"raw",navbar:!0}},"karpenter-in-production":{title:"Karpenter in Production",type:"page",theme:{layout:"raw",navbar:!0}},"reliability-capacity":{title:"Reliability & Capacity",type:"page",theme:{layout:"raw",navbar:!0}}}},{kind:"MdxPage",name:"autoscaling",route:"/solutions/autoscaling",frontMatter:{title:"Fast, reliable autoscaling | Wave",description:"Beat HPA's 30s–3min reaction lag and survive traffic spikes with workload-performance-based scaling.",searchable:!0}},{kind:"MdxPage",name:"cost-optimization",route:"/solutions/cost-optimization",frontMatter:{title:"Cost Optimization — Stop Overpaying for Kubernetes | Wave",description:"Over 65% of K8s containers use less than half their requested CPU and memory. Wave finds the waste, quantifies it, and reclaims it via Smart Sizing, idle node detection, and safe Spot placement.",searchable:!0}},{kind:"MdxPage",name:"index",route:"/solutions",frontMatter:{title:"Solutions — Find Your K8s Challenge | Wave",description:"Five Kubernetes Day 2 problems Wave solves: cost optimization, scaling & sizing reliability, reliability & capacity, Karpenter in production, and priority traffic control on Istio.",searchable:!0}},{kind:"MdxPage",name:"karpenter-in-production",route:"/solutions/karpenter-in-production",frontMatter:{title:"Karpenter in Production — Visibility, Warmup, and Safe Spot | Wave",description:"Karpenter is fast — but it ships without operational visibility, pre-warming, or smart Spot placement. Wave adds the production-grade layer that Karpenter needs.",searchable:!0}},{kind:"MdxPage",name:"reliability-capacity",route:"/solutions/reliability-capacity",frontMatter:{title:"Reliability & Capacity — Catch Incidents Before They Happen | Wave",description:"OOMKills, capacity exhaustion, PV outages, and scheduling delays all start as detectable signals hours or days before they become incidents. Wave surfaces them before they hit production.",searchable:!0}},{kind:"MdxPage",name:"right-sizing",route:"/solutions/right-sizing",frontMatter:{title:"Right-size requests & limits — safely | Wave",description:"Trust automated CPU/memory right-sizing in production — no restarts, safe Min/Max bounds.",searchable:!0}}]}],flexsearch:{codeblocks:!0},title:"Pod Scheduling Delay Detection",headings:d},pageNextRoute:"/docs/wave-diagnosis/pod-scheduling-delay",nextraLayout:o.ZP,themeConfig:r.Z};t.default=(0,n.j)(p)}},function(e){e.O(0,[1664,3751,5675,665,1003,743,2888,9774,179],function(){return e(e.s=75746)}),_N_E=e.O()}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.