이 기사에서는 Kubernetes 클러스터 이벤트 데이터를 Amazon에 게시하는 방법을 알아 봅니다. Fluentd 로깅 에이전트를 사용합니다. 데이터는 다음을 사용하여 볼 수 있습니다. , Elasticsearch 용 오픈 소스 시각화 도구입니다. Amazon ES는 통합 된 Kibana 통합으로 구성됩니다.
다음 프로세스를 안내합니다.
- Kubernetes 클러스터 생성
- Amazon ES 클러스터 생성
- Kubernetes 클러스터에 Fluentd 로깅 에이전트 배포
- Visualize kubernetes date in Kibana
1 단계 : Kubernetes 클러스터 생성
Kubernetes는 컨테이너화 된 애플리케이션을 관리하기 위해 Google에서 만든 오픈 소스 플랫폼입니다. 이를 통해 클러스터 된 환경에서 컨테이너화 된 앱을 관리, 확장 및 배포 할 수 있습니다. 다양한 호스트에서 컨테이너를 오케스트레이션 할 수 있습니다. 주지사 , 모든 리소스로 컨테이너화 된 앱을 즉시 확장하고 중앙 집중식 컨테이너 관리 환경을 갖출 수 있습니다.
Kubernetes 클러스터 생성부터 시작하여 CentOS 7에 Kubernetes를 설치하고 구성하는 방법을 단계별로 보여 드리겠습니다.
Windows 10에서 Java의 클래스 경로를 설정하는 방법
하나. 호스트 구성
- vi / etc / hosts
- 호스트 파일의 호스트 세부 정보에 따라 변경
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
- yum-config-manager – add-repo https://download.docker.com/linux/centos/docker-ce.repo
- yum install -y 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
- systemctl start kubelet && systemctl enable kubelet
https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
플란넬 네트워크가 Kubernetes 클러스터에 배포되었습니다. 잠시 기다린 후 아래 명령을 사용하여 kubernetes 노드 및 포드를 확인하십시오.- kubectl get 노드
- kubectl get pods –all-namespaces
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 클러스터를 생성하려면
- AWS Management 콘솔에 로그인하고 다음에서 Amazon Elasticsearch Service 콘솔을 엽니 다. https://console.aws.amazon.com/es/
- 고르다 새 도메인을 생성하고 배포 유형 선택 Amazon ES 콘솔에서.
- 버전에서 Elasticsearch 버전 필드의 기본값을 그대로 둡니다.
- 다음 선택
- Elastic Search 도메인의 이름을 클러스터 구성 페이지 아래 도메인 구성.
- 클러스터 구성 페이지의 데이터 인스턴스에서 다음 옵션을 선택하십시오.
- 인스턴스 유형 – t2.micro.elasticsearch (프리 티어 적격)를 선택합니다.
- 인스턴스 수 -하나
- 아래에전용 마스터 인스턴스
- 전용 마스터 활성화 –이 옵션을 활성화하지 마십시오.
- 영역 인식 활성화 –이 옵션을 활성화하지 마십시오..
- 스토리지 구성에서 다음 옵션을 선택합니다.
- 저장 유형 – EBS를 선택합니다. EBS 설정의 경우 EBS 볼륨 유형의 범용 (SSD) 및 EBS 볼륨 크기를 선택합니다.& thinsp10의.
- 암호화 중 – 이 옵션을 활성화하지 마십시오
- 스냅 샷 구성에서
- 자동화 된 스냅 샷 시작 시간 – Automated snapshots start hour 00:00 UTC (기본값)를 선택합니다.
- 다음 선택
- 네트워크 구성에서 VPC 액세스를 선택하고 아래 표시된 VPC에 따라 세부 정보를 선택합니다.Kibana 인증에서 : –이 옵션을 활성화하지 마십시오.
- 액세스 정책을 설정하려면 도메인에 대한 오픈 액세스 허용을 선택합니다.참고 :-프로덕션에서는 특정 IP 주소 또는 범위에 대한 액세스를 제한해야합니다.
- 다음을 선택하십시오.
- 검토 페이지에서 설정을 검토 한 다음 확인 및 만들기를 선택합니다.
참고 : 클러스터를 배포하는 데 최대 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 데이터 시각화
- Amazon ES 콘솔에서 가져 오려면 Kibana 대시 보드 URL에 연결
- Kibana에서 Fluentd가 수집 한 로그를 보려면 '관리'를 클릭 한 다음 'Kibana'에서 '인덱스 패턴'을 선택하십시오.
- 기본 인덱스 패턴 (logstash- *) 선택
- 다음 단계를 클릭하고 '시간 필터 필드 이름'(@timestamp)을 설정하고 인덱스 패턴 생성을 선택합니다.
- 애플리케이션 로그를 보려면 검색을 클릭하십시오.
- 시각화를 클릭하고 시각화 만들기를 선택한 다음 원형을 선택합니다. 아래와 같이 다음 필드를 채우십시오.
- 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에서 작성했습니다.
질문이 있으십니까? 의견란에 언급 해 주시면 연락 드리겠습니다.