clmng_intro - OpenNebula/cluster-api-provider-opennebula GitHub Wiki

Overview

A workload cluster consists of three main components:

  • Virtual Router (VNF): Connects the Kubernetes cluster to external networks.
  • Control Plane (CP): Hosts the Kubernetes management services and exposes the Kubernetes API.
  • Worker Nodes: Run the service containers from your applications.

Each of these components is implemented using one or more virtual machines (VMs). The following diagram provides an overview of how these VMs are deployed across public and private networks.

Public Network
─────────────────────────────┬────────────────────────────────────
                             β”‚ PUBLIC_IP (172.20.0.200) (ep0.eth0.vr)
                     β”Œ ─ ─ ─ β”Ό ─ ─ ─ ┐
                     β”‚  CAPONE vnf   β”‚
                     β”‚       β”‚       β”‚
                     β”‚  β”Œβ”€β”€eth0──┐   β”‚
                     β”‚  β”‚        β”‚   β”‚
                     β”‚  β”‚  VM-1  β”‚   β”‚
                     β”‚  β”‚        β”‚   β”‚
                     β”‚  └──eth1β”€β”€β”˜   β”‚
                     β”‚       β”‚       β”‚
                     β”‚  10.2.11.101  β”‚
                     β”‚ (ep0.eth1.vr) β”‚
                     β”‚       β”‚       β”‚
                     β”” ─ ─ ─ β”Ό ─ ─ ─ β”˜
                             β”‚
─────────┬───────────────────┼───────────────────┬────────────────
Private Network              β”‚                   β”‚
         β”‚                   β”‚                   β”‚
 β”Œ ─ ─ ─ β”Ό ─ ─ ─ ─┐  β”Œ ─ ─ ─ β”Ό ─ ─ ─ ─┐  β”Œ ─ ─ ─ β”Ό ─ ─ ─ ─┐
 β”‚    CAPONE cp   β”‚  β”‚  CAPONE worker β”‚  β”‚ CAPONE worker  β”‚
 β”‚       β”‚        β”‚  β”‚       β”‚        β”‚  β”‚       β”‚        β”‚
 β”‚  10.2.11.102   β”‚  β”‚  10.2.11.103   β”‚  β”‚  10.2.11.104   β”‚
 β”‚       β”‚        β”‚  β”‚       β”‚        β”‚  β”‚       β”‚        β”‚
 β”‚   β”Œβ”€β”€eth0──┐   β”‚  β”‚   β”Œβ”€β”€eth0──┐   β”‚  β”‚   β”Œβ”€β”€eth0──┐   β”‚
 β”‚   β”‚        β”‚   β”‚  β”‚   β”‚        β”‚   β”‚  β”‚   β”‚        β”‚   β”‚
 β”‚   β”‚  VM-2  β”‚   β”‚  β”‚   β”‚  VM-3  β”‚   β”‚  β”‚   β”‚  VM-4  β”‚   β”‚
 β”‚   β”‚        β”‚   β”‚  β”‚   β”‚        β”‚   β”‚  β”‚   β”‚        β”‚   β”‚
 β”‚   β””β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β”‚  β”‚   β””β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β”‚  β”‚   β””β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β”‚
 β”” ─ ─ ─ ─ ─ ─ ─ β”€β”˜  β”” ─ ─ ─ ─ ─ ─ ─ β”€β”˜  β”” ─ ─ ─ ─ ─ ─ ─ β”€β”˜

From an OpenNebula point of view you'll see something like this for the example above:

ID  USER     GROUP    NAME                         STAT  CPU     MEM HOST                         TIME
344 oneadmin oneadmin capone-md-0-ccxpl-wj2fl      runn    1      3G localhost                 0d 00h00
343 oneadmin oneadmin capone-md-0-ccxpl-64hpl      runn    1      3G localhost                 0d 00h51
342 oneadmin oneadmin capone-md-0-ccxpl-z54rl      runn    1      3G localhost                 0d 00h51
341 oneadmin oneadmin capone-4q6tn                 runn    1      3G localhost                 0d 00h53
340 oneadmin oneadmin vr-capone-cp-0               runn    1    512M localhost                 0d 00h53

In this case, the component to VM mapping is as follows:

  • The virtual router is VM 340 (vr-capone-cp-0)
  • The k8s control plane is VM 341 (capone-4q6tn)
  • The k8s worker nodes are VMs 342, 343, 344 (capone-md-0-ccxpl-*)