Vai al contenuto principale
Versione: 3.0.0-alpha (Diátaxis)

Come scalare verticalmente ClickHouse

Questa guida spiega come regolare le risorse CPU, memoria e archiviazione della vostra istanza ClickHouse su Hikube, sia tramite un preset predefinito, sia definendo valori espliciti.

Prerequisiti

  • Un'istanza ClickHouse distribuita su Hikube (vedere l'avvio rapido)
  • kubectl configurato per interagire con l'API Hikube
  • Il file YAML di configurazione della vostra istanza ClickHouse

Passaggi

1. Verificare le risorse attuali

Consultate la configurazione attuale della vostra istanza ClickHouse:

kubectl get clickhouse my-clickhouse -o yaml

Annotate i valori di resourcesPreset, resources, replicas, shards e size nella sezione spec.

2. Modificare il resourcesPreset o le risorse esplicite

Opzione A: Usare un preset

Ecco i preset disponibili:

PresetCPUMemoria
nano250m128Mi
micro500m256Mi
small1512Mi
medium11Gi
large22Gi
xlarge44Gi
2xlarge88Gi

Ad esempio, per passare da small (valore predefinito) a large:

clickhouse-large.yaml
apiVersion: apps.cozystack.io/v1alpha1
kind: ClickHouse
metadata:
name: my-clickhouse
spec:
replicas: 2
shards: 1
resourcesPreset: large
size: 20Gi
clickhouseKeeper:
enabled: true
replicas: 3
resourcesPreset: micro
size: 1Gi

Opzione B: Definire risorse esplicite

Per un controllo preciso, specificate direttamente CPU e memoria:

clickhouse-custom-resources.yaml
apiVersion: apps.cozystack.io/v1alpha1
kind: ClickHouse
metadata:
name: my-clickhouse
spec:
replicas: 2
shards: 1
resources:
cpu: 4000m
memory: 8Gi
size: 50Gi
clickhouseKeeper:
enabled: true
replicas: 3
resourcesPreset: small
size: 2Gi
avviso

Se il campo resources e definito, il valore di resourcesPreset viene completamente ignorato. Rimuovete resourcesPreset dal manifesto per evitare confusione.

3. Regolare l'archiviazione se necessario

ClickHouse archivia i dati su disco (a differenza di Redis). Pensate ad aumentare il volume persistente (size) in funzione del volume di dati previsto:

clickhouse-storage.yaml
apiVersion: apps.cozystack.io/v1alpha1
kind: ClickHouse
metadata:
name: my-clickhouse
spec:
replicas: 2
shards: 1
resourcesPreset: xlarge
size: 100Gi
storageClass: replicated
clickhouseKeeper:
enabled: true
replicas: 3
resourcesPreset: micro
size: 1Gi
suggerimento

Usate storageClass: replicated in produzione per proteggere i dati contro la perdita di un nodo fisico.

4. Applicare l'aggiornamento

kubectl apply -f clickhouse-large.yaml

Verifica

Verificate che le risorse siano state aggiornate:

# Verificare la configurazione della risorsa ClickHouse
kubectl get clickhouse my-clickhouse -o yaml | grep -A 5 resources

# Verificare lo stato dei pod ClickHouse
kubectl get pods -l app.kubernetes.io/instance=my-clickhouse

Risultato atteso:

NAME                READY   STATUS    RESTARTS   AGE
my-clickhouse-0-0 1/1 Running 0 3m
my-clickhouse-0-1 1/1 Running 0 3m

Per approfondire