Class AwsNodeOptions
AWS specific options for a cluster node. These options can be used to override defaults specified by AwsHostingOptions. The constructor initializes reasonable values.
Namespace: Neon.Kube.ClusterDef
Assembly: Neon.Kube.dll
Syntax
public class AwsNodeOptions
Properties
EbsOptimized
Specifies whether the cluster instance should be EBS-optimized. This is a TriState value that defaults to Default which means that the default cluster wide DefaultEbsOptimized value will be used. You can override the cluster default for this node by setting True or False.
Declaration
[JsonProperty(PropertyName = "EbsOptimized", Required = Required.Default, DefaultValueHandling = DefaultValueHandling.IgnoreAndPopulate)]
[YamlMember(Alias = "ebsOptimized", ApplyNamingConventions = false)]
public TriState EbsOptimized { get; set; }
Property Value
Type | Description |
---|---|
TriState |
Remarks
Non EBS optimized instances perform disk operation I/O to EBS volumes using the same network used for other network operations. This means that you may see some disk performance declines when your instance is busy serving web traffic or running database queries, etc.
EBS optimization can be enabled for some instance types. This provisions extra dedicated network bandwidth exclusively for EBS I/O. Exactly how this works, depends on the specific VM type.
More modern AWS VM types enable EBS optimization by default and you won't incur any additional charges for these instances and disabling EBS optimization here or via DefaultEbsOptimized won't have any effect.
Some AWS instance types can be optimized but this is disabled by default. When you
enable this by setting DefaultEbsOptimized=true
or
EbsOptimized=true
, you'll probably an additional
AWS hourly fee for these instances.
Some AWS instance types don't support EBS optimization. You'll need to be sure that this is disabled for those nodes.
InstanceType
Optionally specifies the type of ECB instance to provision for this node. The available instance types are listed here. This defaults to DefaultInstanceType.
note
NEONKUBE clusters cannot be deployed to ARM-based AWS instance types. You must specify an instance type using a Intel or AMD 64-bit processor.
note
NEONKUBE requires control-plane and worker instances to have at least 4 CPUs and 8GiB RAM. Choose an AWS instance type that satisfies these requirements.
Declaration
[JsonProperty(PropertyName = "InstanceType", Required = Required.Default, DefaultValueHandling = DefaultValueHandling.IgnoreAndPopulate)]
[YamlMember(Alias = "instanceType", ApplyNamingConventions = false)]
public string InstanceType { get; set; }
Property Value
Type | Description |
---|---|
string |
OpenEbsVolumeSize
Optionally specifies the size of the AWS volume to be used for the node's OpenEBS cStor disk (if any).
This defaults to null
which indicates that DefaultDiskSize
will be used for the node.
Declaration
[JsonProperty(PropertyName = "OpenEbsVolumeSize", Required = Required.Default, DefaultValueHandling = DefaultValueHandling.IgnoreAndPopulate)]
[YamlMember(Alias = "openEbsVolumeSize", ApplyNamingConventions = false)]
public string OpenEbsVolumeSize { get; set; }
Property Value
Type | Description |
---|---|
string |
Remarks
note
Node disks smaller than 64 GiB are not supported by NEONKUBE. We'll automatically upgrade the disk size when necessary.
OpenEbsVolumeType
Optionally specifies the AWS volume type to be used for the the node's OpenEBS cStor disk (if any). This defaults to Default which indicates that DefaultOpenEbsVolumeType will specify the volume type for the node.
Declaration
[JsonProperty(PropertyName = "OpenEbsVolumeType", Required = Required.Default, DefaultValueHandling = DefaultValueHandling.IgnoreAndPopulate)]
[YamlMember(Alias = "openEbsVolumeType", ApplyNamingConventions = false)]
public AwsVolumeType OpenEbsVolumeType { get; set; }
Property Value
Type | Description |
---|---|
AwsVolumeType |
PlacementPartition
Optionally specifies the AWS placement group partition the node will be provisioned within. This is a 1-based partition index which defaults to 0, indicating that node placement will be handled automatically.
Declaration
[JsonProperty(PropertyName = "PlacementPartition", Required = Required.Default, DefaultValueHandling = DefaultValueHandling.IgnoreAndPopulate)]
[YamlMember(Alias = "placementPartition", ApplyNamingConventions = false)]
public int PlacementPartition { get; set; }
Property Value
Type | Description |
---|---|
int |
Remarks
You generally don't need to customize this for control-plane nodes since there will generally be a separate partition available for each control-plane and AWS will spread the instances across these automatically. When you specify this for control-plane nodes, the partition index must be in the range of [1...ControlPlanePlacementPartitions].
For some cluster scenarios like a noSQL database cluster, you may wish to explicitly control the partition where specific worker nodes are provisioned. For example, if your database replcates data across multiple worker nodes, you'd like to have the workers hosting the same data be provisioned to different partitions such that if the workers in one partition are lost then the workers in the remaining partitions will still be able to serve the data.
When you specify this for worker nodes, the partition index must be in the range of [1...WorkerPlacementPartitions].
VolumeSize
Optionally specifies the size of the AWS volume to be used as the node's primary disk.
This defaults to null
which indicates that DefaultVolumeSize
will be used.
Declaration
[JsonProperty(PropertyName = "VolumeSize", Required = Required.Default, DefaultValueHandling = DefaultValueHandling.IgnoreAndPopulate)]
[YamlMember(Alias = "volumeSize", ApplyNamingConventions = false)]
public string VolumeSize { get; set; }
Property Value
Type | Description |
---|---|
string |
Remarks
note
Node disks smaller than 64 GiB are not supported by NEONKUBE. We'll automatically round up the disk size when necessary.
VolumeType
Optionally specifies the type of AWS volume to be used as the node's primary disk. This defaults to Default which indicates that DefaultInstanceType will specify the volume type for the node.
Declaration
[JsonProperty(PropertyName = "VolumeType", Required = Required.Default, DefaultValueHandling = DefaultValueHandling.IgnoreAndPopulate)]
[YamlMember(Alias = "volumeType", ApplyNamingConventions = false)]
public AwsVolumeType VolumeType { get; set; }
Property Value
Type | Description |
---|---|
AwsVolumeType |
Methods
Validate(ClusterDefinition, string)
Validates the options and also ensures that all null
properties are
initialized to their default values.
Declaration
public void Validate(ClusterDefinition clusterDefinition, string nodeName)
Parameters
Type | Name | Description |
---|---|---|
ClusterDefinition | clusterDefinition | The cluster definition. |
string | nodeName | The associated node name. |
Exceptions
Type | Condition |
---|---|
ClusterDefinitionException | Thrown if the definition is not valid. |