vRealize Log Insight 8.4 릴리스에서는 Log Insight로 로그를 전송하도록 컨테이너 로그 소스를 구성하는 방법에 대한 제품 내 설명서를 제공하는 Log Source를 추가했습니다. Tanzu Kubernetes Grid 클러스터의 로깅 구성에 대한 몇 가지 질문이 있어, 저는 단계와 예상 결과를 살펴볼 수 있는 간단한 블로그를 쓰고 싶었습니다. 이미 몇 개의 블로그가 있지만, 이 게시물에서는 Log Insight의 초기 버전 설정에 초점을 맞출 것입니다.
CLI 도구 설치
먼저 리눅스 또는 윈도우즈 워크스테이션에 CLI 도구를 설치해야 합니다. 이 기능은 TKG가 배포된 vCenter의 클러스터 보기에서 사용할 수 있습니다. (Menu > Workload Management > Summary 탭)
지침에 따라 해당 OS에 CLI 도구를 설치합니다.
클러스터에 연결
랩 환경에서 근무하기 때문에 인증서를 사용하지 않으므로 TLS를 우회하기 위해 줄을 추가합니다.
kubectl-vsphere.exe login --insecure-skip-tls-verify --server https://10.0.0.54 --vsphere-username jroman@cmbu.local --tanzu-kubernetes-cluster-name fd-cluster-cluster --tanzu-kubernetes-cluster-namespace field-demo-clusters
암호를 입력하라는 메시지가 표시됩니다. 암호를 입력하면 계정에 액세스 권한이 있는 컨텍스트 목록이 표시됩니다.
Password: Logged in successfully. You have access to the following contexts: 10.176.192.50 10.176.192.52 10.176.193.1 auctionw1 fd-cluster-dev field-demo-clusters
로그 원본 문서로 이동
로그 원본에는 로그를 전달하는 데 필요한 구성 파일을 생성하는 데 필요한 정보가 있습니다. Log Insight 배포에 로그인하고 Log Source > Containers > Tanzu Kubernetes Grid로 이동합니다. vSphere 7.0 이상에서 TKG를 사용하는 경우 Fluentd를 설치할 필요가 없습니다. 이미 설치되어 있습니다. ConfigMap을 적용하려면 fluent.conf 파일을 만들어야 합니다. 1단계의 텍스트를 새 파일에 복사하고 fluent.conf라는 이름을 붙이면 됩니다. vSphere 6.7을 실행하는 경우 다음 지침을 사용하여 Fluentd를 설치할 수 있습니다.
ConfigMap 업데이트/생성
fluent.conf 파일에서 다음 코드 블록을 확인하고 그에 따라 업데이트합니다. SSL을 사용하지 않기 때문에 구성을 https에서 http로 변경하고 호스트의 FQDN 또는 IP를 추가하고 포트를 9543에서 9000으로 변경할 예정입니다.
@type vmware_loginsight
scheme http
ssl_verify false
host li-host.domain.com
port 9000
http_method post
serializer json
rate_limit_msec 0
raise_on_error true
include_tag_key true
tag_key tag
http_conn_debug false
필요한 매개 변수를 업데이트하면 이 클러스터에 구성 파일을 적용할 수 있습니다. 로그 소스 설명서에서 구성 맵을 li-fluentd-config vs. login sight-fluentd-config로 전달합니다. (loginsight-fluent.yml에서 구성 맵 이름을 업데이트할 수도 있습니다.) 지침은 8.4.1 릴리스에서 업데이트됩니다.
kubectl -n kube-system create configmap li-fluentd-config --from-file=fluent.conf
다음 출력이 표시되어야 합니다.
configmap/li-fluentd-config created
로그에 대한 액세스 구성
이제 3단계의 내용을 파일 loginsight-fluent.yml로 복사할 수 있습니다. 이렇게 하면 서비스 계정이 생성되고 로그 데이터에 대한 액세스 권한이 부여됩니다. 현재 li-fluentd-config로 설정된 구성 맵의 이름을 변경하지 않는 한 이 파일을 수정할 필요가 없습니다. 다음으로 아래 명령을 실행합니다.
kubectl apply -f loginsight-fluent.yml
다음 출력이 표시되어야 합니다.
clusterrole.rbac.authorization.k8s.io/fluentd created
clusterrolebinding.rbac.authorization.k8s.io/fluentd created
daemonset.apps/log-collector created
로그 수집기 컨테이너가 생성되었는지 확인
실행:
kubectl get pods --all-namespaces | grep log
로그 수집기 컨테이너가 실행 중인지 확인해야 합니다.
NAMESPACE NAME READY STATUS RESTARTS AGE kube-system log-collector-kqlv5 1/1 Running 0 13s kube-system log-collector-lffwz 1/1 Running 0 13s kube-system log-collector-xrvv6 1/1 Running 0 13s
ConfigMap(fluent.conf)을 생성하고 로그 전달을 구성할 각 클러스터에 대해 액세스 제어(loginsight-fluent.yml)를 적용합니다.
로그 흐름 확인
fluent.conf 파일은 데이터를 쉽게 필터링할 수 있도록 로그에 태그를 지정합니다.
environment tanzu_k8s_grid
log_type kubernetes
kube로 log_type start를 검색하고 네임스페이스별로 로그를 봅니다.
문제 해결
문제가 발생하거나 구성을 변경해야 할 경우 몇 가지 사항을 문서화했습니다.
구성 검토 또는 제거
kubectl get configmap -n kube-system
kubectl -n kube-system delete configmap li-fluentd-config
kubectl delete -f fluent.yml
Context 변경 또는 가져오기
kubectl config get-contexts
kubectl config use-context
컨테이너 로그 보기
kubectl logs log-collector-7xtkz -n kube-system
이벤트 보기
예를 들어 “kubectl get pods”를 실행한 후 실행 이외의 상태가 표시되는 경우. 종료, 충돌 루프 백오프, 오류 이미지 풀 등…
실행:
kubectl get events --all-namespaces -sort-by+'.metadata.creationTimestamp'
이렇게 하면 컨테이너가 올바르게 전개되지 않은 이유에 대한 자세한 정보가 제공됩니다.
몇 분 안에 TKG 클러스터에 대한 로깅을 설정하는 데 필요한 모든 정보가 포함됩니다!
출처 : https://blogs.vmware.com/management/2021/05/monitoring-tanzu-kubernetes-grid-tkg-clusters-using-vrealize-log-insight.html