2

OpenShift 4.2 documentation defines:

Machines

A fundamental unit that describes the host for a Node. A machine has a providerSpec, which describes the types of compute nodes that are offered for different cloud platforms. For example, a machine type for a worker node on Amazon Web Services (AWS) might define a specific machine type and required metadata.

https://docs.openshift.com/container-platform/4.1/machine_management/creating-machineset.html

While Kubernetes doc defines:

Nodes

A node is a worker machine in Kubernetes, previously known as a minion. A node may be a VM or physical machine, depending on the cluster. Each node contains the services necessary to run pods and is managed by the master components. The services on a node include the container runtime, kubelet and kube-proxy. See The Kubernetes Node section in the architecture design doc for more details.

https://kubernetes.io/docs/concepts/architecture/nodes/

I don't know whether Kubernetes has the concept of machines, and I can't find on OpenShift's documentation its own definition of node (perhaps it uses Kubernetes'?)

And I can't get what's the difference between them. My current understanding is that a machine represents a raw physical or virtual machine; just the computational resources like cpu, memory and storage. Nodes, then, would represent a machine that is configured for using with OpenShift, that is, a machine that contains the services necessary to run pods and is managed by the master components.

Another theory would be that machines are just an abstraction to the existing infrastructure, so that persistent labels can be assigned to them for organizing the infrastructure, and as a way to provide information on the underlying infrastructure properties for the nodes.

So... What is really the difference between nodes and machines? Is a node in OpenShift exactly the same thing as in Kubernetes?

2

Your interpretation is correct:

My current understanding is that a machine represents a raw physical or virtual machine; just the computational resources like cpu, memory and storage. Nodes, then, would represent a machine that is configured for using with OpenShift, that is, a machine that contains the services necessary to run pods and is managed by the master components.

The differences arise on the level of abstraction.

  • A Node in OpenShift is exactly the same thing as a Kubernetes node. It refers to the abstraction of a worker/master "Node" in a "Cluster". The Node abstraction only exists within the boundaries of a running cluster.

  • A Machine is an abstraction introduced by the Cluster API which is an ongoing effort to allow deploying K8S clusters using a declarative approach. OpenShift is currently adopting the Cluster API hence they expect you to define the host infrastructure required to run your Nodes using the Machine spec.

1

Basically, a Node is just a simple worker OpenShift (or Kubernetes) instance where OpenShift can schedule Pods.

Machine is a new API introduce by OpenShift 4 that manage dynamic instance provisioning on top of public (AWS, Azure...) or private (OpenStack, VMWare...) cloud provider.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.