News for hackers. Stuff that matters.
Re:We were wrong about GPUs by amazingman on Saturday February 15, 2025 @02:33PM (#43061493)
Controller in charge of a specific type of object watches a database table representing the object type. Database table represents the desired state of things. When entries to the table are CRUD-ed, that represents a change to the desired state of things. Controller interacts with the larger system to bring the state of things into alignment with the new desired state of things.

"The larger system" is more controllers in charge of other object types, doing the same kind of work for its object types

There is an API implemented for CRUD-ing each object type. The API specification (model) represents something important to developers, like a group of containers (Pod), a load balancer with VIP (Service), a network volume (PersistentVolume), and so on.

Hand wave hand wave, Lego-style infrastructure.

None of the above is exactly correct (e.g. the DB is actually a k/v store), but it should be conceptually correct.

Re:We were wrong about GPUs by DrFalkyn on Saturday February 15, 2025 @10:46PM (#43065128)
Is there only a single controller ? What happens if goes down?

If multiple controllers, how do they coordinate ?

Re:We were wrong about GPUs by chronid on Sunday February 16, 2025 @07:20AM (#43067469)
The k/v store offers primitives to make that happen, but for non-critical controllers you don't want to deal with things like that they can go down and will be restarted (locally by kubelet/containerd) or rescheduled. Whatever resource they monitor will just not be touched until they get restarted.
Re:We were wrong about GPUs by amazingman on Monday February 17, 2025 @04:07AM (#43076780)
>Is there only a single controller ?

No, there are many controllers. Each is in charge of the object types it is in charge of.

>What happens if [it] goes down?

CRUD of the object types it manages have no effect until the controller returns to service.

>If multiple controllers, how do they coordinate ?

The database is the source of truth. If one controller needs to "coordinate" with another, it will CRUD entries of the object types those other controllers are responsible for. e.g. Deployments beget ReplicaSets beget Pods.