Jak wizualizować zdarzenia klastra Kubernetes w czasie rzeczywistym



Ten wpis na blogu pomoże Ci dowiedzieć się, jak publikować dane zdarzeń klastra Kubernetes w Amazon Elastic Search przy użyciu agenta rejestrowania Fluentd.

W tym artykule dowiesz się, jak publikować dane zdarzeń klastra Kubernetes w Amazon używając agenta logowania Fluentd. Dane będą następnie przeglądane przy użyciu , narzędzie do wizualizacji typu open source dla Elasticsearch. Amazon ES składa się ze zintegrowanej integracji Kibana.

Przeprowadzimy Cię przez następujący proces:





Krok 1: Tworzenie klastra Kubernetes

Kubernetes to platforma open source stworzona przez Google do zarządzania aplikacjami w kontenerach. umożliwia zarządzanie, skalowanie i wdrażanie aplikacji kontenerowych w środowisku klastrowym. Możemy organizować nasze kontenery na różnych hostach za pomocą Gubernatorzy , skaluj w locie aplikacje kontenerowe przy użyciu wszystkich zasobów i korzystaj ze scentralizowanego środowiska zarządzania kontenerami.

Zaczniemy od utworzenia klastra Kubernetes i pokażę Ci krok po kroku, jak zainstalować i skonfigurować Kubernetes w CentOS 7.



jeden. Skonfiguruj hosty

    • vi / etc / hosts
    • wprowadź zmiany zgodnie z danymi twojego hosta w pliku hosts

IMG1 - Elasticsearch - Edureka

połączony program listy w c

2. Wyłącz SELinux, wykonując poniższe polecenia



    • setenforce 0
    • sed -i –follow-dowiązania symboliczne „s / SELINUX = egzekwowanie / SELINUX = wyłączone / g” / etc / sysconfig / selinux

3. Włącz moduł jądra br_netfilter

Do instalacji kubernetes wymagany jest moduł br_netfilter. Uruchom poniższe polecenie, aby włączyć moduł jądra br_netfilter.
    • modprobe br_netfilter
    • echo „1”> / proc / sys / net / bridge / bridge-nf-call-iptables

Cztery. Wyłącz SWAP, uruchamiając poniższe polecenia.

    • swapoff -a
    • Następnie edytuj / etc / fstab i skomentuj linię wymiany

5. Zainstaluj najnowszą wersję Docker CE.Zainstaluj zależności pakietów dla docker-ce, uruchamiając poniższe polecenia.

    • yum install -y yum-utils device-mapper-persistent-data lvm2
Dodaj repozytorium docker do systemu i zainstaluj docker-ce za pomocą polecenia yum.

6. Zainstaluj Kubernetes

Użyj następującego polecenia, aby dodać repozytorium kubernetes do systemu centos 7.
    • yum install -y kubelet bebeadm kubectl

[kubernetes] name = Kubernetes baseurl = https: //packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64 enabled = 1 gpgcheck = 1 repo_gpgcheck = 1 gpgkey = https: //packages.cloud.google. com / yum / doc / yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg EOF
Zainstaluj pakiety kubeadm, kubelet i kubectl, używając polecenia yum poniżej.
  • systemctl start docker && systemctl włącz docker

Po zakończeniu instalacji zrestartuj wszystkie te serwery.Po ponownym uruchomieniu uruchom docker usług i kubelet

  • systemctl start docker && systemctl włącz docker
  • systemctl uruchom kubelet && systemctl włącz kubelet
7. Inicjalizacja klastra Kubernetes Zaloguj się do serwera głównego i uruchom poniższe polecenie
  • systemctl uruchom kubelet && systemctl włącz kubelet
Po zakończeniu inicjalizacji Kubernetes otrzymasz wyniki.Skopiuj polecenia z uzyskanych wyników i wykonaj je, aby rozpocząć korzystanie z klastra. Zanotuj polecenie łączenia kubeadm z wyników. Polecenie zostanie użyte do zarejestrowania nowych węzłów w klastrze kubernetes. 8. Wdróż sieć flanelową w klastrze kubernetes kubectl zastosuj -f

https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

Sieć flanelowa została wdrożona w klastrze Kubernetes. Poczekaj chwilę, a następnie sprawdź węzeł kubernetes i pody za pomocą poniższych poleceń.
    • kubectl pobierz węzły
    • kubectl pobiera pod-wszystkie-przestrzenie nazw
Otrzymasz węzeł „k8s-master” działający jako klaster „master” ze statusem „ready”, a otrzymasz wszystkie pody potrzebne do klastra, w tym „kube-flannel-ds” dla poda sieciowego konfiguracja.

9. Dodawanie węzłów do klastraPołącz się z serwerem node01 i uruchom komendę kubeadm join

    • dołączenie kubeadm 172.31.7.47:6443 - token at03m9.iinkh5ps9q12sh2i –discovery-token-ca-cert-hash sha256: 3f6c1824796ef1ff3d9427c883bde915d5bc13331d74891d831f29a8c4a0

Połącz się z serwerem node02 i uruchom komendę kubeadm join

    • dołączenie kubeadm 172.31.7.47:6443 - token at03m9.iinkh5ps9q12sh2i –discovery-token-ca-cert-hash sha256: 3f6c1824796ef1ff3d9427c883bde915d5bc13331d74891d831f29a8c4a0

Poczekaj chwilę i sprawdź poprawność głównego serwera klastra „k8s-master”, sprawdź węzły i pody, używając następującego polecenia.

      • kubectl pobierz węzły

Teraz otrzymasz pracownik1, a pracownik2 został dodany do klastra ze statusem „gotowy”.

      • kubectl pobiera pod-wszystkie-przestrzenie nazw

Inicjalizacja i konfiguracja mastera klastra Kubernetes została zakończona.

Krok 2: Tworzenie klastra Amazon ES

Elasticsearch to mechanizm wyszukiwania i analizy typu open source, który służy do analizy dzienników i monitorowania aplikacji w czasie rzeczywistym. Amazon Elasticsearch Service (Amazon ES) to usługa AWS, która umożliwia wdrażanie, działanie i skalowanie Elasticsearch w chmurze AWS. Możesz użyć Amazon ES do analizy zdarzeń wysyłania e-maili z Twojego Amazon SES

Stworzymy klaster Amazon ES, a następnie wdrożymy agenta logowania Fluentd w klastrze Kubernetes, który będzie zbierał logi i wysyłał do klastra Amazon ES

W tej sekcji pokazano, jak używać konsoli Amazon ES do tworzenia klastra Amazon ES.

Aby utworzyć klaster Amazon ES

jednowymiarowa tablica w java
    1. Zaloguj się do konsoli zarządzania AWS i otwórz konsolę usługi Amazon Elasticsearch pod adresem https://console.aws.amazon.com/es/
    2. Wybierz Utwórz nową domenę i wybierz typ wdrożenia w konsoli Amazon ES.
    3. W obszarze Wersja pozostaw wartość domyślną pola Wersja Elasticsearch.
    4. Wybierz Dalej
    5. Wpisz nazwę swojej domeny wyszukiwania Elastic w skonfigurować klaster strona pod Skonfiguruj domenę.
    6. Na stronie Konfiguruj klaster wybierz następujące opcje w obszarze Wystąpienia danych
      • Typ instancji - Wybierz t2.micro.elasticsearch (kwalifikujący się poziom bezpłatny).
      • Liczba instancji - jeden
    7. PodDedykowane instancje główne
      • Włącz dedykowanego mastera - Nie włączaj tej opcji.
      • Włącz świadomość strefy - Nie włączaj tej opcji.
    8. W obszarze Konfiguracja pamięci wybierz następujące opcje.
      • Typ składowania - Wybierz EBS. W ustawieniach EBS wybierz typ wolumenu EBS General Purpose (SSD) i rozmiar woluminu EBS& Thinspz 10.
    9. Pod szyfrowaniem - Nie włączaj tej opcji
    10. W konfiguracji migawki
      • Automatyczna godzina rozpoczęcia migawki - Wybierz godzinę rozpoczęcia automatycznych migawek 00:00 UTC (domyślnie).
    11. Wybierz Dalej
    12. W sekcji Konfiguracja sieci wybierz Dostęp do VPC i wybierz szczegóły zgodnie z VPC pokazane poniżej.W obszarze uwierzytelniania Kibana: - Nie włączaj tej opcji.
    13. Aby ustawić zasady dostępu, wybierz Zezwalaj na otwarty dostęp do domeny.Uwaga: - W środowisku produkcyjnym należy ograniczyć dostęp do określonego adresu IP lub zakresów.
    14. Wybierz Dalej.
    15. Na stronie Recenzja przejrzyj swoje ustawienia, a następnie wybierz opcję Potwierdź i utwórz.

Uwaga: wdrożenie klastra zajmie do dziesięciu minut. Po kliknięciu utworzonej domeny wyszukiwania elastycznego zanotuj adres URL Kibana.

Krok 3: Wdróż agenta rejestrowania Fluentd w klastrze Kubernetes

Fluentd to narzędzie do zbierania danych typu open source, które pozwala ujednolicić gromadzenie i wykorzystanie danych w celu lepszego wykorzystania i zrozumienia danych. W takim przypadku wdrożymy logowanie Fluentd w klastrze Kubernetes, który będzie zbierał pliki dziennika i wysyłał je do Amazon Elastic Search.

Utworzymy ClusterRole, który zapewnia uprawnienia do podów i obiektów przestrzeni nazw do tworzenia, wyświetlania i obserwowania żądań do klastra.

Najpierw musimy skonfigurować uprawnienia RBAC (kontrola dostępu oparta na rolach), aby Fluentd miał dostęp do odpowiednich składników.

1. fluentd-rbac.yaml:

apiVersion: v1 kind: ServiceAccount metadata: name: fluentd namespace: kube-system --- apiVersion: rbac.authorization.k8s.io/v1beta1 rodzaj: ClusterRole metadata: name: fluentd namespace: kube-system rules: - apiGroups: - ' 'resources: - pods - namespaces verbs: - get - list - watch --- kind: ClusterRoleBinding apiVersion: rbac.authorization.k8s.io/v1beta1 metadata: name: fluentd roleRef: kind: ClusterRole name: fluentd apiGroup: rbac.authorization .k8s.io tematy: - rodzaj: ServiceAccount name: fluentd namespace: kube-system

Utwórz: $ kubectl create -f kubernetes / fluentd-rbac.yaml
Teraz możemy utworzyć zestaw DaemonSet.

2. fluentd-daemonset.yaml

apiVersion: rozszerzenia / v1beta1 rodzaj: DaemonSet metadane: nazwa: fluentd przestrzeń nazw: kube-system labels: k8s-app: fluentd-logging wersja: v1 kubernetes.io/cluster-service: „prawda” specyfikacja: szablon: metadane: etykiety: k8s -app: fluentd-logging wersja: v1 kubernetes.io/cluster-service: 'true' spec: serviceAccount: fluentd serviceAccountName: fluentd tolerations: - key: node-role.kubernetes.io/master effect: NoSchedule container: - name: Fluentd image: fluent / fluentd-kubernetes-daemonset: v1.3-debian-flexiblesearch env: - name: FLUENT_ELASTICSEARCH_HOST wartość: 'flexiblesearch.logging' - name: FLUENT_ELASTICSEARCH_PORT wartość: '9200' - nazwa: FLUENT_ELASTICSEARCH_HOST nazwa: FLUENT_UID wartość: '0' zasoby: limity: pamięć: 200Mi żądania: procesor: 100m pamięć: 200Mi volumeMounts: - name: varlog mountPath: / var / log - name: varlibdockercontainers mountPath: / var / lib / docker / container readOnly : true termininationGracePeriodSeconds: 30 woluminów: - nazwa: varlog ścieżka hosta: ścieżka: / var / log - nazwa: varlibdockercontainers hostPath: ścieżka: / var / lib / docker / container

Upewnij się, że zdefiniowałeś FLUENT_ELASTICSEARCH_HOST i FLUENT_ELASTICSEARCH_PORT zgodnie z Twoim elastycznym środowiskiem wyszukiwania

co to jest metoda tostingu w java

Rozmieścić:

$ kubectl create -f kubernetes / fluentd-daemonset.yaml

Sprawdź poprawność dzienników

$ kubectl loguje fluentd-lwbt6 -n kube-system | grep Connection

Powinieneś zobaczyć, że Fluentd łączy się z Elasticsearch w dziennikach:

Krok 4: Wizualizuj dane kubernetes w Kibanie

  1. Połącz się z adresem URL pulpitu nawigacyjnego Kibana, aby pobrać z konsoli Amazon ES
  2. Aby zobaczyć dzienniki zebrane przez Fluentd w Kibanie, kliknij „Zarządzanie”, a następnie wybierz „Wzorce indeksowania” pod „Kibana”
  3. wybierz domyślny wzorzec indeksu (logstash- *)
  4. Kliknij Następny krok i ustaw „Nazwa pola filtru czasu” (@timestamp) i wybierz opcję Utwórz wzorzec indeksu
  5. Kliknij opcję Odkryj, aby wyświetlić dzienniki aplikacji
  6. Kliknij Wizualizuj i wybierz opcję Utwórz wizualizację i wybierz Ciasto. Wypełnij poniższe pola, jak pokazano poniżej.
    • Wybierz indeks Logstash- * i kliknij podziel plasterki
    • Agregacja - znaczące terminy
    • Field = Kubernetes.pod_name.keyword
    • Rozmiar - 10

7. I Zastosuj zmiany

Otóż ​​to! W ten sposób możesz zwizualizować Kubernetes Pod utworzony w Kibanie.

Podsumowanie :

Monitorowanie za pomocą analizy dzienników jest krytycznym elementem każdego wdrożenia aplikacji. Możesz gromadzić i konsolidować dzienniki całego klastra w Kubernetes, aby monitorować cały klaster z jednego pulpitu nawigacyjnego. W naszym przykładzie widzieliśmy, jak płynnie działa jako mediator między klastrem kubernetes a Amazon ES. Fluentd łączy gromadzenie i agregację logów oraz wysyła logi do Amazon ES w celu analizy logów i wizualizacji danych za pomocą kibana.

Powyższy przykład pokazuje, jak dodać rejestrowanie wyszukiwania AWS Elastic i monitorowanie Kibana do klastra kubernetes przy użyciu Fluentd.

Jeśli uważasz, że ten blog Kubernetes jest odpowiedni, sprawdź autorstwa Edureka, zaufanej firmy zajmującej się edukacją online, z siecią ponad 250 000 zadowolonych uczniów rozsianych po całym świecie.

Masz do nas pytanie? Wspomnij o tym w sekcji komentarzy, a my skontaktujemy się z Tobą.