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.
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
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
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
.spec
Contains the specification.
.spec.nodePool
Specifies details of node pool and the worker nodes it should contain.
.spec.nodePool.description
User-friendly name or description of the purpose of the node pool.
.spec.nodePool.machine
Specification of the worker node machine.
.spec.nodePool.machine.dockerVolumeSizeGB
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
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
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
Maximum number of worker nodes in this node pool.
.spec.nodePool.scaling.min
Minimum number of worker nodes in this node pool.
.spec.provider
Contains AWS specific details.
.spec.provider.availabilityZones
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[*]
.spec.provider.instanceDistribution
Settings defining the distribution of on-demand and spot instances in the node pool.
.spec.provider.instanceDistribution.onDemandBaseCapacity
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
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
Specification of worker nodes.
.spec.provider.worker.instanceType
AWS EC2 instance type name to use for the worker nodes in this node pool.
.spec.provider.worker.useAlikeInstanceTypes
If true, certain instance types with specs similar to instanceType will be used.
.status
Holds status information.
.status.provider
Status specific to AWS.
.status.provider.worker
Status of worker nodes.
.status.provider.worker.instanceTypes
AWS EC2 instance types used for the worker nodes in this node pool.
.status.provider.worker.instanceTypes[*]
.status.provider.worker.spotInstances
Number of EC2 spot instances used in this node pool.
Annotations
alpha.aws.giantswarm.io/aws-subnet-size
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
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
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
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
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
.spec
Contains the specification.
.spec.nodePool
Specifies details of node pool and the worker nodes it should contain.
.spec.nodePool.description
User-friendly name or description of the purpose of the node pool.
.spec.nodePool.machine
Specification of the worker node machine.
.spec.nodePool.machine.dockerVolumeSizeGB
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
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
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
Maximum number of worker nodes in this node pool.
.spec.nodePool.scaling.min
Minimum number of worker nodes in this node pool.
.spec.provider
Contains AWS specific details.
.spec.provider.availabilityZones
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[*]
.spec.provider.instanceDistribution
Settings defining the distribution of on-demand and spot instances in the node pool.
.spec.provider.instanceDistribution.onDemandBaseCapacity
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
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
Specification of worker nodes.
.spec.provider.worker.instanceType
AWS EC2 instance type name to use for the worker nodes in this node pool.
.spec.provider.worker.useAlikeInstanceTypes
If true, certain instance types with specs similar to instanceType will be used.
.status
Holds status information.
.status.provider
Status specific to AWS.
.status.provider.worker
Status of worker nodes.
.status.provider.worker.instanceTypes
AWS EC2 instance types used for the worker nodes in this node pool.
.status.provider.worker.instanceTypes[*]
.status.provider.worker.spotInstances
Number of EC2 spot instances used in this node pool.
This documentation page shows information based on apiextensions v5.0.0.
Need help with the Management API?
We listen in your Slack support channel. And of course, we welcome your pull requests to improve these docs!