Como visualizar eventos de cluster do Kubernetes em tempo real



Esta postagem de blog ajudará você a aprender como publicar dados de eventos de cluster do Kubernetes no Amazon Elastic Search usando o agente de registro Fluentd.

Neste artigo, você aprenderá como publicar dados de eventos de cluster do Kubernetes na Amazon usando o agente de registro Fluentd. Os dados serão então visualizados usando , uma ferramenta de visualização de código aberto para Elasticsearch. O Amazon ES consiste na integração Kibana integrada.

Iremos orientá-lo no seguinte processo:





Etapa 1: criar um cluster Kubernetes

Kubernetes é uma plataforma de código aberto criada pelo Google para gerenciar aplicativos em contêineres. ele permite que você gerencie, dimensione e implante seus aplicativos em contêineres em um ambiente em cluster. Podemos orquestrar nossos contêineres em vários hosts com Governadores , dimensione os aplicativos em contêiner com todos os recursos em tempo real e tenha um ambiente de gerenciamento de contêiner centralizado.

Começaremos com a criação do cluster Kubernetes e demonstrarei passo a passo como instalar e configurar o Kubernetes no CentOS 7.



1. Configurar Hosts

    • vi / etc / hosts
    • faça alterações de acordo com os detalhes do seu host no arquivo hosts

IMG1 - Elasticsearch - Edureka

2 Desative o SELinux executando os comandos abaixo



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

3 - Habilitar módulo de kernel br_netfilter

O módulo br_netfilter é necessário para a instalação do kubernetes. Execute o comando abaixo para habilitar o módulo de kernel br_netfilter.
    • modprobe br_netfilter
    • echo ‘1’> / proc / sys / net / bridge / bridge-nf-call-iptables

Quatro. Desative o SWAP executando os comandos abaixo.

    • swapoff -a
    • Em seguida, edite / etc / fstab e comente a linha de troca

controlador de visualização de modelo em java

5 Instale a versão mais recente do Docker CE.Instale as dependências do pacote para docker-ce executando os comandos abaixo.

    • yum install -y yum-utils device-mapper-persistent-data lvm2
Adicione o repositório docker ao sistema e instale docker-ce usando o comando yum.

6 Instale o Kubernetes

Use o seguinte comando para adicionar o repositório kubernetes ao 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
Instale o empacota kubeadm, kubelet e kubectl usando executando o comando yum abaixo.
  • systemctl start docker && systemctl enable docker

Após a conclusão da instalação, reinicie todos esses servidores.Depois de reiniciar, inicie os serviços docker e kubelet

  • systemctl start docker && systemctl enable docker
  • systemctl start kubelet && systemctl enable kubelet
7 Inicialização de cluster do Kubernetes Faça login no servidor mestre e execute o comando abaixo
  • systemctl start kubelet && systemctl enable kubelet
Assim que a inicialização do Kubernetes for concluída, você obterá os resultados.Copie os comandos dos resultados obtidos e execute-os para começar a usar o cluster. Anote o comando kubeadm join nos resultados. O comando será usado para registrar novos nós no cluster do kubernetes. 8 Implante a rede de flanela no cluster Kubernetes kubectl apply -f

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

A rede de flanela foi implantada no cluster Kubernetes. Aguarde um pouco e verifique o nó e os pods do kubernetes usando os comandos abaixo.
    • kubectl get nodes
    • kubectl get pods –all-namespaces
E você verá que o nó 'k8s-master' está sendo executado como um cluster 'mestre' com o status 'pronto' e receberá todos os pods necessários para o cluster, incluindo o 'kube-flannel-ds' para pod de rede configuração.

9 Adicionando nós ao clusterConecte-se ao servidor node01 e execute o comando kubeadm join

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

Conecte-se ao servidor node02 e execute o comando kubeadm join

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

Aguarde algum tempo e valide o servidor do cluster mestre ‘k8s-master’, verifique os nós e pods usando o seguinte comando.

      • kubectl get nodes

Agora você obterá o trabalhador1 e o trabalhador2 foi adicionado ao cluster com o status ‘pronto’.

      • kubectl get pods –all-namespaces

A inicialização e configuração do mestre do cluster do Kubernetes foram concluídas.

Etapa 2: Criação de um cluster Amazon ES

Elasticsearch é um mecanismo de pesquisa e análise de código aberto que é usado para análise de log e monitoramento em tempo real de aplicativos. O Amazon Elasticsearch Service (Amazon ES) é um serviço da AWS que permite a implantação, operação e escala do Elasticsearch na nuvem da AWS. Você pode usar o Amazon ES para analisar eventos de envio de e-mail de seu Amazon SES

Criaremos um cluster Amazon ES e, em seguida, implantaremos o agente de registro Fluentd no cluster Kubernetes, que coletará os registros e enviará para o cluster Amazon ES

amazon ec2 tutorial para iniciantes

Esta seção mostra como usar o console Amazon ES para criar um cluster Amazon ES.

Para criar um cluster Amazon ES

    1. Faça login no AWS Management Console e abra o console do Amazon Elasticsearch Service em https://console.aws.amazon.com/es/
    2. Selecione Crie um novo domínio e escolha o tipo de implantação no console Amazon ES.
    3. Em Versão, deixe o valor padrão do campo de versão do Elasticsearch.
    4. Selecione Próximo
    5. Digite um nome para o seu domínio de pesquisa Elastic no configurar cluster página sob Configure o domínio.
    6. Na página Configurar cluster, selecione as seguintes opções em Instâncias de dados
      • Tipo de instância - Escolha t2.micro.elasticsearch (nível gratuito elegível).
      • Número de Instância - 1
    7. SobInstâncias mestre dedicadas
      • Habilitar mestre dedicado - Não habilite esta opção.
      • Ativar reconhecimento de zona - Não habilite esta opção.
    8. Em configuração de armazenamento, escolha as seguintes opções.
      • Tipo de armazenamento - Escolha EBS. Para as configurações de EBS, escolha o tipo de volume EBS de uso geral (SSD) e o tamanho do volume EBS& thinspde 10.
    9. Sob criptografia - Não habilite esta opção
    10. Sob configuração de instantâneo
      • Hora de início de instantâneo automatizado - Escolha hora de início dos instantâneos automatizados 00:00 UTC (padrão).
    11. Escolha o próximo
    12. Em Configuração de rede, selecione Acesso VPC e selecione os detalhes de acordo com o VPC mostrado abaixo.Na autenticação Kibana: - Não habilite esta opção.
    13. Para definir a política de acesso, selecione Permitir acesso aberto ao domínio.Nota: - Na produção, você deve restringir o acesso a IPaddress ou intervalos específicos.
    14. Escolha Próximo.
    15. Na página Revisar, revise suas configurações e escolha Confirmar e criar.

Observação: o cluster levará até dez minutos para ser implantado. Anote seu URL Kibana assim que clicar no domínio de pesquisa elástico criado.

Etapa 3: implantar o agente de registro Fluentd no cluster Kubernetes

Fluentd é um coletor de dados de código aberto, que permite unificar a coleta e o consumo de dados para melhor uso e compreensão dos dados. Nesse caso, implantaremos o registro Fluentd no cluster Kubernetes, que coletará os arquivos de registro e os enviará ao Amazon Elastic Search.

Criaremos um ClusterRole que fornece permissões em pods e objetos de namespace para fazer solicitações get, list e watch para o cluster.

Primeiro, precisamos configurar as permissões RBAC (controle de acesso baseado em funções) para que o Fluentd possa acessar os componentes apropriados.

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: - ' 'resources: - pods - namespaces verbos: - get - list - watch --- kind: ClusterRoleBinding apiVersion: rbac.authorization.k8s.io/v1beta1 metadados: nome: fluentd roleRef: kind: ClusterRole nome: fluentd apiGroup: rbac.authorization .k8s.io subject: - kind: ServiceAccount name: fluentd namespace: kube-system

Criar: $ kubectl create -f kubernetes / fluentd-rbac.yaml
Agora, podemos criar o 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: template: metadata: labels: k8s -app: fluentd-logging version: v1 kubernetes.io/cluster-service: 'true' spec: serviceAccount: fluentd serviceAccountName: fluentd tolerations: - key: node-role.kubernetes.io/master efeito: NoSchedule containers: - name: fluentd imagem: fluentd-kubernetes-daemonset: v1.3-debian-elasticsearch env: - nome: FLUENT_ELASTICSEARCH_HOST valor: 'elasticsearch.logging' - nome: FLUENT_ELASTICSEARCH_PORT valor: '9200' - nome: FLUENT_ELASTICSEARCH_HOST valor: 'elasticsearch.logging' - nome: FLUENT_ELASTICSEARCH_PORT valor: '9200' - nome: FLUENT_ELASTICSEARCH_SCHEME ' nome: FLUENT_UID valor: '0' recursos: limites: memória: 200Mi solicitações: cpu: 100m memória: 200Mi volumeMounts: - nome: varlog mountPath: / var / log - nome: varlibdockercontainers mountPath: / var / lib / docker / containers somente leitura : true terminationGracePeriodSeconds: 30 volumes: - nome: varlog hostPath: caminho: / var / log - nome: varlibdockercontainers hostPath: caminho: / var / lib / docker / containers

Certifique-se de definir FLUENT_ELASTICSEARCH_HOST & FLUENT_ELASTICSEARCH_PORT de acordo com seu ambiente de pesquisa elástica

Implantar:

como reverter uma string em python

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

Valide os registros

$ kubectl registra fluentd-lwbt6 -n kube-system | Conexão grep

Você deverá ver que o Fluentd se conecta ao Elasticsearch nos logs:

Etapa 4: visualize os dados do kubernetes em Kibana

  1. Conecte-se à URL do painel kibana para obter do console Amazon ES
  2. Para ver os registros coletados pela Fluentd em Kibana, clique em “Gerenciamento” e selecione “Padrões de índice” em “Kibana”
  3. escolha o padrão de índice padrão (logstash- *)
  4. Clique em Próxima etapa e defina o “Nome do campo de filtro de tempo” (@timestamp) e escolha Criar padrão de índice
  5. Clique em Descobrir para ver os registros do seu aplicativo
  6. Clique em Visualizar e selecione criar uma visualização e escolha Pizza. Preencha os campos a seguir conforme mostrado abaixo.
    • Selecione o índice Logstash- * e clique em fatias de divisão
    • Agregação - termos significativos
    • Field = Kubernetes.pod_name.keyword
    • Tamanho - 10

7. E Aplicar Mudanças

É isso aí! É assim que você pode visualizar o Pod Kubernetes criado em Kibana.

Resumo :

O monitoramento por análise de log é um componente crítico de qualquer implantação de aplicativo. Você pode coletar e consolidar registros em seu cluster no Kubernetes para monitorar todo o cluster em um único painel. Em nosso exemplo, vimos o fluentd atuar como um mediador entre o cluster do kubernetes e o Amazon ES. O Fluentd combina coleta e agregação de logs e envia logs para o Amazon ES para análise de logs e visualização de dados com kibana.

O exemplo acima mostra como adicionar o registro de pesquisa do AWS Elastic e o monitoramento de kibana ao cluster de kubernetes usando fluentd.

Se você achou este blog do Kubernetes relevante, confira o pela Edureka, uma empresa de aprendizagem online confiável com uma rede de mais de 250.000 alunos satisfeitos espalhados por todo o mundo.

Tem alguma questão para nós? Mencione isso na seção de comentários e entraremos em contato com você.