Posted on :: Updated on ::

Cluster

Represents kubernetes cluster whose lifecycle is managed by CAPI. Provider specific custom resources are referenced by infrastructureRef or controlPlanRef

apiVersion: cluster.x-k8s.io/v1beta2
kind: Cluster
metadata:
  name: my-cluster
spec:
  clusterNetwork:
    pods:
      cidrBlocks:
      - 192.168.0.0/16
  infrastructureRef:
    apiGroup: infrastructure.cluster.x-k8s.io
    kind: VSphereCluster
    name: my-cluster-infrastructure
  controlPlaneRef:
    apiGroup: controlplane.cluster.x-k8s.io
    kind: KubeadmControlPlane
    name: my-control-plane

ClusterClass

Allows managing multiple cluster objects.

Machine

Immutable objects representing kubernetes node. Never updated (other than labels, annotations & status) can only be deleted. Provider specific resources are referenced via infrastructureRef. Provider specific controller provisions a new host to register as new node matching the machine spec. If machine is deleted, underlying infrastructure and node is deleted. Imm

apiVersion: cluster.x-k8s.io/v1beta2
kind: Machine
metadata:
  name: my-machine
spec:
  clusterName: my-cluster
  version: v1.35.0
  infrastructureRef:
    apiGroup: infrastructure.cluster.x-k8s.io
    kind: VSphereMachineTemplate
    name: my-machine-infrastructure
  bootstrap:
    configRef:
      apiGroup: bootstrap.cluster.x-k8s.io
      kind: KubeadmConfigTemplate
      name: my-bootstrap-config
status:
  nodeRef:
    name: the-node-running-on-my-machine

Machine Deployment

Similar to pod deployment, creates machine set, which creates machines.

Machine Pool

Infrastructure specific group of machines

Machine Set

Similar to pod replica set.

Machine Healthcheck

Automatically initiate remediation for missing/unhealthy nodes, by replacing them.

Infrastructure Provider

Component responsible for provisioning compute machines required by cluster or machines.

Bootstrap Provider

Turn the server into kubernetes node using machine/node role specific init (using cloud-init) known as BootstrapData. BootStrapData is used by infrastructure provider to bootstrap machine into node.

Control Plane Provider

Can either be:

  • Self provisioned, wholly managed by single Cluster-API deployment
  • Pod based, require external hosting cluster, where control plane components are running as pod, exposed by service.
  • External or managed, controlled by service other than CAPI (eg GKE, AKS, EKS etc)

KubeAdmControlPlane

Manage set of machines as control plane nodes using kubeadm.