OpenShift vs Kubernetes vs OKD: what OpenShift adds
OpenShift is Red Hat's Kubernetes platform and OKD is its community distribution. Both add projects, routes, builds, image streams, Operators and stricter security defaults on top of Kubernetes.
Kubernetes is the engine that schedules containers across a group of machines. On its own it is a toolkit: you still have to choose an operating system for the nodes, an ingress solution, a registry, a way to build images, monitoring, authentication and an upgrade process. OpenShift Container Platform (often just OpenShift) is Red Hat’s product that ships all of those pieces pre-integrated, and OKD is the community distribution of Kubernetes that powers OpenShift.
If you know Kubernetes, almost everything still applies: pods, deployments, services, ConfigMaps and Secrets work the same, and the oc command line tool accepts the same commands as kubectl. OpenShift adds extra resource types and stricter defaults on top.
OpenShift Container Platform and OKD
- OpenShift Container Platform is the commercial, Red Hat supported product, with its own release channels and documentation at docs.redhat.com.
- OKD is open source and community supported. It is built from the same code base and its documentation at docs.okd.io mirrors the OpenShift docs, with community operating system images and its own update channel.
- Commands, resource types and concepts are the same in both. Most tutorials written for one work on the other.
What OpenShift adds to Kubernetes
- Projects: a project is a Kubernetes namespace with additional annotations. Users create them with
oc new-project, and access is controlled per project with roles such asadmin,editandview. - Routes: a Route publishes a service on a host name through the built-in router (Ingress Controller), with edge, passthrough or re-encrypt TLS. Plain Kubernetes Ingress objects also work.
- Builds: a BuildConfig turns source code or a Dockerfile into an image inside the cluster. Source-to-Image (S2I) injects your code into a builder image, so you do not need to write a Dockerfile.
- Image streams: an image stream is a named pointer to images. Builds and deployments can watch an image stream tag and rebuild or redeploy automatically when it changes.
- Operators everywhere: the platform itself is run by cluster Operators managed by the Cluster Version Operator, and optional add-on Operators are installed through Operator Lifecycle Manager (OLM) from the software catalog, formerly called OperatorHub.
- Security Context Constraints (SCCs): by default pods run with a random, non-root user ID from a range assigned to the project, with all capabilities dropped. Images that insist on running as root fail until they are fixed.
- An integrated stack: a web console, OAuth login with identity providers, an internal image registry, monitoring and over-the-air cluster updates are part of the install.
The same task in kubectl and oc
# Works the same with kubectl and oc
oc get pods
oc apply -f deployment.yaml
oc logs deploy/web
# OpenShift-only commands
oc new-project shop-dev
oc new-app https://github.com/sclorg/httpd-ex.git
oc expose service/httpd-ex
oc start-build httpd-ex --follow
What this means in practice
Workloads written for plain Kubernetes usually run unchanged, with one common exception: container images that assume they run as root, or as one fixed user ID, often crash with permission denied because of the random user ID. Fix the image so it works with any UID rather than loosening security; the article on Security Context Constraints explains how.
OpenShift also manages the nodes themselves. Node operating system settings are changed through MachineConfig objects and cluster updates are driven by the Cluster Version Operator, so you do not normally log in to nodes and change them by hand.
Official documentation
See also
- 0131 Kubernetes architecture: control plane, nodes, kubelet and etcd A Kubernetes cluster is a control plane that stores and decides the desired state, plus worker nodes that run your containers. This… Beginner · Concept · Linux Article Concepts 15 Oct 2026
- 0132 Pods, ReplicaSets and Deployments explained A Pod runs one or more containers together, a ReplicaSet keeps a fixed number of identical Pods alive, and a Deployment manages… Beginner · Concept · Linux Article Concepts · Workloads & services 15 Oct 2026
- 0138 Kubernetes RBAC basics: least-privilege access for a service account RBAC controls who may do what in a cluster with Roles, ClusterRoles and bindings. This guide grants a CI service account deploy… Advanced · How-to · Linux Article Concepts · Config, secrets & storage 15 Oct 2026
- 0140 kubectl cheat sheet: the commands you use every day A compact reference of everyday kubectl commands: contexts and namespaces, listing and inspecting objects, logs and exec, applying changes, rollouts, scaling and… Beginner · Reference · Any system Article Concepts · Troubleshooting 15 Oct 2026
- 0150 Logging in with oc and working with OpenShift projects Install the oc client, log in with a password, browser or token, then create, switch and inspect projects. Covers where oc stores… Beginner · How-to · Any system Article Concepts · Deploying applications 15 Oct 2026
- 0155 Security Context Constraints (SCC) and why root containers fail on OpenShift SCCs decide which user ID, capabilities and volumes a pod may use. Learn how restricted-v2 assigns random UIDs, how to see which… Advanced · Concept · Linux Article Cluster administration · Concepts 15 Oct 2026
Repos in the wild
- kubernetes/kubernetes kubernetes/kubernetes The main source repository of Kubernetes: the API server, scheduler, controller manager, kubelet, kube-proxy and kubectl, plus release notes and issue tracking. GitHub
- okd-project/okd: the OKD community distribution okd-project/okd Home of OKD, the community distribution of Kubernetes that powers Red Hat OpenShift. Releases of the installer and client, issue tracking and community information live here. GitHub
History
Every saved edit is kept. The plot on the sleeve draws one line per edit. Open any edit to see exactly what changed.
- commitpedia-admin +3,724 chars