kubectl ome get Unreleased: coming in v1.3
List OME resources with model-centric columns, including merged views of BaseModels with ClusterBaseModels and ServingRuntimes with ClusterServingRuntimes.
kubectl ome get lists OME resources, or shows one by name, with columns picked for each kind. An InferenceService row shows its model, runtime and readiness, and an InferenceReplica row shows its Instance counts. The models and runtimes views list base models and serving runtimes of both scopes in one table.
kubectl ome get RESOURCE [NAME] [flags]Give one RESOURCE from Resources, in any letter case, and at most one NAME. Unlike kubectl get, get has no TYPE/NAME form and takes no .ome.io suffix. Required RBAC lists the permissions it needs.
Resources¶
| Resource | Also accepted | Scope | What it lists |
|---|---|---|---|
inferenceservices |
inferenceservice, isvc, isvcs |
Namespaced | InferenceServices |
inferencereplicas |
inferencereplica, ir |
Namespaced | InferenceReplicas, both the ones OME creates for OMENative components and the ones you create directly |
models |
model |
Merged | BaseModels, then ClusterBaseModels |
basemodels |
basemodel, bm |
Namespaced | BaseModels |
clusterbasemodels |
clusterbasemodel, cbm |
Cluster | ClusterBaseModels |
runtimes |
runtime |
Merged | ServingRuntimes, then ClusterServingRuntimes |
servingruntimes |
servingruntime, srt |
Namespaced | ServingRuntimes |
clusterservingruntimes |
clusterservingruntime, csrt |
Cluster | ClusterServingRuntimes |
finetunedweights |
finetunedweight, ftw |
Cluster | FineTunedWeights |
acceleratorclasses |
acceleratorclass, ac |
Cluster | AcceleratorClasses |
acceleratorquotas |
acceleratorquota, aq |
Cluster | The budgets of each AcceleratorQuota, new in v1.3 |
benchmarkjobs |
benchmarkjob, bj |
Namespaced | BenchmarkJobs |
rolloutpolicies |
rolloutpolicy, rp |
Namespaced | Alpha. RolloutPolicies |
autoscalerpolicies |
autoscalerpolicy, ap |
Namespaced | Alpha. AutoscalerPolicies |
workloadclusters |
workloadcluster, wc |
Cluster | Alpha. The WorkloadClusters of multi-cluster serving |
trafficmaps |
trafficmap, tm, tmap |
Namespaced | Alpha. The TrafficMaps of multi-cluster routing |
kubectl get knows the short names irep and wlc, but kubectl ome get doesn't: use ir and wc, or the full names.
Merged views¶
models and runtimes list the namespaced kind first, then every object of the cluster-scoped kind. The SCOPE column says which kind each row is, and -l filters both. When either list fails, get prints only the error. If you can't list the cluster-scoped kind, use basemodels or servingruntimes.
With a NAME, get shows the namespaced object, or the cluster-scoped one when there's none. When a BaseModel and a ClusterBaseModel share a name, an InferenceService in the BaseModel's namespace gets the BaseModel too, even when it asks for the ClusterBaseModel. For an InferenceService's runtime, OME looks for the ClusterServingRuntime first, unless the InferenceService sets spec.runtime.kind: ServingRuntime. So get runtimes NAME can show a different runtime from the one an InferenceService runs, which kubectl ome status -o wide names.
Flags¶
| Flag | Default | Description |
|---|---|---|
-A, --all-namespaces |
false |
List across all namespaces |
-o, --output |
table |
Output format: table (default), wide, json or yaml |
-l, --selector |
None | Label selector to filter on |
Plus the standard kubeconfig flags, such as -n and --context.
A NAME can't be combined with -A or -l. For a cluster-scoped resource, get ignores -n, and ignores -A with a warning on stderr. -o wide adds the Wide columns in Output fields, where a resource has any. -o json and -o yaml print Kubernetes objects, not a report. With a NAME, that's the object; otherwise it's a List with apiVersion: v1, whose items carry their own apiVersion and kind.
Output fields¶
Every table starts with NAME and, by default, ends with AGE, the time since the object was created, such as 3h. With -A, namespaced resources get a NAMESPACE column before NAME, which shows - for the cluster-scoped rows of a merged view. A text cell shows - when its field isn't set, and rows marked Wide are the columns that -o wide adds.
Some columns recur:
| Column | What it shows |
|---|---|
| READY, DEGRADED, IN-USE, ROUTABLE, PUBLISHED, OVERRIDE | The condition's status, or Unknown when there's none. On InferenceReplicas, READY is a count. |
| STATUS-FRESHNESS, LIFECYCLE-FRESHNESS, PUBLISHER-FRESHNESS | Whether the status describes the current spec: Current, Stale when it's older, or Unobserved before it's first written. |
The RolloutPolicy, AutoscalerPolicy and TrafficMap tables hide stale values: a condition from an older generation shows as Unknown, and its reason as -. The policy tables also show - for their digest and counts until the status is current. The other tables show the last status as it is.
inferenceservices¶
kubectl ome status shows the full readiness of one InferenceService.
| Column | What it shows |
|---|---|
| MODEL | spec.model.name, or - when the InferenceService names only a runtime. |
| RUNTIME | spec.runtime.name, or - when OME picks the runtime, which kubectl ome runtime effective shows. |
| READY | The Ready condition. |
| URL | status.url. |
inferencereplicas¶
OME writes an InferenceReplica for each OMENative component of an InferenceService, and you can also create one directly, with no parent InferenceService: a standalone replica. The view lists both. An InferenceReplica holds its component's replicas, each one an Instance: one pod, or a leader and its workers. kubectl ome instance lists the Instances themselves.
| Column | What it shows |
|---|---|
| COMPONENT | spec.component. |
| PARENT | spec.parentRef.name, the InferenceService, or - for a standalone replica, which sets no spec.parentRef. |
| DESIRED | spec.replicas, the number of Instances the component should run. |
| CURRENT | status.replicas, the number of Instances, in any phase. |
| READY | status.readyReplicas, as Readiness and availability defines it. |
| AVAILABLE | Wide. status.availableReplicas. |
| LIFECYCLE | The main condition, as Type=Status: RolloutStalled=True while a rollout is stalled, and otherwise Ready, or RolloutStalled when there's no Ready. Unavailable when there's neither. |
| REASON | Wide. The reason of the LIFECYCLE condition. |
| SERVING | Wide. status.servingReplicas. |
| UPDATED | Wide. status.updatedReplicas, the number of Instances on the update revision. |
| ENCODING | Wide. How the status stores its Instance rows: ColumnarV2 or DenseV1. See Change the status encoding. |
| CURRENT-REVISION, UPDATE-REVISION | Wide. status.currentRevision, which serves traffic, and status.updateRevision, which is rolling out. |
| MIGRATIONS | Wide. The number of entries in status.migrations. See Migration and transient scale. |
| PAUSED | Wide. spec.paused: true or false. |
| COORDINATION | Wide. status.coordinationGroupRef. Always - in this release. |
| LIFECYCLE-FRESHNESS | Wide. Whether the LIFECYCLE condition is current, or Unavailable when there's none. |
models, basemodels and clusterbasemodels¶
| Column | What it shows |
|---|---|
| SCOPE | models only. Namespaced for a BaseModel and Cluster for a ClusterBaseModel. |
| ARCH | spec.modelArchitecture. |
| PARAMS | spec.modelParameterSize, such as 3.21B. |
| FORMAT | spec.modelFormat.name, such as safetensors. |
| STATE | status.state, the model's state across the cluster, as Model lifecycle describes. |
ARCH, PARAMS and FORMAT show - until the spec sets them or OME reads them from the model's files, as What OME learns from the model explains.
runtimes, servingruntimes and clusterservingruntimes¶
| Column | What it shows |
|---|---|
| SCOPE | runtimes only. Namespaced for a ServingRuntime and Cluster for a ClusterServingRuntime. |
| DISABLED | true when spec.disabled is true, otherwise false. |
| FORMATS | The formats in spec.supportedModelFormats, joined with commas. Past three, the rest show as a count, such as safetensors,pytorch,onnx,+2. |
finetunedweights¶
| Column | What it shows |
|---|---|
| TYPE | spec.modelType, such as LoRA. |
| BASEMODEL | spec.baseModelRef.name, the base model the weights apply to. |
acceleratorclasses¶
| Column | What it shows |
|---|---|
| VENDOR | spec.vendor. |
| FAMILY | spec.family. |
acceleratorquotas¶
The table has a row for each budget. kubectl ome quota shows the whole quota tree.
| Column | What it shows |
|---|---|
| ROLE | spec.role: Cohort or ClusterQueue. |
| PARENT | spec.parentRef.name, the quota's parent in the quota tree. |
| RESOURCE, FLAVOR | The budget's resource and flavor. |
| NOMINAL | The budget's share. |
| ADMITTED | The quantity admitted against the quota's queues, including anything borrowed. |
| SOURCE | Reported for a budget from the status, Declared for one from spec.budgets, and Unavailable when the quota has neither. |
| STATUS-FRESHNESS | Freshness of the status. |
| READY, DEGRADED | The status of the Ready and Degraded conditions. Read them with STATUS-FRESHNESS: they can describe an older spec. |
| BORROWED | Wide. The admitted quantity above the nominal share. |
| RESERVED | Wide. The quantity held by workloads with a quota reservation, admitted or not. |
When the status isn't current or has no budgets, the table adds a Declared row for each budget in the spec, with - for ADMITTED, BORROWED and RESERVED. That lets you compare what you declared with what the quota manager last reported.
benchmarkjobs¶
The columns are NAME, STATE and AGE. STATE is status.state: Pending, Running, Completed or Failed, as Status describes.
rolloutpolicies¶
Alpha. Conditions and status lists the condition reasons.
| Column | What it shows |
|---|---|
| PROGRESSION | The progression the policy defines: canary, blueGreen or rollingUpdate. |
| READY | The Ready condition. |
| DIGEST | status.portableDigest, a digest of the defaulted spec. |
| REFS | status.attachedGroups, the number of rollout groups in the namespace that reference the policy. |
| REASON | Wide. The reason of the Ready condition. |
| IN-USE | Wide. The InUse condition. |
| STATUS-FRESHNESS | Wide. Freshness of the status. |
autoscalerpolicies¶
Alpha. Conditions and status lists the condition reasons.
| Column | What it shows |
|---|---|
| CLASS | spec.class: HPA or KEDA. |
| READY | The Ready condition. |
| ATTACHED | status.attachedComponents, the number of components in the namespace that reference the policy. |
| DIGEST | Wide. status.portableDigest, a digest of the defaulted spec. |
| REASON | Wide. The reason of the Ready condition. |
| IN-USE | Wide. The InUse condition. |
| STATUS-FRESHNESS | Wide. Freshness of the status. |
workloadclusters¶
Alpha. A WorkloadCluster registers a cluster for multi-cluster serving, which is still in development. kubectl ome cluster shows more of a WorkloadCluster's status.
| Column | What it shows |
|---|---|
| CONNECTION | KubeConfig for a kubeconfig Secret in spec.clusterSource.kubeConfig, or ClusterProfile for spec.clusterSource.clusterProfileRef. |
| REFERENCE | The Secret, as namespace/name or name, or the ClusterProfile's name. |
| KEY | The Secret's kubeconfig key, kubeconfig by default. - for a ClusterProfile. |
| READY | The status of the Ready condition. Compare GENERATION with OBSERVED-GENERATION to see whether it's current. |
| GENERATION | metadata.generation. |
| OBSERVED-GENERATION | The observedGeneration of the Ready condition. |
| REASON | Wide. The reason of the Ready condition. |
trafficmaps¶
Alpha. A TrafficMap is the routing table of a multi-cluster InferenceService, and multi-cluster routing is still in development. Conditions lists the condition reasons.
| Column | What it shows |
|---|---|
| MODE | spec.mode, the InferenceService's placement mode: Single, All, Split or SplitByCapacity, or - when the TrafficMap records none. |
| TARGETS | The number of entries, including those with weight 0. |
| ROUTABLE, PUBLISHED | The Routable and Published conditions. |
| SERVICE | Wide. spec.service, the InferenceService. |
| ACTIVE | Wide. The number of entries with a weight above 0. |
| HEALTHY | Wide. The number of entries with healthy: true. When it's higher than ACTIVE, healthy clusters get no requests, as Why a cluster's weight is zero explains. |
| OVERRIDE, OVERRIDE-REASON | Wide. The status and reason of the OverrideActive condition, such as True and OverridesApplied while a drain holds an entry at weight 0. |
| REASON | Wide. The reason of the Routable condition, such as NoRoutableCapacity. |
| GATEWAY | Wide. status.gatewayRef, as group/kind:namespace/name. |
| PUBLISHER-FRESHNESS | Wide. Whether the publisher has published the map's current generation. See Staleness checks. |
Examples¶
The objects in these examples have no creation time, so AGE shows -.
List the InferenceServices in team-a:
kubectl ome get isvc -n team-aNAME MODEL RUNTIME READY URL AGE
a-isvc llama-3-3-70b srt-llama Unknown - -
b-isvc llama-3-3-70b srt-llama Unknown - -Neither InferenceService has a Ready condition or a URL yet.
List the BaseModels in team-a and every ClusterBaseModel:
kubectl ome get models -n team-aNAME SCOPE ARCH PARAMS FORMAT STATE AGE
ns-model Namespaced LlamaForCausalLM - - - -
cluster-model Cluster LlamaForCausalLM - - - -These models set only an architecture, so the other columns show -.
List the InferenceReplicas in demo:
kubectl ome get ir -n demoNAME COMPONENT PARENT DESIRED CURRENT READY LIFECYCLE AGE
chat-engine engine chat 4 3 2 Ready=True -
pool-a engine - 2 2 2 Ready=True -The engine of chat should run 4 Instances. It has 3, of which 2 are ready, and its Ready condition is True. pool-a is a standalone replica, created with no parent InferenceService, so its PARENT shows -.
List the accelerator quotas:
kubectl ome get aqNAME ROLE PARENT RESOURCE FLAVOR NOMINAL ADMITTED SOURCE STATUS-FRESHNESS READY DEGRADED AGE
team-a ClusterQueue root nvidia.com/gpu h100 8 3 Reported Current True False -team-a has a share of 8 h100 GPUs, and 3 are admitted. The status describes the current spec, so the row shows the reported budget.
List the traffic maps in team-a, with the wide columns:
kubectl ome get tm -n team-a -o wideNAME MODE TARGETS ROUTABLE PUBLISHED AGE SERVICE ACTIVE HEALTHY OVERRIDE OVERRIDE-REASON REASON GATEWAY PUBLISHER-FRESHNESS
checkout Split 2 True True - checkout 1 1 False NoOverrides Routable gateway.networking.k8s.io/HTTPRoute:team-a/checkout CurrentOf the map's two entries, one has a weight above 0 and one is healthy. The InferenceService has no drains, and the publisher has published this generation of the map.
When nothing matches, get prints a message to stderr and exits 0:
kubectl ome get workloadclustersNo workloadclusters found.With -o json or -o yaml, get prints an empty list instead:
kubectl ome get isvc -n team-a -o yamlapiVersion: v1
items: []
kind: List
metadata: {}Errors¶
An API error names the operation, the resource and the object or namespace, then the reason.
| Error | Meaning |
|---|---|
unknown resource "irep" (valid resources: ...) |
The name isn't in Resources. |
get inferenceservices team-a/missing: NotFound |
The namespace has no object of that name. |
list clusterbasemodels: Forbidden |
You can't list the resource. See Required RBAC. |
list inferenceservices team-a: Unauthorized |
The API server didn't accept your credentials. |
list autoscalerpolicies team-a: OMEAPIMissing (install OME first) |
OME isn't installed or, for AutoscalerPolicies, the feature is off. |
list rolloutpolicies team-a: Unavailable |
The CLI can't reach the API server or, for RolloutPolicies, the feature is off. |
Exit codes¶
| Code | Meaning | Returned by |
|---|---|---|
0 |
Success | Every run that finishes, including one that finds nothing. |
1 |
General error | Every run that fails, such as an unknown resource, a NAME with -A or -l, a failed API request or Ctrl-C. |
Errors print to stderr as error: <message>.
Related guides¶
- Drain a workload cluster, which uses the alpha multi-cluster routing
- Troubleshoot an InferenceService