Chapter 9. Developing Custom Operators to Automate Cluster Operations

At the heart of every OpenShift cluster runs a set of controllers, working relentlessly to turn the desired state of resources the cluster manages into an actual state.

Each run of a control loop aims to bring the actual state closer to the desired state. The desired state is defined declaratively in OpenShift resources. A control loop can check the actual state and figure out which actions are necessary to get one step closer to the desired state.

The actual state can be read from various sources, and in many cases the API Server can be queried to get it, depending on the goal of a resource.

A good example is the relation between ReplicaSets and pods. A ReplicaSet defines how many pods of a given specification should run. All pods managed by the ReplicaSet can be identified by a common label. The control loop can query the API Server for the number of actual pods with this label. If the number is lower than the desired number as defined by the ReplicaSet resource, it can start more pods until the number matches.

When the ReplicaSet is scaled down, the control loop figures out there are suddenly more pods than desired by the ReplicaSet and delete some of them with a DELETE call to the API Server.

The control loops run endlessly and compare the desired with the actual state, so even when a pod is manually deleted, the control loop creates a new one so the desired state of the ReplicaSet matches ...

Get Operating OpenShift now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.