Recommendations for EKS (AWS)
20 March 2023 · Read time 1 min
We recommend setting up karpenter or cluster-autoscaler to launch instances in at least 3 Availability Zones.
If you plan on sharing Kubernetes cluster with other workloads, it’s
recommended you label Kubernetes Nodes intended for Altinity.Cloud Anywhere
with altinity.cloud/use=anywhere
& taint with dedicated=anywhere:NoSchedule
.
Instance Types
for Zookeeper infrastructure nodes
t3.large
ort4g.large
*
* t4g
instances are AWS Graviton2-based (ARM).
for ClickHouse nodes
ClickHouse works the best in AWS when using nodes from those instance families:
m5
m6i
m6g
*
* m6g
instances are AWS Graviton2-based (ARM).
Instance sizes from large
to 8xlarge
are typical.
Storage Classes
gp2
gp2-encrypted
gp3
*gp3-encrypted
*
* gp3
storage classes require Amazon EBS CSI driver that does not come pre-installed.
Example manifests:
kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
name: gp2
provisioner: kubernetes.io/aws-ebs
parameters:
fsType: ext4
type: gp2
reclaimPolicy: Delete
volumeBindingMode: WaitForFirstConsumer
allowVolumeExpansion: true
---
kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
name: gp2-encrypted
provisioner: kubernetes.io/aws-ebs
parameters:
encrypted: 'true'
fsType: ext4
type: gp2
reclaimPolicy: Delete
volumeBindingMode: WaitForFirstConsumer
allowVolumeExpansion: true
---
kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
name: gp3
provisioner: ebs.csi.aws.com
parameters:
fsType: ext4
type: gp3
reclaimPolicy: Delete
volumeBindingMode: WaitForFirstConsumer
allowVolumeExpansion: true
---
kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
name: gp3-encrypted
annotations:
storageclass.kubernetes.io/is-default-class: 'true'
provisioner: ebs.csi.aws.com
parameters:
encrypted: 'true'
fsType: ext4
type: gp3
reclaimPolicy: Delete
volumeBindingMode: WaitForFirstConsumer
allowVolumeExpansion: true
Notes:
- We do not recommend using gp2 storage classes. gp3 is better and less expensive
- gp3 default throughput is 125MB/s for any volume size. It can be increased in AWS console or using storage class parameters. Here is an example:
---
kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
name: gp3-encrypted-500
provisioner: ebs.csi.aws.com
parameters:
encrypted: 'true'
fsType: ext4
throughput: '500'
type: gp3
reclaimPolicy: Delete
volumeBindingMode: WaitForFirstConsumer
allowVolumeExpansion: true
Feedback
Was this page helpful?
Glad to hear it!
Sorry to hear that. We'll track this issue and see how we can improve.