Bereitstellung von Elasticsearch auf GCP GKE Autopilot
Erfahren Sie, wie Sie einen Elasticsearch-Cluster auf der Google Cloud Platform mit GKE Autopilot und ECK für eine teilweise verwaltete Elasticsearch-Konfiguration bereitstellen können.
In diesem Artikel lernen wir, wie Elasticsearch mithilfe von Autopilot auf Google Cloud Kubernetes (GKE) bereitgestellt wird.
Für Elasticsearch werden wir Elastic Cloud on Kubernetes (ECK) verwenden, den offiziellen Elasticsearch Kubernetes-Operator, der die Orchestrierung von Kubernetes-Deployments aller Elastic Stack-Komponenten vereinfacht.
Um mehr darüber zu erfahren, wie man Elasticsearch-Cluster auf verschiedenen Google-Cloud-Platform-Infrastrukturen bereitstellt, können Sie unsere Einstiegsartikel für Google Cloud Compute und Google Cloud Marketplace lesen.
Aufwand für die Bereitstellung von Elasticsearch

Was ist GKE Autopilot?
Google Kubernetes Engine (GKE) Autopilot bietet ein vollständig verwaltetes Kubernetes-Erlebnis, bei dem Google die Clusterkonfiguration, das Node-Management, die Security und das Skalieren übernimmt, während Entwickler sich auf die Bereitstellung von Anwendungen konzentrieren, sodass Teams mit integrierten Best Practices in wenigen Minuten vom Code zur Produktion gelangen können.

Quelle: https://cloud.google.com/blog/products/containers-kubernetes/introducing-gke-autopilot
Wann sollte man ECK in Google Cloud nutzen?
Elastic Cloud on Kubernetes (ECK) eignet sich besonders für Unternehmen mit einer bestehenden Kubernetes-Infrastruktur, die Elasticsearch mit erweiterten Funktionen wie dedizierten Knotenrollen, hoher Verfügbarkeit und Automatisierung bereitstellen möchten.
Wie richtet man ECK in Google Cloud ein?
1. Melden Sie sich in der Google Cloud Console an.
2. Klicken Sie oben rechts auf die Cloud-Shell-Taste, um auf die Konsole zuzugreifen, und stellen Sie von dort aus den GKE-Cluster bereit. Alternativ können Sie auch gcloud CLI verwenden.
Denken Sie daran, die Projekt-ID während des Tutorials durch Ihre eigene zu ersetzen.

3. Aktivieren Sie die Google Kubernetes Engine API.

Klicken Sie auf Next (Weiter).
Nun sollte die Kubernetes Engine API als aktiviert angezeigt werden, wenn nach der Kubernetes Engine API gesucht wird.

4. In der Cloud Shell einen Autopilot-Cluster erstellen. Wir werden es „autopilot-cluster-1“ benennen und außerdem „autopilot-test“ durch die ID Ihres Projekts ersetzen.
gcloud beta container --project "autopilot-test-457216" clusters create-auto "autopilot-cluster-1" --region "us-central1" --release-channel "regular" --tier "standard" --enable-ip-access --no-enable-google-cloud-access --network "projects/autopilot-test-457216/global/networks/default" --subnetwork "projects/autopilot-test-457216/regions/us-central1/subnetworks/default" --cluster-ipv4-cidr "/17" --binauthz-evaluation-mode=DISABLED5. Warten Sie, bis es bereit ist. Die Erstellung dauert etwa 10 Minuten.

Nach der korrekten Einrichtung des Clusters wird eine Bestätigungsmeldung angezeigt.
6. Konfigurieren Sie den Zugriff auf die „kubectl“-Befehlszeile.
gcloud container clusters get-credentials autopilot-cluster-1 --region us-central1 --project autopilot-test-457216Sie sollten sehen:

Für autopilot-cluster-1 wurde ein „kubeconfig“-Eintrag generiert.
7. Installieren Sie den Elastic Cloud on Kubernetes (ECK)-Operator.
# Install ECK Custom Resource Definitions
kubectl create -f https://download.elastic.co/downloads/eck/2.16.1/crds.yaml
# Install the ECK operator
kubectl apply -f https://download.elastic.co/downloads/eck/2.16.1/operator.yaml8. Lassen Sie uns eine Elasticsearch-Instanz mit einem einzelnen Knoten und den Standardwerten erstellen.
Wenn Sie einige Rezepte für verschiedene Setups prüfen möchten, können Sie diesen Link besuchen.
Bitte beachten Sie, dass ECK, wenn Sie kein storageClass angeben, den standardmäßig festgelegten Wert verwendet, der für GKE standard-rwo ist und den Compute Engine Persistent Disk CSI Driver nutzt, und damit ein 1-GB-Volume erstellt.
cat <<EOF | kubectl apply -f -
apiVersion: elasticsearch.k8s.elastic.co/v1
kind: Elasticsearch
metadata:
name: quickstart
spec:
version: 9.0.0
nodeSets:
- name: default
count: 1
config:
node.store.allow_mmap: false
EOFWir haben nmap deaktiviert, da die Standard-GKE-Maschine einen zu niedrigen Wert für vm.max_map_count hat. Für den Produktivbetrieb wird von einer Deaktivierung abgeraten; stattdessen sollte der Wert von vm.max_map_count erhöht werden. Mehr darüber, wie Sie das machen, können Sie hier lesen.
9. Lassen Sie uns außerdem einen Kibana-Cluster mit einem einzelnen Knoten bereitstellen. Für Kibana fügen wir einen LoadBalancer hinzu, der uns eine externe IP-Adresse bereitstellt, über die wir Kibana von unserem Gerät aus erreichen können.
cat <<EOF | kubectl apply -f -
apiVersion: kibana.k8s.elastic.co/v1
kind: Kibana
metadata:
name: quickstart
spec:
version: 9.0.0
http:
service:
metadata:
annotations:
cloud.google.com/l4-rbs: "enabled"
spec:
type: LoadBalancer
count: 1
elasticsearchRef:
name: quickstart
EOFBeachten Sie die Anmerkung:
cloud.google.com/l4-rbs: "enabled"
Das ist sehr wichtig, weil es Autopilot anweist, einen öffentlich zugänglichen LoadBalancer bereitzustellen. Falls nicht festgelegt, wird der LoadBalancer intern verwendet.
10. Prüfen Sie, ob Ihre Pods laufen
kubectl get pods
11. Sie können auch run kubectl get elasticsearch und kubectl get kibana für spezifischere Statistiken wie Elasticsearch-Version, Nodes und Health verwenden.


12. Greifen Sie auf Ihre Dienste zu.
kubectl get svc
Hier wird Ihnen die externe URL für Kibana unter EXTERNAL-IP angezeigt. Es kann einige Minuten dauern, bis der LoadBalancer bereitgestellt wird. Kopieren Sie den Wert von EXTERNAL-IP.
13. Ermitteln Sie das Elasticsearch-Passwort für den Nutzer „elastic“:
kubectl get secret quickstart-es-elastic-user -o=jsonpath='{.data.elastic}' | base64 --decode
14. Greifen Sie über Ihren Browser auf Kibana zu:
URL: https://<EXTERNAL_IP>:5601
Benutzername:elastic
Passwort: 28Pao50lr2GpyguX470L2uj5 (aus dem vorherigen Schritt)

15. Wenn Sie von Ihrem Browser aus zugreifen, wird der Willkommensbildschirm angezeigt.

Wenn Sie die Spezifikationen des Elasticsearch-Clusters ändern möchten, z. B. Knoten ändern oder die Größe anpassen, können Sie das yml-Manifest mit den neuen Einstellungen erneut anwenden:
cat <<EOF | kubectl apply -f -
apiVersion: elasticsearch.k8s.elastic.co/v1
kind: Elasticsearch
metadata:
name: quickstart
spec:
version: 9.0.0
nodeSets:
- name: default
count: 2
config:
node.store.allow_mmap: false
podTemplate:
spec:
containers:
- name: elasticsearch
resources:
requests:
memory: 1.5Gi
cpu: 2
limits:
memory: 1.5Gi
cpu: 2
EOFIn diesem Beispiel fügen wir einen weiteren Node hinzu und ändern RAM sowie CPU. Wie Sie sehen, zeigt kubectl get elasticsearch jetzt 2 Knoten:

Das Gleiche gilt für Kibana:
cat <<EOF | kubectl apply -f -
apiVersion: kibana.k8s.elastic.co/v1
kind: Kibana
metadata:
name: quickstart
spec:
version: 9.0.0
http:
service:
metadata:
annotations:
cloud.google.com/l4-rbs: "enabled"
spec:
type: LoadBalancer
count: 1
elasticsearchRef:
name: quickstart
podTemplate:
spec:
containers:
- name: kibana
env:
- name: NODE_OPTIONS
value: "--max-old-space-size=1024"
resources:
requests:
memory: 0.5Gi
cpu: 0.5
limits:
memory: 1Gi
cpu: 1
EOFWir können die CPU/RAM des Containers sowie die Speichernutzung von Node.js (max-old-space-size) anpassen.
Denken Sie daran, dass bestehende Volumenbehauptungen nicht verkleinert werden können. Nach der Installation des Updates wird der Betreiber die Änderungen mit minimaler Ausfallzeit vornehmen.
Denken Sie daran, den Cluster nach dem Testen zu löschen, um unnötige Kosten zu vermeiden.
gcloud container clusters delete autopilot-cluster-1Wie geht es weiter?
Wenn Sie mehr über Kubernetes und die Google Kubernetes Engine erfahren möchten, lesen Sie diese Artikel:




