이번 글에서는 Docker desktop으로 k8s를 사용하는 방법과 k8s 대시보드를 연동하는 방법에 대해서 알아보도록 하겠다.
💡 환경
- OS: Ubuntu 24.04 (WSL2)

Docker desktop 홈페이지에서 각자의 OS에 맞는 파일로 Docker desktop을 설치해주자.

Docker desktop 설치 후, '설정'탭에 들어가서 k8s를 활성화해주자.
그러면, k8s 사용을 위한 이미지들이 다운로드 될 것이다.

CLI에서 버전을 찍어보면, 정상적으로 출력되는 것을 확인할 수 있다.
k8s에서는 GUI환경에서 k8s를 사용할 수 있도록 대시보드를 제공하고 있다. 다만, 이것을 실제 상용 환경에서 사용하는 것은 보안적으로 매우 위험하다고 하니, 개발 & 테스트 용으로만 사용하도록 하자!
k8s 대시보드는 공식문서에서 설치 방법을 제공하고 있다.
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.6.1/aio/deploy/recommended.yaml
위 명령어를 실행해서 k8s 대시보드를 배포해주자.
kubectl proxy
위 명령어를 실행하면, 대시보드에 접속이 가능해진다.

대시보드를 띄운 후, 위 경로로 접속하면 대시보드 UI를 확인할 수 있다.

대시보드에 처음 접속하면, 토큰을 입력하거나 설정 파일을 통해서 인증 과정을 거친다. 이 글에서는 토큰을 입력하는 방법을 사용해보도록 할 것인데 그전에 관리자 계정부터 생성해보도록 하겠다.
apiVersion: v1
kind: ServiceAccount
metadata:
name: admin-user
namespace: kubernetes-dashboard
위와 같이 yml파일을 만들어주자.
이는 k8s 클러스터에 ServiceAccount를 생성하기 위한 파일이다.
kubectl apply -f {파일 명}.yaml
그리고, 위 명령어를 통해서 yml을 배포해주자. 그러면, 아래와 같이 ServiceAccount가 잘 생성됐다는 메세지가 출력될 것이다.

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 -n kubernetes-dashboard create token admin-user
그리고 위 명령어를 실행하면, 대시보드 접속을 위한 토큰이 출력된다.


짜잔💡 이제 대시보드 UI에서 토큰을 입력해주면, 이렇게 Welcome UI를 확인할 수 있다.
docker-desktop을 통해서 설치한 k8s를 사용하고 싶지 않다면, minikube를 사용할 수도 있다. 그래서 minikube 설치법을 간단히 정리해보겠다.
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube && rm minikube-linux-amd64
minikube start --force
나는 Ubuntu(WSL)를 개발환경으로 세팅되어 있고, Ubuntu를 사용할 때는 root계정으로 사용하고 있어서, --force 옵션을 붙여서 minikube를 실행해주었다.

그러면, 잠시후 이렇게 정상적으로 실행된 것을 확인할 수 있다.
minikube dashboard
위 명령어를 실행하면, 대시보드가 잘 실행된다.


minikube를 통해서 대시보드를 실행하면, 이전 섹션에서 설치한 k8s 대시보드와 달리 유저 생성 & 로그인 과정을 생략해도 돼서, 좀 더 편라하게 사용할 수 있다.