OpenShift Cluster Design

OpenShift is a cloud application platform produced by RedHat, which allows one to run web-based applications on public or private hardware. This document describes the topology and architecture of a private cluster running on RedHat CoreOS on a privately owned KVM host.

This document will describe:

  • The components of an OpenShift Cluster
  • How these components interact
  • How to build an OpenShift cluster

Definition of terms

Node : A node is a machine, virtual or physical, running RedHat CoreOS in order to process cluster workloads.

Pod : A pod is a group of containers deployed on a cluster, and the smallest unit of computation that can be defined in Openshift.

Container : A container is an application running under OpenShift.

Topology of an OpenShift cluster

This diagram shows the components of an OpenShift cluster:

Openshift topology

Components of the OpenShift cluster

We have the following:

  1. Frontnet: The external network containing user services such as file servers and printers. Connected to the Internet.
  2. Load Balancer: A CentOS 9 machine that runs haproxy and contains the openshift commands (openshift-install, oc, kubectl).
  3. Machine Network: Shiftnet. An internal network that is routed to the Outside using a KVM NAT router for Internet access, and a Load Balancer (okdlb) for accessing the applications in the cluster.
  4. Cluster Net: Network internal to the cluster, each node has its own subnet. Each pod has its own IP address, unique within the cluster.
  5. Service Net: A single network that spans the entire cluster and can be used to access services. We can have one or more service networks per cluster.
  6. Pods: The smallest unit of computation in a cluster, performing specific functions in an application.