본문 바로가기
Come on IT/DevOps

쿠버네티스(K8s) 대시보드 구축 방법

by JONGSKY 2024. 9. 30.
728x90
SMALL

1. 글을 작성하게 된 계기

 

K8s를 구축하면서

각각의 pod나 메모리 등을 확인할 수 있는 대시보드가 필요했습니다.

그래서 이번 정리로는 K8s의 대시보드 구축 방법을 정리하려고 합니다.

 

2. 쿠버네티스 대시보드 설치

 

서비스 설치

kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.7.0/aio/deploy/recommended.yaml

 

 

정상적으로 서비스가 만들어졌는지 확인

 

kubectl get svc -n kubernetes-dashboard

 

외부 접속을 위해 NodePort 설정

 

kubectl edit svc kubernetes-dashboard -n kubernetes-dashboard

 

apiVersion: v1
kind: Service
metadata:
  annotations:
    kubectl.kubernetes.io/last-applied-configuration: |
      {"apiVersion":"v1","kind":"Service","metadata":{"annotations":{},"labels":{"k8s-app":"kubernetes-dashboard"},"name":"kubernetes-dashboard","namespace":"kubernetes-dashboard"},"spec":{"ports":[{"port":443,"targetPort":8443}],"selector":{"k8s-app":"kubernetes-dashboard"}}}
  creationTimestamp: "2023-12-26T07:55:00Z"
  labels:
    k8s-app: kubernetes-dashboard
  name: kubernetes-dashboard
  namespace: kubernetes-dashboard
  resourceVersion: "496361"
  uid: 227af817-5a33-4ce8-a3dd-adb43030d376
spec:
  clusterIP: 10.97.19.146
  clusterIPs:
  - 10.97.19.146
  internalTrafficPolicy: Cluster
  ipFamilies:
  - IPv4
  ipFamilyPolicy: SingleStack
  ports:
  - nodePort: 31000 # 수정
    port: 443
    protocol: TCP
    targetPort: 8443
  selector:
    k8s-app: kubernetes-dashboard
  sessionAffinity: None
  type: NodePort # 수정
status:
  loadBalancer: {}

 

service/kubernetes-dashboard edited 멘트가 나왔다면 성공!

 

변경사항 확인

kubectl get svc -n kubernetes-dashboard

 

NodeIP + 대쉬보드 NodePort 조합으로 url을 브라우저에 입력

 

예시 링크 : https://192.168.0.11:31000/#login

 

# 설치 파일 생성
vi dashboard-admin.yaml

# dashboard-admin.yaml 입력
apiVersion: v1
kind: ServiceAccount
metadata:
  name: admin-user
  namespace: kubernetes-dashboard
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: admin-user
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
- kind: ServiceAccount
  name: admin-user
  namespace: kubernetes-dashboard
  
# 설치
kubectl apply -f dashboard-admin.yaml

 

- 만들어진 대시보드 토큰 값 생성

 

kubectl -n kubernetes-dashboard create token admin-user

 

 

참고.

 

쿠버네티스 대시보드 삭제 방법

kubectl delete namespace kubernetes-dashboard

 

쿠버네티스 대시보드 실행방법

kubectl proxy

 

Metrics Server 설치

Metrics Server는 CPU 및 메모리 사용량에 대한 실시간 메트릭을 제공하며, Horizontal Pod Autoscaling(HPA) 같은 기능을 사용할 때 필요합니다.

1. Metrics Server 설치 확인

우선, Metrics Server가 클러스터에 설치되었는지 확인해야 합니다. 설치되어 있지 않다면 다음 명령어를 사용해 설치하세요:

kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml
 

Metrics Server는 Kubernetes의 CPU와 메모리 사용량과 같은 메트릭을 수집하여 제공하는 서비스입니다. 설치한 후 몇 분 정도 기다리면 데이터가 수집되기 시작할 것입니다.

2. Metrics Server 상태 확인

Metrics Server가 설치되었는지 확인하려면 다음 명령어로 Metrics Server의 상태를 확인할 수 있습니다:

kubectl get deployment metrics-server -n kube-system

출력 결과로 metrics-server가 설치되었고, 모든 Pod가 정상적으로 동작하고 있는지 확인하세요. 정상적으로 동작하지 않는 경우, 로그를 확인해보세요:

kubectl logs -l k8s-app=metrics-server -n kube-system

3. Metrics Server가 작동하지 않을 때의 일반적인 해결책

만약 Metrics Server가 설치되어 있는데도 여전히 작동하지 않는다면 다음 단계를 시도할 수 있습니다:

 

ClusterRoleBinding 설정: Metrics Server가 충분한 권한을 갖고 있는지 확인하세요. 다음 명령어로 클러스터 관리자 권한을 추가합니다:

 
kubectl create clusterrolebinding metrics-server:system:auth-delegator --clusterrole=system:auth-delegator --serviceaccount=kube-system:metrics-server

 

kubelet 인증 문제 해결: 만약 TLS 인증 문제가 발생하는 경우, Metrics Server가 kubelet API를 올바르게 호출할 수 있도록 kubelet-insecure-tls 옵션을 설정할 수 있습니다. 이 방법은 보안적이지는 않지만 문제를 해결하는 데 도움이 될 수 있습니다.

 

먼저 Metrics Server의 Deployment를 수정하세요:

kubectl edit deployment metrics-server -n kube-system
 
 
그리고 다음 부분을 추가합니다:그런 다음 변경 사항을 저장하고 다시 배포합니다.
 
spec:
  containers:
  - args:
    - --kubelet-insecure-tls

 

 

클러스터가 멀티 노드 환경일 때: 만약 멀티 노드 클러스터를 사용 중이라면 각 노드가 서로 통신할 수 있어야 합니다. 노드 간의 네트워크 구성이 올바른지 확인해보세요. 특히, 네트워크 플러그인 (예: Calico, Flannel)이 정상적으로 작동하는지 확인해야 합니다.

 

4. Metrics Server 상태 확인 후 다시 시도

Metrics Server가 올바르게 작동하고 나면 kubectl top 명령어를 다시 시도하세요:

kubectl top pod -n auw-ai

 

이제 Pod의 CPU와 메모리 사용량이 제대로 출력되어야 합니다.

 

Custom Resource Definitions (CRDs) 활성화

Kubernetes 클러스터에 설치된 Custom Resource Definitions (CRDs)가 있다면, Dashboard에서 이를 모니터링하도록 설정할 수 있습니다. CRD를 설치한 후, Dashboard에서 이를 조회하고 관리할 수 있도록 추가 구성을 해야 합니다.

kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.6.1/aio/deploy/crd.yaml

 

 

https://kubernetes.io/ko/docs/tasks/access-application-cluster/web-ui-dashboard/

 

쿠버네티스 대시보드를 배포하고 접속하기

웹 UI(쿠버네티스 대시보드)를 배포하고 접속한다.

kubernetes.io

 

728x90
LIST