Skip to main content

Check managed service status

As a Project member, use this reference to check service readiness and diagnose a refused or stalled change. Phases and conditions use a shared contract. Engine details and supported operations depend on the service family. For operation progress, see Request an operation.

Read the status​

Read the service phase and Ready condition:

kubectl get managedservice <service> -n <project>

Replace <service> with the service name and <project> with its Project namespace.

Phases​

The service reports one of these phases:

status.phaseMeaning
PendingThe service is not placed yet. The Placed condition gives the reason
RejectedThe service was refused before it was placed. The Accepted condition gives the reason
PlacingPlacement is in progress
ProvisioningThe service is placed, but not every required condition is True yet. The Ready condition's message lists what it is waiting for
ReadyAccepted, Placed, Reconciled and ConnectivityReady are True; BackupReady is also True when the plan and the service enable backups; and the service is not frozen
DegradedThe service is not ready and the engine reports itself degraded. Read the conditions
FailedThe engine reports a failure, or the platform cannot continue with the service's placement or restore. Read the conditions
FrozenThe Frozen condition is True and new operations are refused. Ask your provider
DeletingThe ManagedService is being deleted. See Status during deletion
RetainedRead the conditions
HibernatedA Hibernate operation stopped compute; the data volumes are kept. Ready is False with reason Hibernated. Create a Resume operation to start it again

Conditions​

Read each condition with its reason, message, and observed generation:

ConditionTrue means
AcceptedThe class, plan, parameter schema and entitlements accept the current spec
PlacedThe service has a committed placement
ReconciledThe accepted configuration is applied and healthy
EngineReadyThe engine itself is healthy, independent of pending changes
ConnectivityReadyThe service's endpoints were probed successfully
BackupReadyWhether the service's backup checks pass. Read its reason and message; confirm a requested backup through the outcome of its Backup operation
ReadyEvery condition the plan requires is true
StaleThe last observation is older than the staleness threshold, so the status shown is last-known
FrozenDestructive changes are blocked and new operations are refused
CatalogPinnedThe service's pinned catalog revisions match the current catalog

Print them with their generations and reasons:

kubectl get managedservice <service> -n <project> \
-o jsonpath='generation={.metadata.generation}{"\n"}{range .status.conditions[*]}{.type}={.status} observedGeneration={.observedGeneration} reason={.reason} {.message}{"\n"}{end}'

Is the result current?​

A Ready=True condition from an earlier spec does not mean your latest change was applied. After every change, check all of the following:

  1. The Accepted and Ready conditions are True, and their observedGeneration equals metadata.generation.
  2. status.acceptedRevision equals status.appliedRevision, and status.acceptedGeneration equals status.appliedGeneration.
  3. Stale is not True.
  4. Check that status.lastObservedAt advances. If it is more than four minutes old, treat the status as last-known, even without Stale=True. Contact your provider if the timestamp does not advance.

Print the accepted and applied revisions with the observation time:

kubectl get managedservice <service> -n <project> \
-o jsonpath='accepted={.status.acceptedRevision}/{.status.acceptedGeneration} applied={.status.appliedRevision}/{.status.appliedGeneration} observed={.status.lastObservedAt}{"\n"}'

An invalid edit can leave the phase and the applied revision unchanged while Accepted=False reports why the new spec was refused.

Other status fields​

These fields describe the applied service and its recent activity:

FieldContents
status.effectiveConfigurationThe configuration in force, including values set by operations
status.engineDetailsEngine observations, whose keys depend on the service family
status.endpointsNamed endpoints with addresses, TLS details and probe results. See Connect applications
status.credentialsCredential roles with their Secret name, version and fingerprint. Never the values
status.lastBackup, status.recentBackupsThe newest verified backup and a short recent window. This is not the full backup history
status.operationSummaryThe active, last successful and last failed operation

Events for the service are recorded in the Project:

kubectl get events -n <project> --field-selector involvedObject.name=<service>

Common refusals​

Use the reported reason to identify the next action:

Where it showsReason or messageMeaning and fix
kubectl apply errorparameters ... are CreateOnly, OperationOnly or ReplaceOrMigrate ...You edited a parameter that cannot change on the ManagedService. Revert it, or use the matching operation
kubectl apply errorspec.parameters.cpu ... use spec.compute.cpu (also memory, instances, storage, version)The manifest uses a retired parameter path. Move the value to the typed field the message names
kubectl apply errorclassRef is immutable, planRef is immutable ..., placement is immutable ..., connectivity is immutable after creation ..., restoreFrom is create-onlyThese fields are fixed at creation. Create a new service instead
kubectl delete errordeletionProtection is enabled on this ManagedService; set spec.deletionProtection=false firstSet deletionProtection: false, apply, then delete
Forbidden from the APIRBACYour Project role cannot write this resource. See Project roles
Accepted=False, phase RejectedPlanNotEntitledThe plan was not found, is disabled or not verified, or does not allow the requested placement mode, connectivity class or deletion policy. For example, if placement.mode is omitted and the plan's allowedPlacementModes does not include TenantCluster, the message is plan <plan> does not allow placement mode TenantCluster
Accepted=False, phase RejectedClassNotVerifiedThe class name is wrong or the class is unavailable
Accepted=False, phase RejectedConnectivityClassAbsentThe connectivity class name does not exist
Accepted=False, phase RejectedParameterSchemaRejectedA parameter is invalid for the class or outside the plan's bounds. Examples: spec.engineVersion: must equal the plan engine version "...", spec.topology.instances: must be between <min> and <max> for plan <plan>, spec.storage.size: must not exceed the plan maximum ..., or an unknown parameter reported as additional properties ...
Accepted=False, phase RejectedPlanQuotaExceededThe Project already has the plan's maxInstancesPerProject services: plan <plan> allows <n> instances per project
Placed=False, phase PendingNoQualifiedDataPlaneThe platform has nowhere to place a service of this plan at present. Ask your provider
Placed=FalseReservationRejectedThe platform could not secure capacity for the service. Ask your provider
Reconciled=FalseParameterMutationRejectedA CreateOnly or OperationOnly parameter differs from the accepted configuration. Revert it
Operation phase RejectedPlanNotEntitledThe plan does not allow this operation type, or the operation asked for something outside the plan, such as an image not in allowedImages
Operation phase RejectedServiceIdentityChangedserviceUID does not match the current service of that name
Operation phase RejectedOperationConflictAnother operation already used the same idempotencyKey
Operation phase AwaitingApprovalApprovalRequiredThe plan requires provider approval for this operation type. Ask your provider
Operation phase PendingOperationConflict, AwaitingMaintenanceWindowWaiting for another active operation that conflicts with this operation, or for the maintenance window

The phases in this table apply to a service that has not been placed yet. When a later edit to a placed service is refused, the service keeps its current phase and Accepted=False reports the refusal.

A refused service stays visible with its reason. Some refusals, such as PlanQuotaExceeded, clear without an edit after their cause is gone. When the fix needs a different value for a CreateOnly or OperationOnly parameter or for a catalog field, which cannot be edited after the object exists, delete the refused service and create a corrected one. Set deletionProtection: false first if you enabled it.