Kubernetes-clustergebeurtenissen in realtime visualiseren



Deze blogpost helpt je te leren hoe je Kubernetes-clustergebeurtenisgegevens publiceert naar Amazon Elastic Search met behulp van Fluentd-logging-agent.

In dit artikel leert u hoe u Kubernetes-clustergebeurtenisgegevens naar Amazon publiceert met behulp van Fluentd-logging-agent. De gegevens worden dan bekeken met , een open-source visualisatietool voor Elasticsearch. Amazon ES bestaat uit geïntegreerde Kibana-integratie.

We zullen u door het volgende proces leiden:





Stap 1: een Kubernetes-cluster maken

Kubernetes is een open source-platform gemaakt door Google om gecontaineriseerde applicaties te beheren. Hiermee kunt u uw container-apps beheren, schalen en implementeren in een clusteromgeving. We kunnen onze containers over verschillende hosts orkestreren met Gouverneurs , schaal de container-apps met alle resources in een handomdraai, en beschik over een gecentraliseerde containerbeheeromgeving.

We beginnen met het maken van een Kubernetes-cluster en ik zal u stap voor stap laten zien hoe u Kubernetes op CentOS 7 installeert en configureert.



een. Configureer hosts

    • vi / etc / hosts
    • breng wijzigingen aan volgens uw hostgegevens in het hosts-bestand

IMG1 - Elasticsearch - Edureka

2. Schakel SELinux uit door onderstaande commando's uit te voeren



    • setenforce 0
    • sed -i –follow-symlinks ‘s / SELINUX = afdwingen / SELINUX = uitgeschakeld / g’ / etc / sysconfig / selinux

3. Schakel br_netfilter Kernel Module in

De module br_netfilter is vereist voor de installatie van kubernetes. Voer de onderstaande opdracht uit om de kernelmodule br_netfilter in te schakelen.
    • modprobe br_netfilter
    • echo ‘1’> / proc / sys / net / bridge / bridge-nf-call-iptables

Vier. Schakel SWAP uit door onderstaande opdrachten uit te voeren.

    • swapoff -a
    • Bewerk vervolgens / etc / fstab en geef commentaar op de ruilregel

5. Installeer de nieuwste versie van Docker CE.Installeer de pakketafhankelijkheden voor docker-ce door onderstaande opdrachten uit te voeren.

    • yum install -y yum-utils device-mapper-persistent-data lvm2
Voeg de docker-repository toe aan het systeem en installeer docker-ce met de opdracht yum.

6. Installeer Kubernetes

Gebruik de volgende opdracht om de kubernetes-opslag plaats toe te voegen aan het centos 7-systeem.
    • 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
Installeer het pakketten kubeadm, kubelet en kubectl met behulp van de onderstaande yum-opdracht.
  • systemctl start docker && systemctl schakel docker in

Start al die servers opnieuw nadat de installatie is voltooid.Start na het opnieuw opstarten de services docker en kubelet

  • systemctl start docker && systemctl schakel docker in
  • systemctl start kubelet && systemctl schakel kubelet in
7. Initialisatie van Kubernetes-cluster Log in op de masterserver en voer de onderstaande opdracht uit
  • systemctl start kubelet && systemctl schakel kubelet in
Zodra de initialisatie van Kubernetes is voltooid, krijgt u de resultaten.Kopieer de opdrachten van de resultaten die u hebt gekregen en voer deze uit om het cluster te gebruiken. Noteer de kubeadm-opdracht samenvoegen in de resultaten. De opdracht wordt gebruikt om nieuwe knooppunten te registreren bij het kubernetes-cluster. 8. Implementeer het flanel-netwerk naar het kubernetes-cluster kubectl toepassen -f

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

Het flanellennetwerk is geïmplementeerd in het Kubernetes-cluster. Wacht enige tijd en controleer vervolgens het kubernetes-knooppunt en de pods met de onderstaande opdrachten.
    • kubectl krijgt knooppunten
    • kubectl krijgt pods - alle naamruimten
En je krijgt dat het 'k8s-master'-knooppunt draait als een' master'-cluster met de status 'klaar', en je krijgt alle pods die nodig zijn voor het cluster, inclusief de 'kube-flannel-ds' voor netwerkpod configuratie.

9. Knooppunten aan het cluster toevoegenMaak verbinding met de node01-server en voer de opdracht kubeadm join uit

    • kubeadm join 172.31.7.47:6443 –token at03m9.iinkh5ps9q12sh2i –discovery-token-ca-cert-hash sha256: 3f6c1824796ef1ff3d9427c883bde915d5bc13331d74891d831f29a8c4a

Maak verbinding met de node02-server en voer de opdracht kubeadm join uit

    • kubeadm join 172.31.7.47:6443 –token at03m9.iinkh5ps9q12sh2i –discovery-token-ca-cert-hash sha256: 3f6c1824796ef1ff3d9427c883bde915d5bc13331d74891d831f29a8c4a

Wacht enige tijd en valideer de ‘k8s-master’ masterclusterserver, controleer de knooppunten en pods met behulp van de volgende opdracht.

      • kubectl krijgt knooppunten

U krijgt nu worker1 en worker2 is aan het cluster toegevoegd met de status ‘gereed’.

      • kubectl krijgt pods - alle naamruimten

De initialisatie en configuratie van Kubernetes-clustermaster is voltooid.

marionet vs ansible vs chef

Stap 2: een Amazon ES-cluster maken

Elasticsearch is een open source zoek- en analyse-engine die wordt gebruikt voor logboekanalyse en real-time monitoring van applicaties. Amazon Elasticsearch Service (Amazon ES) is een AWS-service die de implementatie, werking en schaal van Elasticsearch in de AWS-cloud mogelijk maakt. U kunt Amazon ES gebruiken om gebeurtenissen voor het verzenden van e-mail vanaf uw Amazon SES te analyseren

We zullen een Amazon ES-cluster maken en vervolgens de Fluentd-logging-agent implementeren in het Kubernetes-cluster dat logboeken verzamelt en naar het Amazon ES-cluster verzendt

In dit gedeelte wordt uitgelegd hoe u de Amazon ES-console gebruikt om een ​​Amazon ES-cluster te maken.

Om een ​​Amazon ES-cluster te maken

    1. Meld u aan bij de AWS Management Console en open de Amazon Elasticsearch Service-console op https://console.aws.amazon.com/es/
    2. Selecteer Maak een nieuw domein en kies Implementatietype in de Amazon ES-console.
    3. Laat onder Versie de standaardwaarde van het veld Elasticsearch-versie staan.
    4. Selecteer volgende
    5. Typ een naam voor uw Elastic-zoekdomein op het configureren cluster pagina onder Configureer het domein.
    6. Selecteer op de pagina cluster configureren de volgende opties onder gegevensinstanties
      • Instantietype - Kies t2.micro.elasticsearch (komt in aanmerking voor een gratis laag).
      • Aantal instanties - een
    7. OnderToegewijde masterinstances
      • Schakel toegewijde master in - Schakel deze optie niet in.
      • Schakel zonebewustzijn in - Schakel deze optie niet in.
    8. Kies onder Opslagconfiguratie de volgende opties.
      • Opslag type - Kies EBS. Kies voor de EBS-instellingen het EBS-volumetype General Purpose (SSD) en EBS-volumegrootte& dunspvan 10.
    9. Onder versleuteling - Schakel deze optie niet in
    10. Onder snapshot-configuratie
      • Geautomatiseerd startuur van snapshots - Kies Geautomatiseerde snapshots startuur 00:00 UTC (standaard).
    11. Kies Volgende
    12. Selecteer onder Netwerkconfiguratie VPC-toegang en selecteer de details volgens uw VPC hieronder.Onder Kibana-authenticatie: - Schakel deze optie niet in.
    13. Selecteer Open toegang tot het domein toestaan ​​om het toegangsbeleid in te stellen.Opmerking: - In productie moet u de toegang tot een specifiek IP-adres of bereiken beperken.
    14. Kies Volgende.
    15. Controleer uw instellingen op de pagina Controleren en kies vervolgens Bevestigen en maken.

Opmerking: het kan tot tien minuten duren voordat het cluster is geïmplementeerd. Noteer uw Kibana-URL zodra u op het gemaakte elastische zoekdomein klikt.

Stap 3: Implementeer Fluentd-logboekregistratie-agent op Kubernetes-cluster

Fluentd is een open source gegevensverzamelaar, waarmee u de gegevensverzameling en -consumptie kunt verenigen voor een beter gebruik en begrip van gegevens. In dit geval zullen we Fluentd-logging implementeren op het Kubernetes-cluster, dat de logbestanden verzamelt en naar Amazon Elastic Search verzendt.

We zullen een ClusterRole maken die machtigingen biedt voor pods en naamruimteobjecten om een ​​get-, list- en watch-verzoek te clusteren.

Ten eerste moeten we RBAC-machtigingen (role-based access control) configureren zodat Fluentd toegang heeft tot de juiste componenten.

1.fluentd-rbac.yaml:

apiVersion: v1 soort: ServiceAccount metadata: name: fluentd namespace: kube-system --- apiVersion: rbac.authorization.k8s.io/v1beta1 kind: ClusterRole metadata: name: fluentd namespace: kube-system rules: - apiGroups: - ' 'resources: - pods - namespaces werkwoorden: - get - list - watch --- kind: ClusterRoleBinding apiVersion: rbac.authorization.k8s.io/v1beta1 metadata: name: fluentd role Ref: kind: ClusterRole name: fluentd apiGroup: rbac.authorization .k8s.io onderwerpen: - soort: ServiceAccount naam: fluentd naamruimte: kube-systeem

Maken: $ kubectl create -f kubernetes / fluentd-rbac.yaml
Nu kunnen we de DaemonSet maken.

2. fluentd-daemonset.yaml

apiVersion: extensions / v1beta1 soort: DaemonSet metadata: name: fluentd namespace: kube-system labels: k8s-app: fluentd-logging version: v1 kubernetes.io/cluster-service: 'true' spec: template: metadata: labels: k8s -app: fluentd-logging versie: v1 kubernetes.io/cluster-service: 'true' specificatie: serviceAccount: fluentd serviceAccountName: fluentd toleraties: - key: node-role.kubernetes.io/master effect: NoSchedule containers: - naam: fluentd afbeelding: fluent / fluentd-kubernetes-daemonset: v1.3-debian-elasticsearch env: - naam: FLUENT_ELASTICSEARCH_HOST waarde: 'elasticsearch.logging' - naam: FLUENT_ELASTICSEARCH_PORT waarde: '9200' - naam: FLUENT_ELASTICSEARCH_HOST waarde: 'elasticsearch.logging' - naam: FLUENT_ELASTICSEARCH_PORT waarde: '9200' - naam: FLUENT_ELASTICE waarde: ' naam: FLUENT_UID waarde: '0' bronnen: limieten: geheugen: 200Mi verzoeken: cpu: 100m geheugen: 200Mi volumeMounts: - naam: varlog mountPath: / var / log - naam: varlibdockercontainers mountPath: / var / lib / docker / containers readOnly : true termininationGracePeriodSeconds: 30 volumes: - naam: varlog hostPath: pad: / var / log - naam: varlibdockercontainers hostPath: pad: / var / lib / docker / containers

Zorg ervoor dat u FLUENT_ELASTICSEARCH_HOST & FLUENT_ELASTICSEARCH_PORT definieert volgens uw elastische zoekomgeving

Inzetten:

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

Valideer de logboeken

$ kubectl logboeken fluentd-lwbt6 -n kube-system | grep-verbinding

Je zou moeten zien dat Fluentd verbinding maakt met Elasticsearch in de logboeken:

Stap 4: Visualiseer kubernetes-gegevens in Kibana

  1. Maak verbinding met de kibana-dashboard-URL om van de Amazon ES-console te komen
  2. Om de logboeken te zien die door Fluentd in Kibana zijn verzameld, klikt u op 'Beheer' en selecteert u vervolgens 'Indexpatronen' onder 'Kibana'
  3. kies het standaard indexpatroon (logstash- *)
  4. Klik op Volgende stap en stel de “Tijdfilterveldnaam” (@timestamp) in en kies Indexpatroon maken
  5. Klik op Ontdekken om uw toepassingslogboeken te bekijken
  6. Klik op Visualiseren en selecteer een visualisatie maken en kies Taart. Vul de volgende velden in zoals hieronder weergegeven.
    • Selecteer Logstash- * index en klik op gesplitste segmenten
    • Aggregatie - Significante termen
    • Veld = Kubernetes.pod_name.keyword
    • Maat - 10

7. En pas wijzigingen toe

Dat is het! Dit is hoe u de Kubernetes-pod kunt visualiseren die in Kibana is gemaakt.

Samenvatting :

Monitoring door logboekanalyse is een cruciaal onderdeel van elke applicatie-implementatie. U kunt logboeken in uw cluster in Kubernetes verzamelen en consolideren om het hele cluster vanaf één dashboard te bewaken. In ons voorbeeld hebben we vloeiend zien optreden als bemiddelaar tussen kubernetes-cluster en Amazon ES. Fluentd combineert logboekverzameling en -aggregatie en stuurt logboeken naar Amazon ES voor loganalyse en datavisualisatie met Kibana.

Het bovenstaande voorbeeld laat zien hoe u AWS Elastic Search-logboekregistratie en kibana-bewaking kunt toevoegen aan kubernetes-cluster met behulp van fluentd.

Als je deze Kubernetes-blog relevant vond, bekijk dan het door Edureka, een vertrouwd online leerbedrijf met een netwerk van meer dan 250.000 tevreden leerlingen verspreid over de hele wereld.

Heeft u een vraag voor ons? Vermeld het in het opmerkingengedeelte en we nemen contact met u op.