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?