What are Higher-level Resources and Constructs Compared to Lower-level Resources and Constructs?

You have read about high/low level or higher-level (or lower-level) resources and constructs in the context of Kubernetes. What does this designation mean?

From a high level to a low level we may see a data center, filled with racks, which hold physical servers. Similarly from a high level to a low level we may see Kubernetes nodes supporting pods that have individual Docker containers. Deployments are considered to be at a higher level than ReplicaSets which are considered to be at a higher level than pods. See What is a deployment in Kubernetes?.

"A Deployment is a higher-level resource meant for deploying applications and updating them declaratively, instead of doing it through a ReplicationController or a ReplicaSet, which are both considered lower-level concepts." (Taken from page 261 of Kubernetes in Action.)

"Using a Deployment instead of the lower-level constructs makes updating an app much easier, because you’re defining the desired state through the single Deployment resource and letting Kubernetes take care of the rest…" (Taken from page 262 of Kubernetes in Action.)

"Because you’re not supposed to group multiple processes into a single container, it’s obvious you need another higher-level construct that will allow you to bind containers together and manage them as a single unit." (Taken from page 57 of Kubernetes in Action.)

The Deployment controller, to create a deployment resource and pods, changes the number of ReplicaSets via the API server. This causes the ReplicaSet controller to actually create pods. (To learn more, see page 331 of Kubernetes in Action.) The higher-level resource of a Deployment is created via the lower-level resource of the ReplicaSets.

In Datadog, there can be a dedicated dashboard for Kubernetes deployments. It can be quite meaningful and useful to a human professional to see a graph of CPU/RAM utilization; logically for resource utilization from a business perspective, a Datadog dashboard for Kubernetes deployments can be useful. (As an illstration, see this picture in the lower left-hand corner for an option to view resource consumption for Kubernetes deployments.) Conversely Nagios/Zabbix resource utilization monitoring of underlying servers has its value, but in some contexts a higher-level resource is conceptually applicable to certain optimization and cost-controlling efforts.

Higher-level resources in Kubernetes refer to smaller more basic elements comprising a more complex entity. Similar to this context, higher-order functions in Python refer to optional libraries that give a human the ability to interact with more sophisticated components. One example is the functools library that gives a Python coder more commands.

Leave a comment

Your email address will not be published. Required fields are marked *