Custom Resource Status
The status of the custom resources describes its current state and what the operators are currently doing. It is a very valuable tool in troubleshooting.
The following is an example of a status indicating success:
status:
conditions:
- lastTransitionTime: "2021-09-02T06:08:14Z"
lastUpdateTime: "2021-09-02T06:08:14Z"
message: ""
reason: Success
status: "True"
type: Converged
- lastTransitionTime: "2021-08-30T11:48:39Z"
lastUpdateTime: "2021-09-02T06:43:37Z"
message: 0 resources in use
reason: Success
status: "True"
type: GarbageCollected
installedRelease: zed
observedGeneration: 1
phase: Updated
Phases
Phases are the most generic description of the status of the resource. It should be your first point when checking for issues. The following phases exist:
- Created
The custom resource has been created and the operator has just become aware of it. This is an internal state and is never visible from kubernetes.
- Updating
The operator is currently running the reconcile loop for this resource.
- WaitingForDependency
The operator is waiting for some subresource to be ready (e.g. waiting for a certificate to be issued or a job to finish). This is a temporary state and the operator will go back to Updating once the resource is ready. The message in the status does contain the name of the component the operator is waiting for.
- Updated
The custom resource has been successfully reconciled.
- BackingOff
The operator encountered an issue (e.g. some part of the code raised an exception). It will retry the reconcilation with an exponential backoff. If the operator does not recover from this state take a look at the operator logs.
- InvalidConfiguration
The user has specified a configuration that is in some way invalid. The reason and message part of the status have more information. The user will need to update the requested configuration to solve this issue.
Note
Resources will not exhibit a clear error message but instead stay in Updating if the operator is killed or crashes hard while updating a resource.
Conditions
Conditions are a more detailed view into individual parts of the operator. Each resource generally has two conditions associated with it. They can be separated by the type field.
- Converged
Describes the status of the reconcile loop of the operator. If a Phase from above indicates some issue this will contain more detailed information.
- GarbageCollected
The operator is regularly removing resources that are no longer needed (e.g. old configmaps). The status of this operation can be seen here
Observed Generation
The observedGeneration contains the last generation (taken from metadata) the operator acted on. This can be useful to check if a operator picked up a change to a resource at all.
Installed Release
Custom resources that have different releases available (e.g. Keystone with different openstack versions) have an additional status field. installedRelease contains the last release that was reconciled successfully. This means that the field will only be set when the resource reaches the Updated Phase.