
If you are not familiar with the oc command, refer to OpenShift - Getting Started with the oc command.
The oc get operators command can be used to listed the installed Operators.
~]# oc get operators
NAME AGE
addon-operator.openshift-addon-operator 182d
aws-efs-csi-driver-operator.openshift-cluster-csi-drivers 20d
aws-efs-operator.openshift-operators 20d
cluster-logging-operator.openshift-logging 205d
cluster-logging.openshift-logging 188d
configure-alertmanager-operator.openshift-monitoring 209d
custom-domains-operator.openshift-custom-domains-operator 209d
elasticsearch-operator.openshift-operators-redhat 188d
managed-upgrade-operator.openshift-managed-upgrade-operator 209d
managed-velero-operator.openshift-velero 209d
must-gather-operator.openshift-must-gather-operator 209d
ocm-agent-operator.openshift-ocm-agent-operator 164d
osd-metrics-exporter.openshift-osd-metrics 209d
rbac-permissions-operator.openshift-rbac-permissions 209d
route-monitor-operator.openshift-route-monitor-operator 209d
splunk-forwarder-operator.openshift-splunk-forwarder-operator 209d
The oc get clusterserviceversions (or just oc get csv) command can be used to list your Cluster Service Versions (CSVs) which may include certain Operators.
~]$ oc get clusterserviceversions --namespace openshift-logging
NAME DISPLAY VERSION REPLACES PHASE
cluster-logging.v5.6.15 Red Hat OpenShift Logging 5.6.15 cluster-logging.v5.6.14 Succeeded
elasticsearch-operator.v5.6.15 OpenShift Elasticsearch Operator 5.6.15 elasticsearch-operator.v5.6.14 Succeeded
The oc get clusteroperator (or oc get co) command can be used to list the cluster operators. Something like this should be returned. Notice in this example that the authentication operator is degraded.
~]$ oc get clusteroperator
NAME VERSION AVAILABLE PROGRESSING DEGRADED SINCE
authentication 4.6.41 False True True 3h17m
cloud-credential 4.6.41 True False False 335d
cluster-autoscaler 4.6.41 True False False 335d
config-operator 4.6.41 True False False 335d
console 4.6.41 True False True 6d14h
csi-snapshot-controller 4.6.41 True False False 6d15h
dns 4.6.41 True False False 225d
etcd 4.6.41 True False False 335d
image-registry 4.6.41 True False False 6d15h
ingress 4.6.41 True False False 40d
insights 4.6.41 True False False 335d
kube-apiserver 4.6.41 True False False 335d
kube-controller-manager 4.6.41 True False False 335d
kube-scheduler 4.6.41 True False False 335d
kube-storage-version-migrator 4.6.41 True False False 6d13h
machine-api 4.6.41 True False False 335d
machine-approver 4.6.41 True False False 335d
machine-config 4.6.41 True False False 6d12h
marketplace 4.6.41 True False False 6d14h
monitoring 4.6.41 True False False 6d12h
network 4.6.41 True False False 335d
node-tuning 4.6.41 True False False 6d15h
openshift-apiserver 4.6.41 True False False 6d14h
openshift-controller-manager 4.6.41 True False False 17d
openshift-samples 4.6.41 True False False 6d15h
operator-lifecycle-manager 4.6.41 True False False 335d
operator-lifecycle-manager-catalog 4.6.41 True False False 335d
operator-lifecycle-manager-packageserver 4.6.41 True False False 6d14h
service-ca 4.6.41 True False False 335d
storage 4.6.41 True False False 225d
The oc describe clusteroperator command can be used to display more information of a cluster operator. In this example, the details of the authentication object will be displayed, where the Status section might have details on why the operator is degraded.
There are a wide variety of issues that can cause an operator to become degraded, far too many to list here, so this is just a starting point when looking into why an operator is degraded.
~]# oc describe clusteroperator authentication
Status:
Conditions:
Last Transition Time: 2022-06-15T01:27:40Z
Message: OAuthRouteCheckEndpointAccessibleControllerDegraded: Get "https://oauth-openshift.apps.openshift.example.com/healthz": context deadline exceeded (Client.Timeout exceeded while awaiting headers)
ProxyConfigControllerDegraded: endpoint("https://oauth-openshift.apps.openshift.example.com/healthz") found in NO_PROXY(".cluster.local,.svc,.example.com,localhost") is unreachable with proxy(Get "https://oauth-openshift.apps.openshift.example.com/healthz": context deadline exceeded) and without proxy(Get "https://oauth-openshift.apps.openshift.example.com/healthz": context deadline exceeded)
Reason: OAuthRouteCheckEndpointAccessibleController_SyncError::ProxyConfigController_SyncError
Status: True
Type: Degraded
Did you find this article helpful?
If so, consider buying me a coffee over at