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/
'Come on IT > DevOps' 카테고리의 다른 글
쿠버네티스(K8s) 명령어 정리 (1) | 2024.10.01 |
---|---|
K8s CrashLoopBackOff 해결 방법 (0) | 2024.09.30 |
최신 kubernetes(쿠버네티스) 설치 방법 (feat. Ubuntu) (1) | 2024.09.29 |
dial tcp 127.0.0.1:10248: connect: connection refused 해결방법 (0) | 2024.09.29 |
[ERROR Port-10250]: Port 10250 is in use 해결방법 (feat. K8s) (0) | 2024.09.29 |