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

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:

  1. 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_key w komendzie:

    helm repo add instana https://helm.instana.io/artifactory/rel-helm-customer-virtual --username _ --password <agent_key>
    
  2. W klastrze Kubernetes utwórz przestrzeń nazw, aby wdrożyć instancję BeeInstana , używając następującej komendy:

    kubectl create namespace beeinstana
    
  3. Utwórz klucz tajny pobierania obrazu w utworzonej przestrzeni nazw za pomocą następującej komendy i zastąp agent_key w 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>
    
  4. Sprawdź zasoby Kubernetes przed ich wdrożeniem za pomocą następującej komendy:

    helm template instana/beeinstana-operator --name-template=beeinstana --namespace=beeinstana
    
  5. Wykonaj 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=beeinstana
      
    • W 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
      
  6. Pobierz zasobniki w utworzonej przestrzeni nazw za pomocą następującej komendy:

    kubectl get pod --namespace=beeinstana
    
  7. Sprawdź, 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:

  1. 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 instana
    
  2. Wykonaj 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=beeinstana
      
    • W 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
      
  3. Pobierz zasobniki w przestrzeni nazw, w której wdrożono komponent BeeInstana , za pomocą następującej komendy:

    kubectl get pod --namespace=beeinstana
    
  4. Sprawdź, 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:

  1. 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";
    
  2. Hasło to należy bezpiecznie przechowywać w pliku config.yaml w następujący sposób:

     datastoreConfigs:
       ...
       beeInstanaConfig:
         user: beeinstana-user
         password: <USER_GENERATED_PASSWORD>
       ...
    
  3. 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.

  4. 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>
    
  5. 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 beeinstana
    
  6. Poczekaj, 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 beeinstana
    

    Sprawdź, 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          39s
    
  7. Sprawdź wdrożenie, uruchamiając następującą komendę:

    kubectl get beeinstana instance --namespace beeinstana -o yaml
    

    Jeśli status wdrożenia to powodzenie, właściwość status.reconciledAt jest najnowszym datownikiem w ciągu ostatniej minuty, właściwość status.version jest wersją skonfigurowaną, a właściwość status.canBeReconciled ma 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:

  1. 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 beeinstana
    
  2. Aby potwierdzić pomyślne usunięcie instancji BeeInstana , wykonaj następujące kroki:

    1. Pobierz zasobniki Kubernetes , uruchamiając następującą komendę:

      kubectl get pods --namespace beeinstana
      
    2. Upewnij 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
      
  3. Usuń roszczenia woluminu trwałego, wykonując następujące kroki:

    1. Pobierz roszczenia woluminu trwałego, uruchamiając następującą komendę:

      kubectl get pvc --namespace beeinstana
      

      W 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       2m35s
      
    2. Usuń 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>
      
  4. Usuń wygenerowaną komendę configmap klastra, uruchamiając następującą komendę:

    kubectl delete configmap cluster-42.json --namespace beeinstana
    
  5. Usuń 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:

  1. Zdeinstaluj wykres Helm programu BeeInstana Kubernetes , uruchamiając następującą komendę:

    helm uninstall beeinstana --namespace beeinstana
    
  2. Aby potwierdzić pomyślne usunięcie operatora, wykonaj następujące kroki:

    1. Pobierz zasobniki Kubernetes , uruchamiając następującą komendę:

      kubectl get pods --namespace beeinstana
      
    2. Upewnij 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