Korzystanie z operatora BeeInstana Kubernetes
BeeInstana to baza danych metryk do wykonywania bardziej złożonych zapytań metryk. Niektóre funkcje w ramach Instana są zależne od BeeInstana do przechowywania danych metrycznych.
Samoobsługowe środowiska Instana w systemie Kubernetes można skonfigurować do korzystania z usługi BeeInstana w systemie Kubernetes zgodnie z opisem w sekcji Uruchamianie i konfigurowanie usługi BeeInstana za pośrednictwem operatora .
- Wymagania wstępne
- Architektura
- Określanie wielkości usługi BeeInstana na platformie Kubernetes
- Wdrażanie operatora BeeInstana Kubernetes
- Aktualizowanie operatora BeeInstana Kubernetes
- Wdrażanie instancji BeeInstana w systemie Kubernetes
- BeeInstana -opcje konfiguracyjne
- Określanie identyfikatora grupy systemu plików w systemie Red Hat OpenShift
- Usuwanie instancji BeeInstana i operatora BeeInstana Kubernetes
Wymagania wstępne
Przed wdrożeniem BeeInstananależy skonfigurować składnice danych jako klaster o wysokiej wydajności i rozproszonej składnicy danych. Więcej informacji na ten temat zawiera sekcja Używanie operatorów Kubernetes innych firm.
Architektura
BeeInstana składa się z czterech komponentów:
- Operator Kubernetes : Operator Kubernetes obsługuje wdrażanie, aktualizowanie i zmianę wielkości instancji BeeInstana zgodnie z konfiguracją.
- Usługa konfiguracji: usługa konfiguracji udostępnia informacje o klastrze agregatorom i ingestorom.
- Ingestor: program ingestor używa danych pomiaru z tematu Kafka , przetwarza je i wysyła do odpowiedniego agregatora.
- Agregator: agregator zapisuje dane wielkości mierzonej na dysku i przetwarza zapytania wykonywane dla zapisanych danych.
Określanie wielkości BeeInstana w systemie Kubernetes
Ilość zasobów wymaganych dla instancji BeeInstana jest określana na podstawie liczby wielkości mierzonych, które muszą być zapisane. Jeśli ta liczba nie jest znana z góry, można ją obliczyć, korzystając z następującej metody, aby uzyskać wstępne przybliżone oszacowanie:
number_of_metrics = number_of_hosts * 100 * 50
Aby zapisać 2 miliony wielkości mierzonych z jednym agregatorem i jednym programem ingestor, należy rozpocząć od następujących zasobów:
| Komponent | Procesor | Pamięć RAM | Wielkość woluminu |
|---|---|---|---|
| Ingestor | 16 rdzeni | 12 GiB | Brak |
| Agregator | 16 rdzeni | 128 GiB | 5 TiB |
Minimalna konfiguracja zawiera następujące zasoby, które mogą przechowywać 250 000 wielkości mierzonych z jednym agregatorem i jednym ingestorem:
| Komponent | Procesor | Pamięć RAM | Wielkość woluminu |
|---|---|---|---|
| Ingestor | 4 rdzenie | 3 GiB | Brak |
| Agregator | 4 rdzenie | 16 GiB | 1 TiB |
Można zmodyfikować te zasoby, aby dostosować je do środowiska, gdy instancja BeeInstana jest uruchomiona.
W przypadku programu ingestor najlepiej jest przydzielić dwa razy więcej średniego procesora, który jest używany do uwzględniania skoków w przychodzących wielkościach mierzonych. Użycie pamięci jest zwykle spójne, ale w przypadku aktualizowania agregatora wymagana jest dodatkowa pamięć, aby dane były przechowywane w pamięci.
Ingestorów można skalować poziomo. W razie potrzeby można dodawać lub usuwać repliki.
Dla agregatora najlepiej jest przydzielić dwa razy więcej średniego procesora, który jest używany do obsługi żądań sterowanych przez użytkownika. Agregator w znacznym stopniu wykorzystuje pamięć podręczną systemu plików i ostatecznie wykorzystuje całą udostępnioną pamięć. Sprawdź łączną wielkość zestawu rezydentnego pamięci, aby określić pamięć wymaganą przez agregator. Ilość pamięci musi być dwukrotnie większa od wielkości zestawu rezydentnego, w przeciwnym razie wpływa to na wydajność i stabilność zapytania.
Zasobniki agregatora są zorganizowane w postaci części. Każdy zasobnik agregatora w obrębie partycji cząstkowej jest nazywany kopią lustrzaną i przechowuje własną kopię danych w partycji cząstkowej.
Agregatory można skalować poziomo, zwiększając liczbę partycji cząstkowych. Liczba partycji cząstkowych może być zwiększona, ale nigdy nie zmniejszona. Agregator nie obsługuje zmniejszania liczby partycji cząstkowych.
Liczba kopii lustrzanych w części agregatora wpływa na dostępność BeeInstana. Ustaw liczbę kopii lustrzanych na 2. W ten sposób klaster nie ma problemów z utratą danych lub dostępnością, gdy jednocześnie jest wyłączona jedna kopia lustrzana agregatora.
Uwaga: Jeśli liczba wielkości mierzonych pozostanie stała, wielkość woluminu agregatora będzie stała po 13 miesiącach.
Wdrażanie operatora BeeInstana Kubernetes
Operator BeeInstana Kubernetes jest udostępniany jako wykres Helm .
Aby uzyskać wykres Helm i wdrożyć operator BeeInstana Kubernetes , wykonaj następujące kroki:
Na komputerze hosta, który jest używany do uzyskania dostępu do klastra Kubernetes , dodaj repozytorium Instana Helm za pomocą następującej komendy. Użyj klucza agenta Instana , który został podany jako
agent_keyw komendzie:helm repo add instana https://helm.instana.io/artifactory/rel-helm-customer-virtual --username _ --password <agent_key>W klastrze Kubernetes utwórz przestrzeń nazw, aby wdrożyć instancję BeeInstana , używając następującej komendy:
kubectl create namespace beeinstanaUtwórz klucz tajny pobierania obrazu w utworzonej przestrzeni nazw za pomocą następującej komendy i zastąp
agent_keyw komendzie kluczem agenta Instana , który został udostępniony:kubectl create secret docker-registry instana-registry --namespace=beeinstana --docker-server=artifact-public.instana.io --docker-username _ --docker-password=<agent_key>Sprawdź zasoby Kubernetes przed ich wdrożeniem za pomocą następującej komendy:
helm template instana/beeinstana-operator --name-template=beeinstana --namespace=beeinstanaWykonaj jeden z następujących kroków:
W przypadku standardowego klastra Kubernetes lub klastra w systemie Red Hat OpenShift 4.10wdróż operator BeeInstana Kubernetes w utworzonej przestrzeni nazw za pomocą następującej komendy:
helm install beeinstana instana/beeinstana-operator --namespace=beeinstanaW przypadku klastra w systemie Red Hat OpenShift 4.11 lub nowszym należy wdrożyć operator BeeInstana Kubernetes w utworzonej przestrzeni nazw za pomocą następującej komendy:
helm install beeinstana instana/beeinstana-operator --namespace=beeinstana --set operator.securityContext.seccompProfile.type=RuntimeDefault
Pobierz zasobniki w utworzonej przestrzeni nazw za pomocą następującej komendy:
kubectl get pod --namespace=beeinstanaSprawdź, czy istnieje i działa jeden zasobnik operatora BeeInstana Kubernetes . Patrz następujący przykład:
beeinstana-beeinstana-operator-569999cbfc-5ftf8 1/1 Running 0 1m
Aktualizowanie operatora BeeInstana Kubernetes
Aby zaktualizować operator BeeInstana Kubernetes po jego zainstalowaniu zgodnie z opisem w sekcji Wdrażanie operatora BeeInstana Kubernetes , wykonaj następujące kroki:
Pobierz aktualizacje z repozytorium Instana Helm , które zostało dodane w kroku 1 sekcji Wdrażanie operatora BeeInstana Kubernetes , za pomocą następującej komendy:
helm repo update instanaWykonaj jeden z następujących kroków:
W przypadku standardowego klastra Kubernetes lub klastra w systemie Red Hat OpenShift 4.10zaktualizuj operator BeeInstana Kubernetes za pomocą następującej komendy:
helm upgrade beeinstana instana/beeinstana-operator --namespace=beeinstanaW przypadku klastra w systemie Red Hat OpenShift 4.11 lub nowszym zaktualizuj operator BeeInstana Kubernetes za pomocą następującej komendy:
helm upgrade beeinstana instana/beeinstana-operator --namespace=beeinstana --set operator.securityContext.seccompProfile.type=RuntimeDefault
Pobierz zasobniki w przestrzeni nazw, w której wdrożono komponent BeeInstana , za pomocą następującej komendy:
kubectl get pod --namespace=beeinstanaSprawdź, czy istnieje i działa jeden zasobnik operatora BeeInstana Kubernetes . Patrz następujący przykład:
beeinstana-beeinstana-operator-569999cbfc-5ftf8 1/1 Running 0 1m
Uwaga: Aktualizacja operatora BeeInstana Kubernetes nie powoduje zmiany wdrożonej wersji BeeInstana . Wdrożona wersja BeeInstana jest konfigurowana przez ustawienie spec.version zgodnie z opisem w sekcji BeeInstana .
Wdrażanie instancji BeeInstana w systemie Kubernetes
Po wdrożeniu operatora BeeInstana Kubernetes można wdrożyć instancję BeeInstana w systemie Kubernetes. Utwórz plik, w którym będzie przechowywana konfiguracja usługi BeeInstana. Zapisz ten plik konfiguracyjny i użyj go do zaktualizowania instancji BeeInstana w przyszłości.
Można rozpocząć od następującej konfiguracji BeeInstana :
apiVersion: beeinstana.instana.com/v1beta1
kind: BeeInstana
metadata:
name: instance
namespace: beeinstana
spec:
version: 1.1.5
adminCredentials:
secretName: beeinstana-admin-creds
kafkaSettings:
brokers:
# Update KAFKA_NAMESPACE to the namespace where Kafka is installed
- instana-kafka-bootstrap.<KAFKA_NAMESPACE>:9092
securityProtocol: SASL_PLAINTEXT
saslMechanism: SCRAM-SHA-512
saslPasswordCredential:
secretName: beeinstana-kafka-creds
config:
cpu: 200m
memory: 200Mi
replicas: 1
ingestor:
cpu: 8
memory: 4Gi
limitMemory: true
env: on-prem
metricsTopic: raw_metrics
replicas: 1
aggregator:
cpu: 4
memory: 16Gi
limitMemory: true
mirrors: 2
shards: 1
volumes:
live:
size: 2000Gi
# Uncomment the line below to specify your own storage class.
storageClass: <REPLACE>
W razie potrzeby zmień konfigurację. Więcej informacji na ten temat zawiera sekcja Opcje konfiguracyjneBeeInstana .
Uwaga: W przypadku korzystania z systemu Red Hat Openshift w wersji 4.11 i nowszych należy dodać następującą konfigurację do specyfikacji BeeInstana , aby uruchomić zasobniki aggregator :
spec:
fsGroup: <GROUP_ID>
seccompProfile:
type: RuntimeDefault
Identyfikator grupy systemu plików musi być ustawiony zgodnie z opisem w sekcji Określanie identyfikatora grupy systemu plików w systemie Red Hat OpenShift .
Aby łatwo uzyskać identyfikator grupy, uruchom następującą komendę:
oc get namespace beeinstana -o jsonpath='{.metadata.annotations.openshift\.io\/sa\.scc\.uid-range}' | cut -d/ -f 1
Aby wdrożyć instancję BeeInstana z utworzonym plikiem konfiguracyjnym, wykonaj następujące kroki:
Wygeneruj losowe hasło dla klucza tajnego referencji administratora BeeInstana za pomocą następującej komendy:
PASSWORD=$(base64 < /dev/urandom | head -c32); echo "Password: $PASSWORD";Hasło to należy bezpiecznie przechowywać w pliku
config.yamlw następujący sposób:datastoreConfigs: ... beeInstanaConfig: user: beeinstana-user password: <USER_GENERATED_PASSWORD> ...Utwórz klucz tajny, który zawiera nazwę użytkownika i hasło na potrzeby nawiązywania połączenia z produktem Kafka , uruchamiając następującą komendę:
kubectl create secret generic beeinstana-kafka-creds -n beeinstana \ --from-literal=username=strimzi-kafka-user \ --from-literal=password=<RETRIEVED_PASSWORD>Uwaga: Zastąp < RETRIEVED_PASSWORD> hasłem uzyskanym podczas wdrażania systemu Kafka w klastrze. Więcej informacji na ten temat zawiera sekcja Tworzenie użytkownika SASL/SCRAM w systemie Kafka.
Utwórz klucz tajny, który zawiera nazwę użytkownika i hasło na potrzeby nawiązywania połączenia z serwisem BeeInstana , uruchamiając następującą komendę:
kubectl create secret generic beeinstana-admin-creds -n beeinstana \ --from-literal=username=beeinstana-user \ --from-literal=password=<USER_GENERATED_PASSWORD>Zastosuj konfigurację do tej samej przestrzeni nazw, w której wdrożono operator BeeInstana Kubernetes , uruchamiając następującą komendę. Zastąp
</path/to/configuration/file.yaml>ścieżką do pliku konfiguracyjnego utworzonego na początku tej sekcji.kubectl apply -f </path/to/configuration/file.yaml> --namespace beeinstanaPoczekaj, aż operator BeeInstana Kubernetes wdroży usługę BeeInstana. Aby sprawdzić poprawność instalacji, pobierz status zasobnika w tej samej przestrzeni nazw, uruchamiając następującą komendę:
kubectl get pods --namespace beeinstanaSprawdź, czy zasobniki dla wszystkich komponentów są uruchomione. Patrz następujący przykład:
NAME READY STATUS RESTARTS AGE aggregator-0-0 1/1 Running 0 2m aggregator-0-1 1/1 Running 0 75s beeinstana-beeinstana-operator-79c8fd74c8-vchh6 1/1 Running 0 169m config-546999994-rfvnc 1/1 Running 0 31m ingestor-9c569cbf9-ncrzs 1/1 Running 0 39sSprawdź wdrożenie, uruchamiając następującą komendę:
kubectl get beeinstana instance --namespace beeinstana -o yamlJeśli status wdrożenia to powodzenie, właściwość
status.reconciledAtjest najnowszym datownikiem w ciągu ostatniej minuty, właściwośćstatus.versionjest wersją skonfigurowaną, a właściwośćstatus.canBeReconciledma wartośćtrue. Patrz następujący przykład:... status: ... canBeReconciled: true reconciledAt: "2023-03-30T22:47:08Z" version: 1.1.5
Następnie należy skonfigurować usługę Instana do korzystania z wdrożonej instancji BeeInstana . Więcej informacji na ten temat zawiera sekcja Uruchamianie i konfigurowanie usługi BeeInstana za pośrednictwem operatora .
Uwaga: Aby zmienić istniejącą instancję BeeInstana , zmodyfikuj plik konfiguracyjny, który został zapisany na początku tej sekcji, a następnie powtórz kroki od 2 do 4.
Opcje konfiguracyjne BeeInstana
Można dostosować wartości następujących kluczy w pliku konfiguracyjnym, który jest używany do wdrażania instancji BeeInstana w systemie Kubernetes:
Uwaga: Wiele z następujących kluczy jest związanych z wymiarowaniem. Więcej informacji na temat określania odpowiedniej wartości klucza zawiera sekcja Określanie wielkości .
| Klucz | Typ wartości | Opis |
|---|---|---|
spec.version |
łańcuch | Określa wersję instancji BeeInstana , która ma zostać wdrożona. |
spec.fsGroup |
liczba całkowita | Określa zestaw grup systemu plików dla woluminów trwałych. W systemie Red Hat OpenShiftwartość ta musi być ustawiona zgodnie z opisem w sekcji Określanie identyfikatora grupy systemu plików w systemie Red Hat OpenShift . W przeciwnym razie należy pozostawić nieustawioną wartość. |
spec.seccompProfile.type |
łańcuch | Określa używany typ profilu seccomp. W systemie Red Hat OpenShift 4.11 i nowszych należy ustawić wartość RuntimeDefault. W systemie Red Hat OpenShift 4.10 i wersjach wcześniejszych należy pozostawić tę wartość nieustawioną. |
spec.adminCredentials.secretName |
łańcuch | Nazwa klucza tajnego Kubernetes , który zawiera pola danych username i password używane do łączenia się z serwerem BeeInstana. |
spec.kafkaSettings.brokers |
lista łańcuchów | Lista adresów sieciowych brokera Kafka . |
spec.kafkaSettings.securityProtocol |
łańcuch | Określa protokół zabezpieczeń używany do nawiązywania połączenia z systemem Kafka. Jeśli ta wartość nie zostanie podana, nie będzie używany żaden protokół zabezpieczeń. |
spec.kafkaSettings.saslMechanism |
łańcuch | Określa mechanizm SASL używany po podaniu wartości spec.kafkaSettings.securityProtocol . |
spec.kafkaSettings.saslUsername |
łańcuch | Określa nazwę użytkownika używaną do łączenia się z Kafka , gdy podana jest wartość spec.kafkaSettings.securityProtocol . |
spec.kafkaSettings.saslPasswordCredential.secretName |
łańcuch | Nazwa klucza tajnego Kubernetes , który zawiera pole danych password używane do nawiązywania połączenia z serwerem Kafka po podaniu wartości spec.kafkaSettings.securityProtocol . |
spec.aggregator.cpu |
łańcuch | Określa procesor żądany przez zasobniki agregatora. |
spec.aggregator.memory |
łańcuch | Określa pamięć, która jest żądana przez zasobniki agregatora. |
spec.aggregator.limitMemory |
wartość boolowska | Ogranicza ilość pamięci, która może być używana przez zasobnik agregatora. Ustaw tę wartość na true , jeśli zasobnik agregatora jest uruchomiony w węźle współużytkowanym. |
spec.aggregator.mirrors |
liczba całkowita | Określa ilość replikacji i dostępności danych. Jeśli ta wartość jest ustawiona na 2 i jeden zasobnik agregatora zostanie wyłączony, komponent BeeInstana może go tolerować bez wpływu na dostępność. |
spec.aggregator.shards |
liczba całkowita | Określa liczbę części w klastrze i jest używana do poziomego skalowania agregatora. Nie można zmniejszyć wartości tego klucza. |
spec.aggregator.volumes.live.size |
łańcuch | Określa początkową wielkość roszczenia woluminu trwałego podczas tworzenia zasobników agregatora. Aby zwiększyć wielkość roszczenia woluminu trwałego po utworzeniu, należy bezpośrednio zmodyfikować roszczenie. |
spec.aggregator.volumes.live.storageClass |
łańcuch | Określa klasę pamięci masowej dla roszczenia woluminu trwałego. |
spec.ingestor.brokerList |
łańcuch | Rozdzielana przecinkami lista adresów sieciowych brokera Kafka . Ten klucz jest nieaktualny i został zastąpiony przez spec.kafkaSettings.brokers |
spec.ingestor.cpu |
łańcuch | Określa procesor żądany przez zasobniki ingestor. |
spec.ingestor.memory |
łańcuch | Określa pamięć, która jest żądana przez zasobniki ingestor. |
spec.ingestor.limitMemory |
wartość boolowska | Ogranicza pamięć, której może używać zasobnik programu ingestor. Dla tej opcji należy ustawić wartość true , jeśli zasobnik ingestor jest uruchomiony na węźle współużytkowanym. |
spec.ingestor.replicas |
liczba całkowita | Służy do poziomego skalowania ingestora. Wartość tego klucza można w razie potrzeby zwiększyć lub zmniejszyć. |
spec.ingestor.env |
łańcuch | Używana jako część nazwy konsumenta Kafka w celu zapewnienia unikalności. |
spec.ingestor.metricsTopic |
łańcuch | Określa nazwę tematu Kafka , z którego korzystają zasobniki ingestor. |
spec.config.cpu |
liczba całkowita | Określa procesor żądany przez zasobniki usługi konfiguracji. |
spec.config.memory |
łańcuch | Określa pamięć, która jest żądana przez zasobniki usługi konfiguracji. |
spec.config.replicas |
liczba całkowita | Steruje dostępnością zasobników usługi konfiguracji. |
Określanie identyfikatora grupy systemu plików w systemie Red Hat OpenShift
Red Hat OpenShift wymaga, aby grupy systemów plików były w zakresie wartości specyficznych dla przestrzeni nazw. W klastrze, w którym wdrożono operator BeeInstana Kubernetes , uruchom następującą komendę:
kubectl get namespace beeinstana -o yaml
Dla komendy wyświetlane są dane wyjściowe podobne do poniższych:
apiVersion: v1
kind: Namespace
metadata:
annotations:
...
openshift.io/sa.scc.supplemental-groups: 1000000000/10000
name: beeinstana
Adnotacja openshift.io/sa.scc.supplemental-groups zawiera zakres dozwolonych identyfikatorów. Zakres 1000000000/10000 oznacza 10000 wartości rozpoczynających się od identyfikatora 1000000000, dlatego określa zakres identyfikatorów od 1000000000 do 1000009999. W tym przykładzie jako identyfikator grupy systemu plików można użyć wartości 1000000000.
Usuwanie instancji BeeInstana i operatora BeeInstana Kubernetes
Aby usunąć instancję BeeInstana z systemu Kubernetes, wykonaj następujące kroki:
Usuń instancję Beeinstana, uruchamiając następującą komendę. Zastąp
</path/to/configuration/file.yaml>ścieżką do pliku konfiguracyjnego utworzonego podczas wdrażania instancji BeeInstana w systemie Kubernetes.kubectl delete -f </path/to/configuration/file.yaml> --namespace beeinstanaAby potwierdzić pomyślne usunięcie instancji BeeInstana , wykonaj następujące kroki:
Pobierz zasobniki Kubernetes , uruchamiając następującą komendę:
kubectl get pods --namespace beeinstanaUpewnij się, że pozostaje tylko zasobnik operatora BeeInstana , jak pokazano w poniższym przykładzie:
NAME READY STATUS RESTARTS AGE beeinstana-beeinstana-operator-79c8fd74c8-vchh6 1/1 Running 0 169m
Usuń roszczenia woluminu trwałego, wykonując następujące kroki:
Pobierz roszczenia woluminu trwałego, uruchamiając następującą komendę:
kubectl get pvc --namespace beeinstanaW poniższym przykładzie przedstawiono odczytane roszczenia woluminu trwałego:
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE live-volumeclaim-template-aggregator-0-0 Bound pvc-156e2acd-0676-4d6d-9631-0621dbb2c3e9 10Gi RWO standard 3m44s live-volumeclaim-template-aggregator-0-1 Bound pvc-beb9ebb2-2137-4222-8643-e7878f5fb2fc 10Gi RWO standard 2m35sUsuń każde zajęcie woluminu trwałego agregatora, uruchamiając następującą komendę. Zastąp
<NAME>nazwą roszczenia woluminu trwałego.kubectl delete pvc --namespace beeinstana <NAME>
Usuń wygenerowaną komendę configmap klastra, uruchamiając następującą komendę:
kubectl delete configmap cluster-42.json --namespace beeinstanaUsuń utworzone klucze tajne, uruchamiając następującą komendę:
kubectl delete secret --namespace beeinstana beeinstana-kafka-creds beeinstana-admin-creds
Aby usunąć operator BeeInstana z systemu Kubernetes, wykonaj następujące kroki:
Zdeinstaluj wykres Helm programu BeeInstana Kubernetes , uruchamiając następującą komendę:
helm uninstall beeinstana --namespace beeinstanaAby potwierdzić pomyślne usunięcie operatora, wykonaj następujące kroki:
Pobierz zasobniki Kubernetes , uruchamiając następującą komendę:
kubectl get pods --namespace beeinstanaUpewnij się, że nie ma żadnych zasobników na liście.
Aby usunąć przestrzeń nazw, w której wdrożono operator i instancję BeeInstana Kubernetes , uruchom następującą komendę:
kubectl delete namespace beeinstana