Answers: <p>Basically, a Node is just a simple worker OpenShift (or Kubernetes) instance where OpenShift can schedule Pods.</p>
  
  <p><code>Machine</code> 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.</p>
  
Answers: CC BY-SA 4.0
Answers: 2020-03-07T09:39:39.630Z
Answers: 2020-03-07T09:39:39.630Z
Answers: Hedi Nasr
Answers: <p>Your interpretation is correct:</p>
  
  <blockquote>
    <p>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.</p>
  </blockquote>
  
  <p>The differences arise on the level of abstraction.</p>
  
  <ul>
  <li><p>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.</p></li>
  <li><p>A Machine is an abstraction introduced by the <a href="https://github.com/kubernetes-sigs/cluster-api" rel="nofollow noreferrer">Cluster API</a> 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.</p></li>
  </ul>
  
Answers: CC BY-SA 4.0
Answers: 2021-07-24T18:37:42.473Z
Answers: just a suggestion to add a link to the Concepts page of the book, and perhaps a bit of its description of the Machine concept:
  
  https://cluster-api.sigs.k8s.io/user/concepts.html
Answers: caxcaxcoatl
Answers: CC BY-SA 4.0
Answers: 2020-03-11T20:30:14.640Z
Answers: 2020-03-11T20:30:14.640Z
Answers: davidmontoyago
Body: <p>OpenShift 4.2 documentation defines:</p>
  
  <blockquote>
    <p><strong>Machines</strong></p>
    
    <p>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.</p>
  </blockquote>
  
  <p><a href="https://docs.openshift.com/container-platform/4.1/machine_management/creating-machineset.html" rel="nofollow noreferrer">https://docs.openshift.com/container-platform/4.1/machine_management/creating-machineset.html</a></p>
  
  <p>While Kubernetes doc defines:</p>
  
  <blockquote>
    <p><strong>Nodes</strong></p>
    
    <p>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.</p>
  </blockquote>
  
  <p><a href="https://kubernetes.io/docs/concepts/architecture/nodes/" rel="nofollow noreferrer">https://kubernetes.io/docs/concepts/architecture/nodes/</a></p>
  
  <p>I don't know whether Kubernetes has the concept of <em>machines</em>, and I can't find on OpenShift's documentation its own definition of <em>node</em> (perhaps it uses Kubernetes'?)</p>
  
  <p>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 <em>contains the services necessary to run pods and is managed by the master components</em>.</p>
  
  <p>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.</p>
  
  <p>So...  What is really the difference between nodes and machines?  Is a node in OpenShift exactly the same thing as in Kubernetes?</p>
  
Tags: <kubernetes><openshift>
Title: What is the difference between a node and a machine on OpenShift?
UserDisplayName: caxcaxcoatl
ThreadText: # What is the difference between a node and a machine on OpenShift?
  
  (Asked by: username_0 on 2020-03-07)
  
  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?
  
  **Tags:** kubernetes, openshift
  
  
  ---
  
  ## 2 answers
  
  ### Answer by username_2 on 2020-03-11. Score: 3 | Accepted answer
  
  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](https://github.com/kubernetes-sigs/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.
  
  > **Comments:**
  > **username_0**: just a suggestion to add a link to the Concepts page of the book, and perhaps a bit of its description of the Machine concept:  https://cluster-api.sigs.k8s.io/user/concepts.html  
  
  ---
  
  ### Answer by username_1 on 2020-03-07. Score: 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.
  
  
  ---
  
  