Come visualizzare gli eventi del cluster Kubernetes in tempo reale



Questo post del blog ti aiuterà a imparare come pubblicare i dati degli eventi del cluster Kubernetes su Amazon Elastic Search utilizzando l'agente di registrazione Fluentd.

In questo articolo imparerai come pubblicare i dati degli eventi del cluster Kubernetes su Amazon utilizzando l'agente di registrazione Fluentd. I dati verranno quindi visualizzati utilizzando , uno strumento di visualizzazione open source per Elasticsearch. Amazon ES consiste nell'integrazione Kibana integrata.

Ti guideremo attraverso il seguente processo:





Passaggio 1: creazione di un cluster Kubernetes

Kubernetes è una piattaforma open source creata da Google per gestire le applicazioni containerizzate. ti consente di gestire, scalare e distribuire le tue app containerizzate in un ambiente cluster. Possiamo orchestrare i nostri contenitori su vari host con Governatori , ridimensionare le app containerizzate con tutte le risorse al volo e disporre di un ambiente di gestione dei container centralizzato.

Inizieremo con la creazione del cluster Kubernetes e ti mostrerò passo dopo passo come installare e configurare Kubernetes su CentOS 7.



uno. Configura host

    • vi / etc / hosts
    • apportare modifiche in base ai dettagli dell'host nel file hosts

IMG1 - Elasticsearch - Edureka

2. Disabilita SELinux eseguendo i seguenti comandi



    • setenforce 0
    • sed -i –follow-symlinks 's / SELINUX = enforcing / SELINUX = disabled / g' / etc / sysconfig / selinux

3. Abilita br_netfilter Kernel Module

Il modulo br_netfilter è richiesto per l'installazione di kubernetes. Eseguire il comando seguente per abilitare il modulo kernel br_netfilter.
    • modprobe br_netfilter
    • echo '1'> / proc / sys / net / bridge / bridge-nf-call-iptables

Quattro. Disabilita SWAP eseguendo i seguenti comandi.

    • swapoff -a
    • Quindi modifica / etc / fstab e commenta la riga di scambio

inverte un numero in python

5. Installa l'ultima versione di Docker CE.Installa le dipendenze del pacchetto per docker-ce eseguendo i seguenti comandi.

    • yum install -y yum-utils device-mapper-persistent-data lvm2
Aggiungi il repository docker al sistema e installa docker-ce utilizzando il comando yum.

6. Installa Kubernetes

Usa il seguente comando per aggiungere il repository kubernetes al sistema 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
Installa il file pacchetti kubeadm, kubelet e kubectl utilizzando eseguendo il comando yum di seguito.
  • systemctl avvia docker && systemctl abilita docker

Al termine dell'installazione, riavviare tutti quei server.Dopo il riavvio, avvia i servizi docker e kubelet

  • systemctl avvia docker && systemctl abilita docker
  • systemctl avvia kubelet && systemctl abilita kubelet
7. Inizializzazione del cluster Kubernetes Accedi al server principale ed esegui il comando seguente
  • systemctl avvia kubelet && systemctl abilita kubelet
Una volta completata l'inizializzazione di Kubernetes, otterrai i risultati.Copia i comandi dai risultati ottenuti ed eseguilo per iniziare a utilizzare il cluster. Prendi nota del comando kubeadm join dai risultati. Il comando verrà utilizzato per registrare nuovi nodi nel cluster kubernetes. 8. Distribuisci la rete flannel nel cluster kubernetes kubectl apply -f

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

La rete di flanella è stata distribuita al cluster Kubernetes. Attendi un po 'di tempo, quindi controlla il nodo e i pod kubernetes utilizzando i comandi seguenti.
    • kubectl ottiene i nodi
    • kubectl ottiene pods –all-namespaces
E otterrai che il nodo 'k8s-master' è in esecuzione come cluster 'master' con stato 'pronto' e otterrai tutti i pod necessari per il cluster, incluso il 'kube-flannel-ds' per il pod di rete configurazione.

9. Aggiunta di nodi al clusterConnettiti al server node01 ed esegui il comando kubeadm join

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

Connettiti al server node02 ed esegui il comando kubeadm join

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

Attendi un po 'di tempo e convalida il server del cluster principale 'k8s-master', controlla i nodi e i pod utilizzando il seguente comando.

      • kubectl ottiene i nodi

Ora otterrai worker1 e worker2 è stato aggiunto al cluster con lo stato 'pronto'.

      • kubectl ottiene pods –all-namespaces

L'inizializzazione e la configurazione del master del cluster Kubernetes sono state completate.

Passaggio 2: creazione di un cluster Amazon ES

Elasticsearch è un motore di ricerca e analisi open source utilizzato per l'analisi dei log e il monitoraggio in tempo reale delle applicazioni. Amazon Elasticsearch Service (Amazon ES) è un servizio AWS che consente la distribuzione, il funzionamento e la scalabilità di Elasticsearch nel cloud AWS. Puoi utilizzare Amazon ES per analizzare gli eventi di invio di e-mail dal tuo Amazon SES

Creeremo un cluster Amazon ES e quindi distribuiremo l'agente di registrazione Fluentd al cluster Kubernetes che raccoglierà i log e li invierà al cluster Amazon ES

Questa sezione mostra come utilizzare la console Amazon ES per creare un cluster Amazon ES.

Per creare un cluster Amazon ES

    1. Accedi alla Console di gestione AWS e apri la console di Amazon Elasticsearch Service all'indirizzo https://console.aws.amazon.com/es/
    2. Selezionare Crea un nuovo dominio e scegli il tipo di distribuzione nella console Amazon ES.
    3. In Versione, lascia il valore predefinito del campo Versione di Elasticsearch.
    4. Seleziona Avanti
    5. Digita un nome per il tuo dominio di ricerca elastico nel file configurare il cluster pagina sotto Configura dominio.
    6. Nella pagina Configura cluster, seleziona le seguenti opzioni in Istanze di dati
      • Tipo di istanza - Scegli t2.micro.elasticsearch (idoneo per il livello gratuito).
      • Numero di istanze - uno
    7. SottoIstanze master dedicate
      • Abilita master dedicato - Non abilitare questa opzione.
      • Abilita la consapevolezza della zona - Non abilitare questa opzione.
    8. In Configurazione archiviazione, scegli le seguenti opzioni.
      • Tipo di archiviazione - Scegli EBS. Per le impostazioni EBS, scegli il tipo di volume EBS General Purpose (SSD) e la dimensione del volume EBS& thinspdi 10.
    9. Sotto crittografia - Non abilitare questa opzione
    10. Sotto configurazione snapshot
      • Ora di inizio dello snapshot automatico - Scegli Le istantanee automatiche iniziano alle 00:00 UTC (impostazione predefinita).
    11. Scegli Avanti
    12. In Configurazione di rete seleziona Accesso VPC e seleziona i dettagli in base al tuo VPC mostrato di seguito.Sotto l'autenticazione Kibana: - Non abilitare questa opzione.
    13. Per impostare il criterio di accesso, seleziona Consenti accesso aperto al dominio.Nota: - In produzione dovresti limitare l'accesso a specifici indirizzi IP o intervalli.
    14. Scegli Avanti.
    15. Nella pagina Revisione, rivedi le tue impostazioni, quindi scegli Conferma e crea.

Nota: la distribuzione del cluster richiederà fino a dieci minuti. Prendi nota del tuo URL Kibana dopo aver fatto clic sul dominio di ricerca elastico creato.

Passaggio 3: distribuisci l'agente di registrazione Fluentd sul cluster Kubernetes

Fluentd è un raccoglitore di dati open source, che consente di unificare la raccolta e il consumo dei dati per un migliore utilizzo e comprensione dei dati. In questo caso, distribuiremo il log di Fluentd sul cluster Kubernetes, che raccoglierà i file di log e li invierà ad Amazon Elastic Search.

Creeremo un ClusterRole che fornisce i permessi sui pod e sugli oggetti dello spazio dei nomi per fare richieste get, list e watch al cluster.

Innanzitutto, è necessario configurare le autorizzazioni RBAC (controllo degli accessi basato sui ruoli) in modo che Fluentd possa accedere ai componenti appropriati.

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: - ' 'risorse: - pods - spazi dei nomi verbi: - get - list - watch --- kind: ClusterRoleBinding apiVersion: rbac.authorization.k8s.io/v1beta1 metadata: name: fluentd roleRef: kind: ClusterRole name: fluentd apiGroup: rbac.authorization .k8s.io soggetti: - tipo: ServiceAccount nome: fluentd namespace: kube-system

Crea: $ kubectl create -f kubernetes / fluentd-rbac.yaml
Ora possiamo creare DaemonSet.

cos'è l'interfaccia marker in java

2. fluentd-daemonset.yaml

apiVersion: extensions / v1beta1 tipo: DaemonSet metadata: name: fluentd namespace: kube-system labels: k8s-app: fluentd-logging versione: v1 kubernetes.io/cluster-service: 'true' specifica: template: metadata: labels: k8s -app: fluentd-logging versione: v1 kubernetes.io/cluster-service: 'true' specifica: serviceAccount: fluentd serviceAccountName: fluentd tolleranze: - chiave: node-role.kubernetes.io/master effetto: NoSchedule containers: - name: immagine fluentd: fluent / fluentd-kubernetes-daemonset: v1.3-debian-elasticsearch env: - nome: FLUENT_ELASTICSEARCH_HOST valore: 'elasticsearch.logging' - nome: FLUENT_ELASTICSEARCH_PORT valore: '9200' - nome: FLUENT_ELASTICSE: 'httpSC' - valore nome: FLUENT_UID valore: '0' risorse: limiti: memoria: 200Mi richieste: cpu: 100m memoria: 200Mi volumeMounts: - nome: varlog mountPath: / var / log - nome: varlibdockercontainers mountPath: / var / lib / docker / containers readOnly : true terminationGracePeriodSeconds: 30 volumi: - nome: varlog hostPath: percorso: / var / log - nome: varlibdockercontainers hostPath: percorso: / var / lib / docker / containers

Assicurati di definire FLUENT_ELASTICSEARCH_HOST e FLUENT_ELASTICSEARCH_PORT in base al tuo ambiente di ricerca elastico

Distribuire:

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

Convalida i log

$ kubectl registra fluentd-lwbt6 -n kube-system | Connessione grep

Dovresti vedere che Fluentd si connette a Elasticsearch nei log:

Passaggio 4: visualizza i dati di Kubernetes in Kibana

  1. Connettiti all'URL della dashboard kibana per ottenere dalla console Amazon ES
  2. Per vedere i registri raccolti da Fluentd in Kibana, fai clic su 'Gestione' e quindi seleziona 'Schemi indice' in 'Kibana'
  3. scegli il modello di indice predefinito (logstash- *)
  4. Fare clic su Passaggio successivo e impostare il 'Nome campo filtro tempo' (@timestamp) e scegliere Crea modello indice
  5. Fare clic su Scopri per visualizzare i registri dell'applicazione
  6. Fai clic su Visualizza e seleziona Crea una visualizzazione e scegli Torta. Compila i seguenti campi come mostrato di seguito.
    • Seleziona Logstash- * index e fai clic su sezioni divise
    • Aggregazione - Termini significativi
    • Campo = Kubernetes.pod_name.keyword
    • Taglia - 10

7. E applicare le modifiche

Questo è tutto! In questo modo puoi visualizzare il pod Kubernetes creato in Kibana.

Sommario :

Il monitoraggio tramite analisi dei log è un componente critico di qualsiasi distribuzione di applicazioni. Puoi raccogliere e consolidare i log nel tuo cluster in Kubernetes per monitorare l'intero cluster da un unico dashboard. Nel nostro esempio, abbiamo visto fluentd agire come mediatore tra il cluster Kubernetes e Amazon ES. Fluentd combina la raccolta e l'aggregazione dei log e invia i log ad Amazon ES per l'analisi dei log e la visualizzazione dei dati con kibana.

L'esempio precedente mostra come aggiungere la registrazione della ricerca elastica AWS e il monitoraggio kibana al cluster kubernetes utilizzando fluentd.

switch case nei programmi di esempio java

Se hai trovato pertinente questo blog di Kubernetes, controlla il da Edureka, una società di formazione online affidabile con una rete di oltre 250.000 studenti soddisfatti sparsi in tutto il mondo.

Hai domande per noi? Per favore menzionalo nella sezione commenti e ti risponderemo.