Kubernetes 클러스터 이벤트를 실시간으로 시각화하는 방법



이 블로그 게시물에서는 Fluentd 로깅 에이전트를 사용하여 Kubernetes 클러스터 이벤트 데이터를 Amazon Elastic Search에 게시하는 방법을 배우게됩니다.

이 기사에서는 Kubernetes 클러스터 이벤트 데이터를 Amazon에 게시하는 방법을 알아 봅니다. Fluentd 로깅 에이전트를 사용합니다. 데이터는 다음을 사용하여 볼 수 있습니다. , Elasticsearch 용 오픈 소스 시각화 도구입니다. Amazon ES는 통합 된 Kibana 통합으로 구성됩니다.

다음 프로세스를 안내합니다.





1 단계 : Kubernetes 클러스터 생성

Kubernetes는 컨테이너화 된 애플리케이션을 관리하기 위해 Google에서 만든 오픈 소스 플랫폼입니다. 이를 통해 클러스터 된 환경에서 컨테이너화 된 앱을 관리, 확장 및 배포 할 수 있습니다. 다양한 호스트에서 컨테이너를 오케스트레이션 할 수 있습니다. 주지사 , 모든 리소스로 컨테이너화 된 앱을 즉시 확장하고 중앙 집중식 컨테이너 관리 환경을 갖출 수 있습니다.

Kubernetes 클러스터 생성부터 시작하여 CentOS 7에 Kubernetes를 설치하고 구성하는 방법을 단계별로 보여 드리겠습니다.



Windows 10에서 Java의 클래스 경로를 설정하는 방법

하나. 호스트 구성

    • vi / etc / hosts
    • 호스트 파일의 호스트 세부 정보에 따라 변경

IMG1-Elasticsearch-Edureka

2. 아래 명령을 실행하여 SELinux를 비활성화하십시오.



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

삼. br_netfilter 커널 모듈 활성화

kubernetes 설치에는 br_netfilter 모듈이 필요합니다. 아래 명령을 실행하여 br_netfilter 커널 모듈을 활성화합니다.
    • modprobe br_netfilter
    • echo‘1’> / proc / sys / net / bridge / bridge-nf-call-iptables

네. 아래 명령을 실행하여 SWAP를 비활성화하십시오.

    • 스왑 오프 -a
    • 그런 다음 / etc / fstab을 편집하고 스왑 라인을 주석 처리하십시오.

5. 최신 버전의 Docker CE를 설치합니다.아래 명령을 실행하여 docker-ce에 대한 패키지 종속성을 설치하십시오.

    • yum install -y yum-utils device-mapper-persistent-data lvm2
시스템에 docker 저장소를 추가하고 yum 명령을 사용하여 docker-ce를 설치하십시오.

6. Kubernetes 설치

다음 명령을 사용하여 kubernetes 저장소를 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
설치 아래 yum 명령을 실행하여 kubeadm, kubelet 및 kubectl 패키지를 사용하십시오.
  • systemctl start docker && systemctl enable docker

설치가 완료된 후 모든 서버를 다시 시작하십시오.다시 시작한 후 서비스 docker 및 kubelet을 시작하십시오.

  • systemctl start docker && systemctl enable docker
  • systemctl start kubelet && systemctl enable kubelet
7. Kubernetes 클러스터 초기화 마스터 서버에 로그인하고 아래 명령을 실행하십시오.
  • systemctl start kubelet && systemctl enable kubelet
Kubernetes 초기화가 완료되면 결과를 얻을 수 있습니다.얻은 결과에서 명령을 복사하고 실행하여 클러스터 사용을 시작하십시오. 결과에서 kubeadm join 명령을 기록해 둡니다. 이 명령은 kubernetes 클러스터에 새 노드를 등록하는 데 사용됩니다. 8. kubernetes 클러스터에 플란넬 네트워크 배포 kubectl apply -f

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

플란넬 네트워크가 Kubernetes 클러스터에 배포되었습니다. 잠시 기다린 후 아래 명령을 사용하여 kubernetes 노드 및 포드를 확인하십시오.
    • kubectl get 노드
    • kubectl get pods –all-namespaces
그리고 'k8s-master'노드가 '준비'상태의 '마스터'클러스터로 실행되고 네트워크 포드에 대한 'kube-flannel-ds'를 포함하여 클러스터에 필요한 모든 포드를 얻게됩니다. 구성.

9. 클러스터에 노드 추가node01 서버에 연결하고 kubeadm join 명령을 실행합니다.

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

node02 서버에 연결하고 kubeadm join 명령을 실행합니다.

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

잠시 기다린 후‘k8s-master’마스터 클러스터 서버를 확인하고 다음 명령을 사용하여 노드와 포드를 확인합니다.

      • kubectl get 노드

이제 worker1과 worker2가 '준비'상태로 클러스터에 추가되었습니다.

      • kubectl get pods –all-namespaces

Kubernetes 클러스터 마스터 초기화 및 구성이 완료되었습니다.

2 단계 : Amazon ES 클러스터 생성

Elasticsearch는 애플리케이션의 로그 분석 및 실시간 모니터링에 사용되는 오픈 소스 검색 및 분석 엔진입니다. Amazon Elasticsearch Service (Amazon ES)는 AWS 클라우드에서 Elasticsearch의 배포, 운영 및 확장을 허용하는 AWS 서비스입니다. Amazon ES를 사용하여 Amazon SES의 이메일 전송 이벤트를 분석 할 수 있습니다.

Amazon ES 클러스터를 생성 한 다음 Fluentd 로깅 에이전트를 Kubernetes 클러스터에 배포하여 로그를 수집하고 Amazon ES 클러스터로 보냅니다.

이 섹션에서는 Amazon ES 콘솔을 사용하여 Amazon ES 클러스터를 생성하는 방법을 보여줍니다.

Amazon ES 클러스터를 생성하려면

    1. AWS Management 콘솔에 로그인하고 다음에서 Amazon Elasticsearch Service 콘솔을 엽니 다. https://console.aws.amazon.com/es/
    2. 고르다 새 도메인을 생성하고 배포 유형 선택 Amazon ES 콘솔에서.
    3. 버전에서 Elasticsearch 버전 필드의 기본값을 그대로 둡니다.
    4. 다음 선택
    5. Elastic Search 도메인의 이름을 클러스터 구성 페이지 아래 도메인 구성.
    6. 클러스터 구성 페이지의 데이터 인스턴스에서 다음 옵션을 선택하십시오.
      • 인스턴스 유형 – t2.micro.elasticsearch (프리 티어 적격)를 선택합니다.
      • 인스턴스 수 -하나
    7. 아래에전용 마스터 인스턴스
      • 전용 마스터 활성화 –이 옵션을 활성화하지 마십시오.
      • 영역 인식 활성화 –이 옵션을 활성화하지 마십시오..
    8. 스토리지 구성에서 다음 옵션을 선택합니다.
      • 저장 유형 – EBS를 선택합니다. EBS 설정의 경우 EBS 볼륨 유형의 범용 (SSD) 및 EBS 볼륨 크기를 선택합니다.& thinsp10의.
    9. 암호화 중 – 이 옵션을 활성화하지 마십시오
    10. 스냅 샷 구성에서
      • 자동화 된 스냅 샷 시작 시간 – Automated snapshots start hour 00:00 UTC (기본값)를 선택합니다.
    11. 다음 선택
    12. 네트워크 구성에서 VPC 액세스를 선택하고 아래 표시된 VPC에 따라 세부 정보를 선택합니다.Kibana 인증에서 : –이 옵션을 활성화하지 마십시오.
    13. 액세스 정책을 설정하려면 도메인에 대한 오픈 액세스 허용을 선택합니다.참고 :-프로덕션에서는 특정 IP 주소 또는 범위에 대한 액세스를 제한해야합니다.
    14. 다음을 선택하십시오.
    15. 검토 페이지에서 설정을 검토 한 다음 확인 및 만들기를 선택합니다.

참고 : 클러스터를 배포하는 데 최대 10 분이 걸립니다. 생성 된 탄력적 검색 도메인을 클릭하면 Kibana URL을 기록해 둡니다.

3 단계 : Kubernetes 클러스터에 Fluentd 로깅 에이전트 배포

Fluentd는 데이터 수집 및 소비를 통합하여 데이터를 더 잘 사용하고 이해할 수있는 오픈 소스 데이터 수집기입니다. 이 경우 로그 파일을 수집하여 Amazon Elastic Search로 전송하는 Kubernetes 클러스터에 Fluentd 로깅을 배포합니다.

클러스터에 대한 가져 오기, 나열 및 감시 요청을 만들기 위해 포드 및 네임 스페이스 개체에 대한 권한을 제공하는 ClusterRole을 만듭니다.

먼저 Fluentd가 적절한 구성 요소에 액세스 할 수 있도록 RBAC (역할 기반 액세스 제어) 권한을 구성해야합니다.

1.fluentd-rbac.yaml :

apiVersion : v1 종류 : ServiceAccount 메타 데이터 : 이름 : fluentd 네임 스페이스 : kube-system --- apiVersion : rbac.authorization.k8s.io/v1beta1 종류 : ClusterRole 메타 데이터 : 이름 : fluentd 네임 스페이스 : kube-system 규칙 :-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 주제 :-종류 : ServiceAccount 이름 : fluentd 네임 스페이스 : kube-system

만들기 : $ kubectl create -f kubernetes / fluentd-rbac.yaml
이제 DaemonSet을 만들 수 있습니다.

2. fluentd-daemonset.yaml

apiVersion : extensions / v1beta1 종류 : DaemonSet 메타 데이터 : 이름 : fluentd 네임 스페이스 : kube-system 라벨 : k8s-app : fluentd-logging 버전 : v1 kubernetes.io/cluster-service : 'true'사양 : 템플릿 : 메타 데이터 : 라벨 : k8s -app : fluentd-logging 버전 : v1 kubernetes.io/cluster-service : 'true'spec : serviceAccount : fluentd serviceAccountName : fluentd tolerations :-key : node-role.kubernetes.io/master 효과 : NoSchedule 컨테이너 :-이름 : fluentd 이미지 : fluent / fluentd-kubernetes-daemonset : v1.3-debian-elasticsearch env :-이름 : FLUENT_ELASTICSEARCH_HOST 값 : 'elasticsearch.logging'-이름 : FLUENT_ELASTICSEARCH_PORT 값 : '9200'-이름 : FLUENT_ELASTICSEARCH_SCHEME 값 : 'http'- 이름 : FLUENT_UID 값 : '0'리소스 : 제한 : 메모리 : 200Mi 요청 : cpu : 100m 메모리 : 200Mi volumeMounts :-이름 : varlog mountPath : / var / log-이름 : varlibdockercontainers mountPath : / var / lib / docker / containers readOnly : true terminateGracePeriodSeconds : 30 개 볼륨 :-이름 : varlog hostPath : 경로 : / var / log-이름 : varlibdockercontainers hostPath : 경로 : / var / lib / docker / containers

탄력적 검색 환경에 따라 FLUENT_ELASTICSEARCH_HOST 및 FLUENT_ELASTICSEARCH_PORT를 정의해야합니다.

배포 :

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

로그 유효성 검사

$ kubectl 로그 fluentd-lwbt6 -n kube-system | grep 연결

Fluentd가 로그 내에서 Elasticsearch에 연결되는 것을 확인해야합니다.

4 단계 : Kibana에서 kubernetes 데이터 시각화

  1. Amazon ES 콘솔에서 가져 오려면 Kibana 대시 보드 URL에 연결
  2. Kibana에서 Fluentd가 수집 한 로그를 보려면 '관리'를 클릭 한 다음 'Kibana'에서 '인덱스 패턴'을 선택하십시오.
  3. 기본 인덱스 패턴 (logstash- *) 선택
  4. 다음 단계를 클릭하고 '시간 필터 필드 이름'(@timestamp)을 설정하고 인덱스 패턴 생성을 선택합니다.
  5. 애플리케이션 로그를 보려면 검색을 클릭하십시오.
  6. 시각화를 클릭하고 시각화 만들기를 선택한 다음 원형을 선택합니다. 아래와 같이 다음 필드를 채우십시오.
    • Logstash- * 인덱스를 선택하고 분할 슬라이스를 클릭하십시오.
    • 집계 – 중요한 용어
    • 필드 = Kubernetes.pod_name.keyword
    • 크기 – 10

7. 변경 사항 적용

그게 다야! 이것이 Kibana에서 생성 된 Kubernetes Pod를 시각화하는 방법입니다.

요약 :

로그 분석을 통한 모니터링은 모든 응용 프로그램 배포의 중요한 구성 요소입니다. Kubernetes의 클러스터 전체에서 로그를 수집하고 통합하여 단일 대시 보드에서 전체 클러스터를 모니터링 할 수 있습니다. 이 예에서는 fluentd가 kubernetes 클러스터와 Amazon ES 사이의 중재자 역할을하는 것을 보았습니다. Fluentd는 로그 수집 및 집계를 결합하고 로그 분석 및 Kibana를 사용한 데이터 시각화를 위해 Amazon ES로 로그를 보냅니다.

위의 예는 fluentd를 사용하여 kubernetes 클러스터에 AWS Elastic 검색 로깅 및 키바 나 모니터링을 추가하는 방법을 보여줍니다.

이 Kubernetes 블로그와 관련이 있다고 생각되면 전 세계에 걸쳐 250,000 명 이상의 만족 한 학습자 네트워크를 보유한 신뢰할 수있는 온라인 학습 회사 인 Edureka에서 작성했습니다.

질문이 있으십니까? 의견란에 언급 해 주시면 연락 드리겠습니다.