Home > Advanced Topics > DevOps and Automation > Kubernetes > White Papers > Red Hat OpenShift Container Platform 4.10 on Dell Infrastructure > Kubernetes concepts
In Kubernetes, everything is an object. Every object has a current state, a preferred state, and a specification of how a state transition can be achieved. This specification includes everything from applications, deployments, and services to machine configuration and management of specific hardware resources. When a Kubernetes object is created, the cluster uses the object to transition toward the preferred state for the cluster.
Custom Resource Definitions (CRDs) are used to specify new resource types, which are then used to create Custom Resources (CRs). Middleware (typically, operators) uses this extensible mechanism to create resource types that Kubernetes and other middleware with appropriate access can manage and use.
Kubernetes provides an abstraction layer for application containers, deployments, and services and automates all container operations. Developers and administrators specify the needs of an application in a declarative manner, and Kubernetes automatically deploys, terminates, or restarts containers to converge on this preferred state.
Kubernetes consists of independent control processes (state transition machines) that move the current state of the cluster toward the preferred state (see Cluster automation).
Upstream Kubernetes has some limitations in that it does not build or deploy applications; provide logging, monitoring, or alerting mechanisms; and is not a self-healing, self-managing system. As an open-source project, Kubernetes must support various use cases and enable customers to use a wide variety of projects that are compatible with Kubernetes.