본문 바로가기

리눅스

[draft] Kubernetes Dashboard 설치

728x90

Kubernetes Dashboard 설치

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

Kubernetes Dashboard의 Helm Chart 저장소 추가

helm repo add kubernetes-dashboard https://kubernetes.github.io/dashboard/

Helm Chart 저장소 목록 확인

helm repo list
NAME                    URL                                    
kubernetes-dashboard    https://kubernetes.github.io/dashboard/

또는

helm ls -n kubernetes-dashboard

Kubernetes Dashboard를 설치하거나 이미 설치된 경우 업그레이드

helm upgrade --install kubernetes-dashboard kubernetes-dashboard/kubernetes-dashboard --create-namespace --namespace kubernetes-dashboard
Release "kubernetes-dashboard" does not exist. Installing it now.
NAME: kubernetes-dashboard
LAST DEPLOYED: Thu Aug 29 08:50:39 2024
NAMESPACE: kubernetes-dashboard
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
*************************************************************************************************
*** PLEASE BE PATIENT: Kubernetes Dashboard may need a few minutes to get up and become ready ***
*************************************************************************************************

Congratulations! You have just installed Kubernetes Dashboard in your cluster.

To access Dashboard run:
  kubectl -n kubernetes-dashboard port-forward svc/kubernetes-dashboard-kong-proxy 8443:443

NOTE: In case port-forward command does not work, make sure that kong service name is correct.
      Check the services in Kubernetes Dashboard namespace using:
        kubectl -n kubernetes-dashboard get svc

Dashboard will be available at:
  https://localhost:8443

kubernetes dashboard 네임스페이스 확인

kubectl get svc -n kubernetes-dashboard
NAME                                   TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)                         AGE
kubernetes-dashboard-api               ClusterIP   10.104.190.121   <none>        8000/TCP                        105s
kubernetes-dashboard-auth              ClusterIP   10.98.208.61     <none>        8000/TCP                        105s
kubernetes-dashboard-kong-manager      NodePort    10.109.77.170    <none>        8002:30959/TCP,8445:30358/TCP   106s
kubernetes-dashboard-kong-proxy        ClusterIP   10.97.249.125    <none>        443/TCP                         105s
kubernetes-dashboard-metrics-scraper   ClusterIP   10.106.60.211    <none>        8000/TCP                        105s
kubernetes-dashboard-web               ClusterIP   10.108.184.112   <none>        8000/TCP                        105s

모든 파드의 컨테이너 이미지 버전 출력

kubectl -n kubernetes-dashboard get pods -o jsonpath="{range .items[*].spec.containers[*]}{.image}{'\n'}{end}"
docker.io/kubernetesui/dashboard-api:1.7.0
docker.io/kubernetesui/dashboard-auth:1.1.3
kong:3.6
docker.io/kubernetesui/dashboard-metrics-scraper:1.1.1
docker.io/kubernetesui/dashboard-web:1.4.0

2. 접근 권한 설정

Kubernetes Dashboard에 접근하기 위해서는 적절한 권한을 가진 사용자 계정이 필요합니다. 다음과 같이 관리자가 사용할 ServiceAccount를 생성하고 ClusterRoleBinding을 설정할 수 있습니다.

 

관리자 서비스 계정 생성(Service Account 생성)

cat <<EOF | kubectl create -f -
 apiVersion: v1
 kind: ServiceAccount
 metadata:
   name: admin-user
   namespace: kubernetes-dashboard
EOF

관리자 권한 부여(Cluster Role Binding 생성)

cat <<EOF | kubectl create -f -
 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
EOF

로그인 토큰 발급

  • Dashboard에 로그인하려면 토큰이 필요합니다.
kubectl create token admin-user -n kubernetes-dashboard
728x90

3. 외부 접근을 위한 포트 포워딩 또는 NodePort 설정

쿠버네티스 대시보드를 외부에서 접근할 수 있도록 포트 포워딩 또는 NodePort를 설정합니다.

포트 포워딩(Proxy 설정)

Kubernetes Dashboard에 접근하기 위해 포트 포워딩을 설정해야 합니다.

kubectl -n kubernetes-dashboard port-forward --address 0.0.0.0 svc/kubernetes-dashboard-kong-proxy 8443:443
$ kubectl -n kubernetes-dashboard port-forward --address 0.0.0.0 svc/kubernetes-dashboard-kong-proxy 8443:443
Forwarding from 0.0.0.0:8443 -> 8443
  • 백그라운드 실행
nohup kubectl -n kubernetes-dashboard port-forward --address 0.0.0.0 svc/kubernetes-dashboard-kong-proxy 8443:443 > port-forward.log 2>&1 &

웹 브라우저에서 대시보드 열기

https://localhost:8443

NodePort 설정

NodePort를 사용하여 외부에서 접근할 수 있도록 설정합니다.

kubectl get service kubernetes-dashboard-kong-proxy -n kubernetes-dashboard
NAME                       TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)    AGE
kubernetes-dashboard-web   ClusterIP   10.108.184.112   <none>        8000/TCP   29m

kubernetes-dashboard 편집

kubectl edit service kubernetes-dashboard-kong-proxy -n kubernetes-dashboard
  • type: ClusterIP -> type: NodePort 변경

NodePort 확인

kubectl get service kubernetes-dashboard-kong-proxy -n kubernetes-dashboard

또는 NodePort를 사용자 지정할 수도 있습니다.

  • 아래 명령어를 실행하여 YAML 파일을 편집한 후 nodePort 값을 원하는 포트로 설정할 수 있습니다.
kubectl edit service kubernetes-dashboard-kong-proxy -n kubernetes-dashboard
  • nodePort: 31978 -> nodePort: 30001 변경

NodePort 확인

kubectl get service kubernetes-dashboard-kong-proxy -n kubernetes-dashboard
NAME                              TYPE       CLUSTER-IP      EXTERNAL-IP   PORT(S)         AGE
kubernetes-dashboard-kong-proxy   NodePort   10.108.53.117   <none>        443:30001/TCP   45m

 

kubernetes dashboard error

Unknown error (200): Http failure during parsing for http://192.168.0.131:30001/api/v1/csrftoken/login

kubernetes-dashboard

대시보드 접속

대시보드 로그인 화면에서 앞서 생성한 인증 토큰을 사용하여 로그인합니다.

kubectl create token admin-user -n kubernetes-dashboard

웹 브라우저

https://{NODE_IP}:30001

kubernetes-dashboard

대시보드

  • 쿠버네티스 대시보드 > 모든 네임스페이스

kubernetes-dashboard

쿠버네티스 대시보드 삭제

Helm 릴리스 삭제

helm uninstall kubernetes-dashboard --namespace kubernetes-dashboard

네임스페이스 삭제 (선택 사항)

kubectl delete namespace kubernetes-dashboard

리소스 확인

kubectl get all -n kubernetes-dashboard

외부에서 쿠버네티스 대시보드에 접근할 수 있습니다.

 

참고URL

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

- GitHub repository : kubernetes dashboard releases

 

728x90