Kubernetes requirements
Altinity.Cloud Anywhere operates inside your Kubernetes environment. The general requirements for your Kubernetes environment are:
- Every
Node
should have the following labels:node.kubernetes.io/instance-type
kubernetes.io/arch
topology.kubernetes.io/zone
- A
StorageClass
with dynamic provisioning is required LoadBalancer
services must be supported
To get the most from Altinity.Cloud Anywhere features:
- Each
StorageClass
should preferably allow volume expansion - Multiple zones are preferable for high availability
- Autoscaling is preferable for easier vertical scaling
For platform-specific requirements, see the following sections:
AWS requirements
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
and taint them 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 best in AWS when using nodes from these instance families:
m5
m6i
m6g
*
m6g
instances are AWS Graviton2-based (ARM).
Instance sizes from large
to 8xlarge
are typical.
Storage classes
gp2
*gp3-encrypted
*
We recommend using gp3
storage classes that provide more flexibility and performance over gp2
. The gp3
storage classes require the Amazon EBS CSI driver;
that driver is not automatically installed. See
the AWS CSI driver documentation
for details on how to install the driver.
Storage class can be installed with the following manifest:
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
The default throughput for gp3
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
Alternatively, you recommend installing the Altinity EBS parameters controller. That allows you to manage EBS volume throughput dynamically through annotations. This is also integrated to Altinity.Cloud UI (ACM).
GCP requirements
Machine types
For Zookeeper and infrastructure nodes
e2-standard-2
For ClickHouse nodes
It’s recommended to taint node pools with dedicated=clickhouse:NoSchedule
(in addition to altinity.cloud/use=anywhere:NoSchedule
).
n2d-standard-2
n2d-standard-4
n2d-standard-8
n2d-standard-16
n2d-standard-32
If GCP is out of n2d-standard-*
instances in the
region of your choice, we recommend
substituting them with n2-standard-*
.
Storage classes
standard-rwo
premium-rwo
GKE comes pre-configured with both.