Hur man visualiserar Kubernetes-klusterhändelser i realtid



Det här blogginlägget hjälper dig att lära dig att publicera Kubernetes-klusterhändelsedata till Amazon Elastic Search med hjälp av Fluentd-loggningsagent.

I den här artikeln lär du dig hur du publicerar Kubernetes-klusterhändelser till Amazon med hjälp av Fluentd-loggningsagent. Uppgifterna kommer sedan att visas med , ett visualiseringsverktyg med öppen källkod för Elasticsearch. Amazon ES består av integrerad Kibana-integration.

Vi går igenom dig med följande process:





Steg 1: Skapa ett Kubernetes-kluster

Kubernetes är en öppen källkodsplattform som skapats av Google för att hantera behållarapplikationer. det gör att du kan hantera, skala och distribuera dina containeriserade appar i en grupperad miljö. Vi kan ordna våra containrar över olika värdar med Guvernörer , skala de containeriserade apparna med alla resurser i farten och ha en central miljö för containerhantering.

Vi börjar med att skapa Kubernetes-kluster och jag kommer att visa dig steg för steg om hur du installerar och konfigurerar Kubernetes på CentOS 7.



ett. Konfigurera värdar

    • vi / etc / värdar
    • göra ändringar enligt din värdinformation i värdfilen

IMG1 - Elasticsearch - Edureka

typer av filter i tablå

2. Inaktivera SELinux genom att utföra kommandona nedan



    • setenforce 0
    • sed -i –följ-symlinks ‘s / SELINUX = verkställighet / SELINUX = inaktiverad / g’ / etc / sysconfig / selinux

3. Aktivera br_netfilter Kernel Module

Br_netfilter-modulen krävs för installation av kubernetes. Kör kommandot nedan för att aktivera br_netfilter-kärnmodulen.
    • modprobe br_netfilter
    • echo ‘1’> / proc / sys / net / bridge / bridge-nf-call-iptables

Fyra. Inaktivera SWAP genom att köra under kommandon.

    • byta -a
    • Redigera sedan / etc / fstab och kommentera bytelinjen

5. Installera den senaste versionen av Docker CE.Installera paketberoenden för docker-ce genom att köra under kommandon.

    • yum install -y yum-utils device-mapper-persistent-data lvm2
Lägg till dockerförvaret i systemet och installera docker-ce med kommandot yum.

6. Installera Kubernetes

Använd följande kommando för att lägga till kubernetes-förvaret till centos 7-systemet.
    • 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
Installera paketerar kubeadm, kubelet och kubectl genom att köra yum-kommandot nedan.
  • systemctl start docker && systemctl aktivera docker

När installationen är klar startar du om alla dessa servrar.Efter omstart startar du servicedockaren och kubelet

  • systemctl start docker && systemctl aktivera docker
  • systemctl start kubelet && systemctl aktiverar kubelet
7. Kubernetes klusterinitialisering Logga in på huvudservern och kör kommandot nedan
  • systemctl start kubelet && systemctl aktiverar kubelet
När Kubernetes initialisering är klar får du resultaten.Kopiera kommandona från de resultat du fick och kör det för att börja använda klustret. Anteckna kommandot kubeadm join från resultat. Kommandot kommer att användas för att registrera nya noder till kubernetes-klustret. 8. Distribuera flanellnätverket till kubernetes-klustret kubectl applicera -f

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

Flanellnätverket har distribuerats till Kubernetes-klustret. Vänta en stund och kontrollera sedan kubernetes nod och pods med hjälp av kommandona nedan.
    • kubectl få noder
    • kubectl få pods –all-namespaces
Och du får 'k8s-master' -noden körs som ett 'master' -kluster med status 'redo', och du får alla pods som behövs för klustret, inklusive 'kube-flannel-ds' för nätverkspod konfiguration.

9. Lägga till noder i klustretAnslut till node01-servern och kör kommandot kubeadm join

    • kubeadm gå med 172.31.7.47:6443 –token at03m9.iinkh5ps9q12sh2i –discovery-token-ca-cert-hash sha256: 3f6c1824796ef1ff3d9427c883bde915d5bc13331d74891d831f29a8c4

Anslut till node02-servern och kör kommandot kubeadm join

    • kubeadm gå med 172.31.7.47:6443 –token at03m9.iinkh5ps9q12sh2i –discovery-token-ca-cert-hash sha256: 3f6c1824796ef1ff3d9427c883bde915d5bc13331d74891d831f29a8c4

Vänta en stund och verifiera huvudklusterservern ‘k8s-master’, kontrollera noder och pods med följande kommando.

      • kubectl få noder

Nu får du arbetare1 och arbetare2 har lagts till i klustret med status 'redo'.

      • kubectl få pods –all-namespaces

Initiering och konfiguration av Kubernetes-klustermastern har slutförts.

Steg 2: Skapa ett Amazon ES-kluster

Elasticsearch är en sök- och analysmotor med öppen källkod som används för logganalys och realtidsövervakning av applikationer. Amazon Elasticsearch Service (Amazon ES) är en AWS-tjänst som möjliggör distribution, drift och skala av Elasticsearch i AWS-molnet. Du kan använda Amazon ES för att analysera e-postsändningshändelser från din Amazon SES

Vi skapar ett Amazon ES-kluster och distribuerar sedan Fluentd-loggningsagent till Kubernetes-klustret som samlar in loggar och skickar till Amazon ES-klustret.

Detta avsnitt visar hur man använder Amazon ES-konsolen för att skapa ett Amazon ES-kluster.

Att skapa ett Amazon ES-kluster

    1. Logga in på AWS Management Console och öppna Amazon Elasticsearch Service-konsolen på https://console.aws.amazon.com/es/
    2. Välj Skapa en ny domän och välj distributionstyp i Amazon ES-konsolen.
    3. Under version, lämna standardvärdet i fältet Elasticsearch-version.
    4. Välj Nästa
    5. Skriv ett namn för din elastiska sökdomän på konfigurera kluster sida under Konfigurera domän.
    6. Välj följande alternativ på sidan Konfigurera kluster under datainstanser
      • Instans typ - Välj t2.micro.elasticsearch (gratis nivå berättigad).
      • Antal instanser - ett
    7. UnderDedikerade masterinstanser
      • Aktivera dedikerad master - Aktivera inte det här alternativet.
      • Aktivera zonmedvetenhet - Aktivera inte det här alternativet.
    8. Välj följande alternativ under Lagringskonfiguration.
      • Lagringstyp - Välj EBS. För EBS-inställningar, välj EBS-volymtyp för allmänt ändamål (SSD) och EBS-volymstorlek& thinspav 10.
    9. Under kryptering - Aktivera inte det här alternativet
    10. Under ögonblicksbildskonfiguration
      • Automatiserad ögonblicksbilds starttid - Välj Automated snapshots start hour 00:00 UTC (standard).
    11. Välj Nästa
    12. Välj VPC-åtkomst under Nätverkskonfiguration och välj information enligt din VPC visas nedan.Under Kibana-autentisering: - Aktivera inte det här alternativet.
    13. För att ställa in åtkomstpolicyn, välj Tillåt öppen åtkomst till domänen.Obs: - I produktionen bör du begränsa åtkomsten till specifika IP-adresser eller intervall.
    14. Välj Nästa.
    15. På granskningssidan granskar du dina inställningar och väljer sedan Bekräfta och skapa.

Obs! Klustret tar upp till tio minuter att distribuera. Notera din Kibana-URL när du klickar på den skapade elastiska sökdomänen.

Steg 3: Distribuera Fluentd-loggningsagent på Kubernetes-klustret

Fluentd är en datainsamlare med öppen källkod, som låter dig förena datainsamlingen och konsumtionen för bättre användning och förståelse av data. I det här fallet kommer vi att distribuera Fluentd-loggning på Kubernetes-klustret, vilket samlar in loggfilerna och skickas till Amazon Elastic Search.

Vi kommer att skapa en ClusterRole som ger behörighet för pods och namnrymdobjekt för att få get, lista och titta på begäran till kluster.

Först måste vi konfigurera RBAC (rollbaserad åtkomstkontroll) behörighet så att Fluentd kan komma åt lämpliga komponenter.

1. fluentd-rbac.yaml:

apiVersion: v1 kind: ServiceAccount metadata: name: fluentd namespace: kube-system --- apiVersion: rbac.authorization.k8s.io/v1beta1 kind: ClusterRole metadata: name: fluentd namespace: kube-system rules: - apiGroups: - ' resurser: - pods - namnrum verb: - ​​get - list - watch --- kind: ClusterRoleBinding apiVersion: rbac.authorization.k8s.io/v1beta1 metadata: name: fluentd roleRef: kind: ClusterRole name: fluentd apiGroup: rbac.authorization .k8s.io ämnen: - kind: ServiceAccount name: fluentd namespace: kube-system

Skapa: $ kubectl skapa -f kubernetes / fluentd-rbac.yaml
Nu kan vi skapa DaemonSet.

2. fluentd-daemonset.yaml

apiVersion: extensions / v1beta1 kind: DaemonSet metadata: name: fluentd namespace: kube-system labels: k8s-app: fluentd-logging version: v1 kubernetes.io/cluster-service: 'true' spec: mall: metadata: labels: k8s -app: fluentd-loggningsversion: v1 kubernetes.io/cluster-service: 'true' spec: serviceAccount: fluentd serviceAccountName: fluentd tolerations: - key: node-role.kubernetes.io/master effect: NoSchema behållare: - namn: fluentd image: fluent / fluentd-kubernetes-daemonset: v1.3-debian-elasticsearch env: - namn: FLUENT_ELASTICSEARCH_HOST-värde: 'elasticsearch.logging' - namn: FLUENT_ELASTICSEARCH_PORT-värde: '9200' - namn: FLUENTCH-ELASTICSE-värde namn: FLUENT_UID-värde: '0' resurser: gränser: minne: 200Mi förfrågningar: cpu: 100m minne: 200Mi volymMonter: - namn: varlog mountPath: / var / log - namn: varlibdockcontainers mountPath: / var / lib / docker / behållare läsBara : true terminationGracePeriodSeconds: 30 volymer: - namn: varlog hostPath: sökväg: / var / log - namn: varlibdockercontainers hostPath: sökväg: / var / lib / docker / containrar

Se till att definiera FLUENT_ELASTICSEARCH_HOST & FLUENT_ELASTICSEARCH_PORT enligt din elastiska sökmiljö

Implementera:

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

Validera loggarna

$ kubectl loggar fluentd-lwbt6 -n kube-system | grep-anslutning

Du bör se att Fluentd ansluter till Elasticsearch inom loggarna:

Steg 4: Visualisera kubernetes-data i Kibana

  1. Anslut till kibana-instrumentbrädans URL för att komma från Amazon ES-konsolen
  2. För att se loggarna som samlats in av Fluentd i Kibana, klicka på 'Management' och välj sedan 'Indexmönster' under 'Kibana'
  3. välj standardindexmönster (logstash- *)
  4. Klicka på Nästa steg och ställ in 'Time filter field Name' (@timestamp) och välj Skapa indexmönster
  5. Klicka på Upptäck för att se dina applikationsloggar
  6. Klicka på Visualisera och välj skapa en visualisering och välj paj. Fyll i följande fält som visas nedan.
    • Välj Logstash- * index och klicka på delade skivor
    • Aggregering - Betydande villkor
    • Fält = Kubernetes.pod_name.keyword
    • Storlek - 10

7. Och tillämpa ändringar

Det är allt! Så här kan du visualisera Kubernetes Pod skapad i Kibana.

Sammanfattning :

Övervakning med logganalys är en viktig del av alla applikationsdistributioner. Du kan samla och konsolidera loggar över ditt kluster i Kubernetes för att övervaka hela klustret från en enda instrumentpanel. I vårt exempel har vi sett fluentd fungera som en medlare mellan kubernetes-klustret och Amazon ES. Fluentd kombinerar loggsamling och aggregering och skickar loggar till Amazon ES för logganalys och datavisualisering med kibana.

Ovanstående exempel visar hur man lägger till AWS Elastic search logging och kibana-övervakning till kubernetes-klustret med fluentd.

Om du tyckte att denna Kubernetes-blogg var relevant, kolla in av Edureka, ett pålitligt inlärningsföretag online med ett nätverk av mer än 250 000 nöjda elever spridda över hela världen.

vad som är föränderligt och oföränderligt

Har du en fråga till oss? Vänligen nämna det i kommentarfältet så återkommer vi till dig.