Information Security Study

240404 쿠버네티스 대시보드로 모니터링하기 본문

네트워크 캠퍼스/쿠버네티스

240404 쿠버네티스 대시보드로 모니터링하기

gayeon_ 2024. 4. 4. 20:09

쿠버네티스 대시보드로 모니터링하기

 

모니터링과 옵저버빌리티

모니터링

  • 자원 사용량이나 트래픽 등을 수집하고 분석해서 문제 발생 시 경고해 주는 
  • 모니터링은 특정한 주기로 수집되는 로그나 정보를 토대로 수행한다.
  • 예측한 문제가 발생했을 때는 신속하고 즉각적으로 알림이 가지만 모니터링 범주를 벗어난 문제에 대해서는 대응이 어렵다.

 

관측 가능성(옵저버빌리티)

  • 시스템에서 외부로 출력되는 값을 활용해서 내부 상태를 추론하는 것
  • 내부 시스템에 대한 이해가 뛰어나야 하며 추론에 따라 운영을 자동화한다.
  • 대규모 시스템에 적합하고 예방에 초점이 맞춰져 있다.

 

 

관측 가능성의 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 파드가 등장하고

 

 

 

상세 페이지 접근도 가능하다.