TR/EN
Blog

Kubernetes vs OpenShift: Key Differences and Which One to Choose

Published: · 11 min read

Once you decide to build container infrastructure, one of the first questions is: plain Kubernetes or Red Hat OpenShift? Both are built on the same foundation, but their philosophy, cost and day-to-day experience are quite different. In this post we compare Kubernetes vs OpenShift in terms of architecture, security, developer experience, resource needs and cost, and explain in plain words which one to pick in which situation.

What Is Kubernetes? (Briefly)

Kubernetes is an open-source orchestration platform that runs containers across multiple servers, scales them and brings them back up on its own when they fail. It started at Google, is developed under the CNCF today and is completely free. But Kubernetes is a "core": you pick and install pieces like ingress, monitoring, log collection, an image registry and CI/CD yourself. If you're curious about the basics, check out our what is Kubernetes post.

What Is OpenShift?

OpenShift is Red Hat's enterprise container platform built on Kubernetes. So OpenShift isn't an alternative to Kubernetes; it's a packaged, supported distribution built on top of Kubernetes. What comes included:

  • Red Hat Enterprise Linux CoreOS (RHCOS) as the OS and the CRI-O container runtime
  • The OVN-Kubernetes network plugin and Route objects for exposing apps
  • A built-in image registry, web console, monitoring and logging stack
  • OperatorHub for installing and updating software through operators
  • CI/CD components like Pipelines (Tekton) and GitOps (Argo CD)

At the time of writing the current release is OpenShift 4.22, based on Kubernetes 1.35. The free, community-developed version is called OKD; technically very similar, but without Red Hat support.

Kubernetes vs OpenShift: Overview

CriteriaKubernetesOpenShift
LicenseOpen source, freeCommercial subscription (OKD is free)
InstallationMany ways: kubeadm, k3s, RKE2 and moreIts own installer, stricter and standardized
Operating systemAlmost any Linux distroRHCOS required for the control plane
Web UIDashboard installed separatelyAdvanced web console included
Exposing appsIngress / Gateway API (controller installed separately)Routes included, Ingress also supported
Image registryNone, installed separatelyBuilt-in registry
CI/CDYou pick and install itPipelines and GitOps operators ready
Default securityMore flexible, it's up to youStricter (SCC, no root)
UpgradesManual or tool-driven, version by versionOne click from the console, OS included
SupportCommunity or third partyRed Hat enterprise support

Security: The Difference You Feel Most

The first thing teams moving to OpenShift usually hit is this: an image pulled from Docker Hub runs fine on Kubernetes but keeps failing with "permission denied" on OpenShift. The reason is OpenShift's Security Context Constraints (SCC). With the default restricted-v2 constraint, containers can't run as root, they run with a randomly assigned user ID per project and privileged capabilities are off.

On Kubernetes, similar controls are done with Pod Security Admission, but they aren't enforced by default; you turn them on by labeling namespaces:

# OpenShift: list the defined security constraints
oc get scc
oc adm policy who-can use scc restricted-v2

# Kubernetes: apply a similar restriction to a namespace with Pod Security Admission
kubectl label namespace demo pod-security.kubernetes.io/enforce=restricted
Practical tip: If you build your images to run as a non-root user from the start (e.g. nginx-unprivileged instead of nginx), they'll run fine on both Kubernetes and OpenShift and you'll be in a better spot security-wise too.

Developer Experience: kubectl and oc

OpenShift's command-line tool oc supports all kubectl commands and adds shortcuts on top. Deploying the same app on both sides looks like this:

# OpenShift (oc)
oc new-project demo
oc new-app --image=nginxinc/nginx-unprivileged --name=web
oc expose service/web            # creates a Route for external access
oc get route web

# Kubernetes (kubectl)
kubectl create namespace demo
kubectl create deployment web --image=nginxinc/nginx-unprivileged -n demo
kubectl expose deployment web --port=8080 -n demo
kubectl create ingress web --rule="web.example.com/*=web:8080" -n demo   # needs an Ingress Controller installed

On OpenShift, oc new-app sets up the deployment and service, and oc expose sets up the hostname in one go. On Kubernetes the same result takes a few steps and a pre-installed Ingress Controller. If you're new to kubectl, we collected the most used commands in our how kubectl works post.

On top of that, OpenShift's web console has a seperate view for developers: creating an app from a Git repo, following logs or opening a terminal into a pod can be done without writing YAML. On Kubernetes, extra tools like Lens or Headlamp are used for this.

Resource Requirements

Setup typeMinimum resourcesNote
Single-node Kubernetes (k3s, kubeadm)2 cores, 2–4 GB RAMEnough for small projects and testing
Multi-node Kubernetes1+ control plane (2 cores / 2 GB+), workers as needed3 control planes for high availability
Single Node OpenShift (SNO)8 vCPU, 16 GB RAM, 120 GB diskPlatform services use a big chunk of the resources
Standard OpenShift cluster3 control planes + at least 2 workersEach control plane needs serious resources too

The takeaway is clear: since OpenShift ships with alot out of the box, it uses far more resources than Kubernetes even when idle. On a small project you feel that difference directly in the monthly bill.

Cost

Kubernetes is free as software; what you pay for is servers and the effort spent on installing, upgrading and monitoring it. With OpenShift you pay an annual subscription on top of that. Licensing is usually based on 2-core (or 4 vCPU) units and only worker nodes that run applications are counted. Red Hat doesn't publish self-managed OpenShift prices openly; the price depends on the edition (Kubernetes Engine, Container Platform, Platform Plus), support level and the deal, so we recommend not relying on numbers you see online before getting a quote. Managed cloud options (ROSA on AWS, Azure Red Hat OpenShift, OpenShift Dedicated) are billed hourly and by usage.

Cost itemKubernetesOpenShift
Software licenseNoneCore-based annual subscription
InfrastructureLow (you can start small)High (higher minimum requirements)
Setup and integration effortHigh (you pick the pieces)Low (everything comes ready)
Day-to-day operationsMedium–high, depends on the teamMedium, automatic upgrades make it easier
SupportCommunity or paid consultingIncluded in the subscription

In short, in large organizations OpenShift's license cost can pay for itself by saving engineering time on setup and integration. In small teams that equation usually favors Kubernetes.

Which One When?

SituationOur pickWhy?
Startup, small team, limited budgetKubernetesFree, starts with few resources, flexible
Learning, testing, personal projectsKubernetes (k3s or a ready cluster)Quick to set up, runs on a cheap server
Regulated industries like banking or healthcareOpenShiftStrict default security, certifications, enterprise support
Organizations already on Red Hat (RHEL, Ansible)OpenShiftSame ecosystem and support agreement
Many dev teams, self-service platformOpenShiftReady console, project isolation, CI/CD
Hybrid or multi-cloud, freedom of toolingKubernetesManaged versions on every cloud, no lock-in

Moving from Kubernetes to OpenShift (or Back)

Good news: since OpenShift is a certified Kubernetes, standard manifests like Deployment, Service and ConfigMap and most Helm charts work on both. Things to watch out for:

  • Images running as root: they get blocked by SCC on OpenShift; fix the image or grant a suitable SCC to the service account.
  • Route and ImageStream: OpenShift-specific objects. When going back to Kubernetes, use Ingress instead of Route and a direct image reference instead of ImageStream.
  • Fixed UID expectations: apps that set file permissions for a specific user ID can have issues with OpenShift's random UID.

If you want to stay portable, writing with standard Kubernetes objects (Ingress, Deployment) is the safest way.

Kubernetes and OpenShift with VECDC

If you want a Kubernetes environment quickly, our Kubernetes Server plans start at $6/month (K8S-1: 2 Core, 8 GB RAM, 40 GB NVMe) and are ready with your kubeconfig in about 5 minutes with automated setup; you can choose the location when ordering. If you'd like to learn to build the cluster yourself, our how to install a Kubernetes server post walks through it step by step.

If you want to try OKD or OpenShift you'll need at least 8 vCPU and 16 GB RAM; VPS-5 with 8 Core and 32 GB RAM works for that, or for bigger setups our dedicated servers delivered within 24 hours. If you need help with architecture, installation or migration, our Kubernetes consulting service can help.

Frequently Asked Questions

Is OpenShift free?

Red Hat OpenShift is a commercial subscription licensed annually per core. Free options include the community version OKD, OpenShift Local that runs on your own computer and the time-limited Developer Sandbox; these don't come with Red Hat enterprise support.

Is OpenShift a Kubernetes?

Yes. OpenShift is a certified Kubernetes distribution; it adds an OS, networking, an image registry, a web console, CI/CD and stricter security settings on top of Kubernetes. Standard Kubernetes manifests work on OpenShift too.

Does kubectl work on OpenShift?

Yes. OpenShift's oc tool supports all kubectl commands, and you can also use kubectl directly against an OpenShift cluster. On top of that, oc adds OpenShift-specific shortcuts like new-project, new-app and expose.

Kubernetes or OpenShift for a small project?

For small projects Kubernetes usually makes more sense: there's no license fee and it can start with 2 cores and a few GB of RAM. OpenShift needs at least 8 vCPU and 16 GB RAM even as a single node and shows its real advantages in large, regulated environments.

In Short

Kubernetes is a free, flexible and lightweight core; OpenShift is a paid platform that adds security, a UI, a registry, CI/CD and enterprise support on top of that core. For small teams, startups and people who want to learn, Kubernetes usually makes more sense; in regulated industries and large organizations with many teams, everything OpenShift ships with can justify its license cost. If you can't decide, drop us a message and lets look at your needs together.

Your Virtual Server, Ready in 5 Minutes

NVMe virtual servers with dedicated resources start at $6/month.

See Packages →