Last generated January 9, 2023

AWSMachineDeployment

AWSMachineDeployment is the infrastructure provider referenced in Kubernetes Cluster API MachineDeployment resources. It contains provider-specific specification and status for a node pool. In use on AWS since workload cluster release v10.x.x and reconciled by aws-operator.

Full name:
awsmachinedeployments.infrastructure.giantswarm.io
Group:
infrastructure.giantswarm.io
Singular name:
awsmachinedeployment
Plural name:
awsmachinedeployments
Scope:
Namespaced
Versions:
v1alpha2v1alpha3

Version v1alpha2

Example CR

apiVersion: infrastructure.giantswarm.io/v1alpha2
kind: AWSMachineDeployment
metadata:
  annotations:
    giantswarm.io/docs: https://docs.giantswarm.io/ui-api/management-api/crd/awsmachinedeployments.infrastructure.giantswarm.io/
  creationTimestamp: null
  labels:
    aws-operator.giantswarm.io/version: 8.7.0
    giantswarm.io/cluster: al9qy
    giantswarm.io/machine-deployment: wk4np
    giantswarm.io/organization: giantswarm
    release.giantswarm.io/version: 11.5.0
  name: wk4np
  namespace: default
spec:
  nodePool:
    description: General purpose worker nodes
    machine:
      dockerVolumeSizeGB: 100
      kubeletVolumeSizeGB: 100
    scaling:
      max: 50
      min: 2
  provider:
    availabilityZones:
    - eu-central-1b
    - eu-central-1c
    instanceDistribution:
      onDemandBaseCapacity: 2
      onDemandPercentageAboveBaseCapacity: 50
    worker:
      instanceType: m5.4xlarge
      useAlikeInstanceTypes: true

Properties

.apiVersion

string

APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources

.kind

string

Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds

.metadata

object

.spec

object Required

Contains the specification.

.spec.nodePool

object Required

Specifies details of node pool and the worker nodes it should contain.

.spec.nodePool.description

string Required

User-friendly name or description of the purpose of the node pool.

.spec.nodePool.machine

object Required

Specification of the worker node machine.

.spec.nodePool.machine.dockerVolumeSizeGB

integer Required

Size of the volume reserved for Docker images and overlay file systems of Docker containers. Unit: 1 GB = 1,000,000,000 Bytes.

.spec.nodePool.machine.kubeletVolumeSizeGB

integer Required

Size of the volume reserved for the kubelet, which can be used by Pods via volumes of type EmptyDir. Unit: 1 GB = 1,000,000,000 Bytes.

.spec.nodePool.scaling

object Required

Scaling settings for the node pool, configuring the cluster-autoscaler determining the number of nodes to have in this node pool.

.spec.nodePool.scaling.max

integer Required

Maximum number of worker nodes in this node pool.

.spec.nodePool.scaling.min

integer Required

Minimum number of worker nodes in this node pool.

.spec.provider

object Required

Contains AWS specific details.

.spec.provider.availabilityZones

array

Name(s) of the availability zone(s) to use for worker nodes. Using multiple availability zones results in higher resilience but can also result in higher cost due to network traffic between availability zones.

.spec.provider.availabilityZones[*]

string

.spec.provider.instanceDistribution

object

Settings defining the distribution of on-demand and spot instances in the node pool.

.spec.provider.instanceDistribution.onDemandBaseCapacity

integer

Base capacity of on-demand instances to use for worker nodes in this pool. When this larger than 0, this value defines a number of worker nodes that will be created using on-demand EC2 instances, regardless of the value configured as onDemandPercentageAboveBaseCapacity.

.spec.provider.instanceDistribution.onDemandPercentageAboveBaseCapacity

integer

Percentage of on-demand EC2 instances to use for worker nodes, instead of spot instances, for instances exceeding onDemandBaseCapacity. For example, to have half of the worker nodes use spot instances and half use on-demand, set this value to 50.

.spec.provider.worker

object Required

Specification of worker nodes.

.spec.provider.worker.instanceType

string Required

AWS EC2 instance type name to use for the worker nodes in this node pool.

.spec.provider.worker.useAlikeInstanceTypes

boolean Required

If true, certain instance types with specs similar to instanceType will be used.

.status

object

Holds status information.

.status.provider

object

Status specific to AWS.

.status.provider.worker

object

Status of worker nodes.

.status.provider.worker.instanceTypes

array

AWS EC2 instance types used for the worker nodes in this node pool.

.status.provider.worker.instanceTypes[*]

string

.status.provider.worker.spotInstances

integer

Number of EC2 spot instances used in this node pool.

Annotations

alpha.aws.giantswarm.io/aws-subnet-size

Since 12.7.0

This annotation is used to configure the workload cluster’s control plane subnet size when used on an AWSCluster resource or to configure the workload cluster’s node pool subnet size when used on an AWSMachineDeployment resource. The value is a number that will represent the subnet mask used when creating the subnet. It must be smaller than 28 due to AWS restrictions.

alpha.aws.giantswarm.io/update-max-batch-size

Since 12.7.0

This annotation is used for configuring maximum batch size for instances termination during ASG update. The value can be either a whole number specifying the number of instances or a percentage of total instances as decimal number ie 0.3 for 30%. See fine-tuning upgrade disruption and AWS documentation for additional information.

alpha.aws.giantswarm.io/update-pause-time

Since 12.7.0

This annotation is used for configuring time pause between rolling a single batch during ASG update. The value must be in ISO 8601 duration format, e. g. “PT5M” for five minutes or “PT10S” for 10 seconds. See fine-tuning upgrade disruption and AWS documentation for additional information.

Version v1alpha3

Example CR

apiVersion: infrastructure.giantswarm.io/v1alpha3
kind: AWSMachineDeployment
metadata:
  annotations:
    giantswarm.io/docs: https://docs.giantswarm.io/ui-api/management-api/crd/awsmachinedeployments.infrastructure.giantswarm.io/
  creationTimestamp: null
  labels:
    aws-operator.giantswarm.io/version: 8.7.0
    giantswarm.io/cluster: al9qy
    giantswarm.io/machine-deployment: wk4np
    giantswarm.io/organization: giantswarm
    release.giantswarm.io/version: 11.5.0
  name: wk4np
  namespace: default
spec:
  nodePool:
    description: General purpose worker nodes
    machine:
      dockerVolumeSizeGB: 100
      kubeletVolumeSizeGB: 100
    scaling:
      max: 50
      min: 2
  provider:
    availabilityZones:
    - eu-central-1b
    - eu-central-1c
    instanceDistribution:
      onDemandBaseCapacity: 2
      onDemandPercentageAboveBaseCapacity: 50
    worker:
      instanceType: m5.4xlarge
      useAlikeInstanceTypes: true

Properties

.apiVersion

string

APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources

.kind

string

Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds

.metadata

object

.spec

object Required

Contains the specification.

.spec.nodePool

object Required

Specifies details of node pool and the worker nodes it should contain.

.spec.nodePool.description

string Required

User-friendly name or description of the purpose of the node pool.

.spec.nodePool.machine

object Required

Specification of the worker node machine.

.spec.nodePool.machine.dockerVolumeSizeGB

integer Required

Size of the volume reserved for Docker images and overlay file systems of Docker containers. Unit: 1 GB = 1,000,000,000 Bytes.

.spec.nodePool.machine.kubeletVolumeSizeGB

integer Required

Size of the volume reserved for the kubelet, which can be used by Pods via volumes of type EmptyDir. Unit: 1 GB = 1,000,000,000 Bytes.

.spec.nodePool.scaling

object Required

Scaling settings for the node pool, configuring the cluster-autoscaler determining the number of nodes to have in this node pool.

.spec.nodePool.scaling.max

integer Required

Maximum number of worker nodes in this node pool.

.spec.nodePool.scaling.min

integer Required

Minimum number of worker nodes in this node pool.

.spec.provider

object Required

Contains AWS specific details.

.spec.provider.availabilityZones

array

Name(s) of the availability zone(s) to use for worker nodes. Using multiple availability zones results in higher resilience but can also result in higher cost due to network traffic between availability zones.

.spec.provider.availabilityZones[*]

string

.spec.provider.instanceDistribution

object

Settings defining the distribution of on-demand and spot instances in the node pool.

.spec.provider.instanceDistribution.onDemandBaseCapacity

integer

Base capacity of on-demand instances to use for worker nodes in this pool. When this larger than 0, this value defines a number of worker nodes that will be created using on-demand EC2 instances, regardless of the value configured as onDemandPercentageAboveBaseCapacity.

.spec.provider.instanceDistribution.onDemandPercentageAboveBaseCapacity

integer

Percentage of on-demand EC2 instances to use for worker nodes, instead of spot instances, for instances exceeding onDemandBaseCapacity. For example, to have half of the worker nodes use spot instances and half use on-demand, set this value to 50.

.spec.provider.worker

object Required

Specification of worker nodes.

.spec.provider.worker.instanceType

string Required

AWS EC2 instance type name to use for the worker nodes in this node pool.

.spec.provider.worker.useAlikeInstanceTypes

boolean Required

If true, certain instance types with specs similar to instanceType will be used.

.status

object

Holds status information.

.status.provider

object

Status specific to AWS.

.status.provider.worker

object

Status of worker nodes.

.status.provider.worker.instanceTypes

array

AWS EC2 instance types used for the worker nodes in this node pool.

.status.provider.worker.instanceTypes[*]

string

.status.provider.worker.spotInstances

integer

Number of EC2 spot instances used in this node pool.


This documentation page shows information based on apiextensions v5.0.0.