Information Security Study
240404 쿠버네티스 대시보드로 모니터링하기 본문
쿠버네티스 대시보드로 모니터링하기
모니터링과 옵저버빌리티
모니터링
- 자원 사용량이나 트래픽 등을 수집하고 분석해서 문제 발생 시 경고해 주는 것
- 모니터링은 특정한 주기로 수집되는 로그나 정보를 토대로 수행한다.
- 예측한 문제가 발생했을 때는 신속하고 즉각적으로 알림이 가지만 모니터링 범주를 벗어난 문제에 대해서는 대응이 어렵다.
관측 가능성(옵저버빌리티)
- 시스템에서 외부로 출력되는 값을 활용해서 내부 상태를 추론하는 것
- 내부 시스템에 대한 이해가 뛰어나야 하며 추론에 따라 운영을 자동화한다.
- 대규모 시스템에 적합하고 예방에 초점이 맞춰져 있다.
관측 가능성의 3요소
1) 모니터링
특정 기간 동안 측정된 데이터의 수치 표현한다. 추세 확인, 모델링 및 예측 시 사용한다.
2) 로깅
이벤트의 시간이 포함된 불변의 기록한다. 긴급하며 예측하지 못한 데이터를 분석할 때 사용한다.
3) 트레이싱
요청이 수행된 과정 전체를 가시화하는 데 사용한다. 리소스가 비정상인 경우 절차에 미치는 영향을 파악한다.
위 요소를 확인하기 위해 kubernetes dashboard를 사용했다.
kubernetes dashboard
- 쿠버네티스 클러스터에 대한 대시보드를 웹으로 제공한다.
- 직관적인 접근 방식으로 이해가 쉽고 모든 노드에 대한 지표에 접근할 수 있고 k8s에서 제공하는 거의 모든 자원에 대한 모니터링이 가능하다.
- Helm이라는 도구를 이용해 스크립트가 작성된 YAML파일을 읽어서 설치한다.
swapoff를 한 뒤
kubernetes dashboard 2.7 버전을 설치했다.
위 명령어로 pod 조회를 해보면
kubernetes-dashboard NAMESPACE에 속한 요소 2개가 추가되어 있다.
대시보드에 접속하는 방법
- APIserver를 활용해 보안 접속하기
먼저 접속에 앞서 권한 등에 대해서 살펴볼 것이다.
쿠버네티스 생성 시 자동으로 cluster-admin이라는 권한이 부여된다.
클러스터 전반에 대한 제어권한을 가지고 있는 권한이다.
cluster-admin에 대해서 상세정보를 알아보기 위해 kubectl describe를 활용했다.
. 과 같이 모든 요소에 대한 와일드카드가 찍혀있다.
생성한 파일 내부에는 아래와 같이 작성한다.
해당 권한을 서비스에 추가해 주는 yaml코드를 작성한다.
작성 후 먼저 dashboard-admin-user.yaml에 작성된 코드를 실행하고
ClusterRoleBinding-admin-user.yaml에 작성된 명령어를 실행한다.
kubernetes-dashboard에 관련된 요소를 출력했다.
admin-user를 kubernetes-dashboard에 추가된 것을 확인할 수 있었다.
그다음으로 대시보드에 접근가능한 보안용 토큰을 생성했다.
토큰은 만료기간이 짧아 자주 생성해야 한다.
다음으로. crt파일(인증서 파일)과 .key파일(키 파일)을 생성했다.
cat으로 열어보면 전에 봤던 RSA 암호화 키 비슷한 것들이 들어있는 파일이다.
이제 이렇게 생성한 키값을 이용해 인증서 파일을 만들었다.
다음으로 쿠버네티스 설치 시 자동으로 생성된 인증서 파일을 가져와야 한다.
mobaxterm에서 좌측 탭을 갱신하면 dashboard_rbac 폴더가 보인다.
해당 폴더의 인증서 파일 및 p12파일과 key파일을 외부에 내보내야 대시보드에 접속 가능하다.
해당 폴더 우클릭 후 download를 눌러 내 pc 내로 받아둔다.
이제 이 인증서들을 host에 등록해야 한다.
관리자모드로 cmd를 열어 위 명령을 순차적으로 입력한다.
-p 다음에는 비밀번호를 입력하는데 키 생성 시 사용했던 번호를 입력해야 한다.
등록여부를 확인할 때는
certmgr.msc
를 먼저 입력하고 개인용 인증서 부분과
kubernetes 인증서 2종이 추가로 붙은 것을 확인해 주면 된다.
실습을 여러 번 실행하면 여러 개가 더 등록될 수 있는데 날짜기준으로 체크해서 삭제할 수도 있다.
다음으로 kubectl에서 cluster-info를 조회했다.
CoreDNS로 나오는 부분에 대해서 뒤쪽만 kubernetes-dashboard로 변경하면 된다.
(url은 노션에 작성)
위 주소를 가지고 시크릿 모드 브라우저로 접속했다.
인증서를 고르고 확인을 해준 뒤 위에서 만든 토큰을 하단에 복붙 해서 넣고 로그인을 수행하면 된다.
로그인이 되었다면 대시보드 자체에 접근이 되고 노드 부분으로 들어가서 노드 목록을 볼 수 있다.
제 마지막으로 모니터링이 제대로 되고 있는지 확인하기 위해
pod(도커의 컨테이너와 비슷한 개념)를 하나 생성했다.
pod를 생성하라는 명령을 받으면 ContainerCreating 상태로 처음 진입하고
잠시 뒤 확인해 보니 run으로 바뀌었다.
curl로 위쪽에서 pod의 ip로 제시된 주소를 조회하면 위와 같이 nginx 초기 화면이 나온다.
그리고 대시보드에 다시 접속하면 myweb1 파드가 등장하고
상세 페이지 접근도 가능하다.
'네트워크 캠퍼스 > 쿠버네티스' 카테고리의 다른 글
240411 Kubernetes CNI와 어플리케이션 배포 과정 체험, pod 수명주기 (0) | 2024.04.11 |
---|---|
240405 k9s로 리소스 관리, Kubernetes 엔진 구조, Kubernetes CNI (0) | 2024.04.05 |
240405 프로메테우스와 그라파나로 모니터링 환경 구성하기, Portainer를 활용한 쿠버네티스 클러스터 관리 (0) | 2024.04.05 |
240329 실습 환경 설정(쿠버네티스 설치, 노드 생성과 네트워크 설정), 노드 확장 (1) | 2024.03.29 |
240328 쿠버네티스와 컨테이너 개념, 실습 환경 설정 (가상머신 설정, 쿠버네티스 설치 전 필요 도구 세팅) (0) | 2024.03.29 |