Checking status#
The .status.services field of the ClusterDeployment and MultiClusterService objects shows the deployment status for each service.
Service Status Structure#
Each entry in .status.services[] contains:
type: Deployment type -Helm,Kustomize, orResourcename: Service namenamespace: Service namespacetemplate: ServiceTemplate name usedversion: Application version from the ServiceTemplatestate: Current deployment state (see below)failureMessage: Error message if state isFailedlastStateTransitionTime: When the state last changed
Service States#
Pending: Service is waiting (e.g., for dependencies to be satisfied)Provisioning: Service is currently being deployedDeployed: Service successfully deployed and runningFailed: Service deployment failed (checkfailureMessage)Deleting: Service is being removed
ClusterDeployment Status Example#
For example, if you were to describe the ClusterDeployment with these services, you would see status information such as:
apiVersion: k0rdent.mirantis.com/v1beta1
kind: ClusterDeployment
metadata:
. . .
generation: 1
name: wali-aws-dev
namespace: kcm-system
. . .
spec:
. . .
serviceSpec:
services:
- name: ingress-nginx
namespace: ingress-nginx
template: ingress-nginx-4-11-3
- name: kyverno
namespace: kyverno
template: kyverno-3-2-6
. . .
status:
. . .
observedGeneration: 1
services:
- lastTransitionTime: "2024-12-11T23:03:05Z"
name: ingress-nginx
namespace: ingress-nginx
state: Deployed
template: ingress-nginx-4-11-3
type: Helm
version: ingress-nginx-4-11-3
- lastTransitionTime: "2024-12-11T23:03:05Z"
name: kyverno
namespace: kyverno
state: Deployed
template: kyverno-3-2-6
type: Helm
version: kyverno-3-2-6
Based on the information above both kyverno and ingress-nginx are installed in their respective namespaces on the target cluster. You can check to see for yourself:
kubectl get pod -n kyverno
NAME READY STATUS RESTARTS AGE
kyverno-admission-controller-96c5d48b4-sg5ts 1/1 Running 0 2m39s
kyverno-background-controller-65f9fd5859-tm2wm 1/1 Running 0 2m39s
kyverno-cleanup-controller-848b4c579d-ljrj5 1/1 Running 0 2m39s
kyverno-reports-controller-6f59fb8cd6-s8jc8 1/1 Running 0 2m39s
kubectl get pod -n ingress-nginx
NAME READY STATUS RESTARTS AGE
ingress-nginx-controller-cbcf8bf58-zhvph 1/1 Running 0 24m
You can get more information on how to access the child cluster in the create a cluster deployment
chapter, and more on ServiceTemplate objects in the Template Guide.
Checking Service Upgrade Paths#
Both ClusterDeployment and MultiClusterService provide upgrade path information in .status.servicesUpgradePaths[]:
status:
servicesUpgradePaths:
- name: ingress-nginx
namespace: ingress-nginx
template: ingress-nginx-4-11-3
availableUpgrades:
- upgradePaths:
- ingress-nginx-4-11-5
- ingress-nginx-4-12-0
This shows which ServiceTemplates the current service can be upgraded to. See Service Upgrade for more details.
Monitoring Commands#
View service status:
kubectl get clusterdeployment <name> -n <namespace> -o jsonpath='{.status.services[*].state}'
Check for failed services:
kubectl get clusterdeployment <name> -n <namespace> -o jsonpath='{.status.services[?(@.state=="Failed")]}'
View failure messages:
kubectl get clusterdeployment <name> -n <namespace> -o jsonpath='{.status.services[*].failureMessage}' | tr ' ' '\n'
Check service versions:
kubectl get clusterdeployment <name> -n <namespace> -o jsonpath='{range .status.services[*]}{.name}{"\t"}{.version}{"\n"}{end}'
MultiClusterService Status#
For MultiClusterService, the status includes service upgrade paths for all defined services and MultiClusterService conditions:
status:
conditions:
- lastTransitionTime: "2025-11-07T23:25:25Z"
message: ""
observedGeneration: 2
reason: Succeeded
status: "True"
type: ServicesReferencesValidation
- lastTransitionTime: "2025-11-07T23:25:25Z"
message: ""
observedGeneration: 2
reason: Succeeded
status: "True"
type: ServicesDependencyValidation
- lastTransitionTime: "2025-11-07T23:25:25Z"
message: ""
observedGeneration: 2
reason: Succeeded
status: "True"
type: MultiClusterServiceDependencyValidation
- lastTransitionTime: "2025-11-07T23:28:44Z"
message: 1/1
reason: Succeeded
status: "True"
type: ClusterInReadyState
- lastTransitionTime: "2025-11-07T23:28:44Z"
message: Object is ready
reason: Succeeded
status: "True"
type: Ready
observedGeneration: 2
servicesUpgradePaths:
- availableUpgrades:
- upgradePaths:
- external-secrets-7vpwh
name: managed-eso
namespace: global
template: external-secrets-7vpwh
Monitor MultiClusterService:
# View overall status
kubectl get multiclusterservice <name> -o wide