[Kubernetes] minikube 대시보드 활성화 과정

blog post 

 

이번 포스트는 이전 포스트에 이어서, 설치한 minikube를 기반으로 대시보드를 구축해 보겠습니다. 대시보드에서도 약간의 삽질 과정이 있어서 따로 다뤄보았습니다. 이전 포스트가 궁금하신 분들은 아래 포스트를 보고 오시기 바랍니다.

 

[Kubernetes] 첫 시작. Minikube 설치 삽질 과정 (feat. docker)

blog post 오픈스택을 멀티 노드로 구성하는 과정에서 간단한 테스트 용 컨테이너가 필요하여 도커를 구축해 보기로 하였습니다. 단순히 도커만 설치하는 것이 아니라 쿠버네티스도 사용해 볼 겸,

itguava.tistory.com

 

이전 포스트에서 첫 minikube 설치를 마치고 아래와 같이 대시보드를 실행해보니 에러가 발생했습니다.

 

[user@Compute0 /]$ minikube dashboard
* 대시보드를 활성화하는 중 ...
* 
* [DASHBOARD_ROLE_REF] Unable to enable dashboard run callbacks: running callbacks: [sudo KUBECONFIG=/var/lib/minikube/kubeconfig /var/lib/minikube/binaries/
v1.18.2/kubectl apply -f /etc/kubernetes/addons/dashboard-ns.yaml -f /etc/kubernetes/addons/dashboard-clusterrole.yaml -f /etc/kubernetes/addons/dashboard-cl
usterrolebinding.yaml -f /etc/kubernetes/addons/dashboard-configmap.yaml -f /etc/kubernetes/addons/dashboard-dp.yaml -f /etc/kubernetes/addons/dashboard-role
.yaml -f /etc/kubernetes/addons/dashboard-rolebinding.yaml -f /etc/kubernetes/addons/dashboard-sa.yaml -f /etc/kubernetes/addons/dashboard-secret.yaml -f /et
c/kubernetes/addons/dashboard-svc.yaml: Process exited with status 1
stdout:
namespace/kubernetes-dashboard unchanged
clusterrole.rbac.authorization.k8s.io/kubernetes-dashboard unchanged
configmap/kubernetes-dashboard-settings unchanged
deployment.apps/dashboard-metrics-scraper unchanged
deployment.apps/kubernetes-dashboard unchanged
role.rbac.authorization.k8s.io/kubernetes-dashboard unchanged
rolebinding.rbac.authorization.k8s.io/kubernetes-dashboard unchanged
serviceaccount/kubernetes-dashboard unchanged
secret/kubernetes-dashboard-certs unchanged
secret/kubernetes-dashboard-csrf unchanged
secret/kubernetes-dashboard-key-holder unchanged
service/kubernetes-dashboard unchanged
service/dashboard-metrics-scraper unchanged

stderr:
The ClusterRoleBinding "kubernetes-dashboard" is invalid: roleRef: Invalid value: rbac.RoleRef{APIGroup:"rbac.authorization.k8s.io", Kind:"ClusterRole", Name
:"cluster-admin"}: cannot change roleRef
]
* Suggestion: Run: 'kubectl delete clusterrolebinding kubernetes-dashboard'
* Related issue: https://github.com/kubernetes/minikube/issues/7256

 

쿠버네티스가 좋은 점은, 오픈스택과 달리 에러가 발생하면 추천 명령어를 제시하네요. (이런건 오픈스택도 배워야할듯,,_) 위의 제안대로 쿠버네티스 대시보드의 clusterrolebinding을 제거해 보았습니다.

 

[user@Compute0 /]$ kubectl delete clusterrolebinding kubernetes-dashboard
clusterrolebinding.rbac.authorization.k8s.io "kubernetes-dashboard" deleted

 

하지만 여전히 minikube 에드온 상황을 보니 dashboard가 활성화되어 있지 않았습니다.

 

[user@Compute0 /]$ minikube addons list
|-----------------------------|----------|--------------|
|         ADDON NAME          | PROFILE  |    STATUS    |
|-----------------------------|----------|--------------|
| dashboard                   | minikube | disabled     |
| default-storageclass        | minikube | enabled ✅   |
| efk                         | minikube | disabled     |
| freshpod                    | minikube | disabled     |
| gvisor                      | minikube | disabled     |
| helm-tiller                 | minikube | disabled     |
| ingress                     | minikube | disabled     |
| ingress-dns                 | minikube | disabled     |
| istio                       | minikube | disabled     |
| istio-provisioner           | minikube | disabled     |
| logviewer                   | minikube | disabled     |
| metallb                     | minikube | disabled     |
| metrics-server              | minikube | disabled     |
| nvidia-driver-installer     | minikube | disabled     |
| nvidia-gpu-device-plugin    | minikube | disabled     |
| registry                    | minikube | disabled     |
| registry-aliases            | minikube | disabled     |
| registry-creds              | minikube | disabled     |
| storage-provisioner         | minikube | enabled ✅   |
| storage-provisioner-gluster | minikube | disabled     |
|-----------------------------|----------|--------------|

 

 

 

 

minikube 명령어 옵션을 보니 addon을 enable 할 수 있는 명령이 있는것을 발견하여 활성화 해주었습니다.

 

[user@Compute0 /]$ minikube addons enable dashboard
* The 'dashboard' addon is enabled

 

 다시 확인해보니 활성화 되었네요.

 

[user@Compute0 /]$ minikube addons list
|-----------------------------|----------|--------------|
|         ADDON NAME          | PROFILE  |    STATUS    |
|-----------------------------|----------|--------------|
| dashboard                   | minikube | enabled ✅  |
| default-storageclass        | minikube | enabled ✅  |
| efk                         | minikube | disabled     |
| freshpod                    | minikube | disabled     |
| gvisor                      | minikube | disabled     |
| helm-tiller                 | minikube | disabled     |
| ingress                     | minikube | disabled     |
| ingress-dns                 | minikube | disabled     |
| istio                       | minikube | disabled     |
| istio-provisioner           | minikube | disabled     |
| logviewer                   | minikube | disabled     |
| metallb                     | minikube | disabled     |
| metrics-server              | minikube | disabled     |
| nvidia-driver-installer     | minikube | disabled     |
| nvidia-gpu-device-plugin    | minikube | disabled     |
| registry                    | minikube | disabled     |
| registry-aliases            | minikube | disabled     |
| registry-creds              | minikube | disabled     |
| storage-provisioner         | minikube | enabled ✅   |
| storage-provisioner-gluster | minikube | disabled     |
|-----------------------------|----------|--------------|

 

다시 대시보드로 접속을 시도해 보았으나 이번엔 proxy에서 행이 걸리는 문제가 발생했습니다.

 

[user@Compute0 /]$ minikube dashboard                                                                                                                      
* Verifying dashboard health ...
* 프록시를 시작하는 중 ...
* Verifying proxy health ...
* Opening http://127.0.0.1:41668/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/ in your default browser...
^C

 

일단 이 상태에서 lynx 명령을 사용하여 위의 url로 접속해보니 로컬로 접속은 되는 것으로 보이지만, 외부에서 192.168.0.25 (이 호스트의 Ip)로 접근하려고 하면 여전히 접근이 안됩니다. 아마도 쿠버네티스 자체에서 외부 접근 ip는 막은 것으로 예상하여 열심히 구글링을 해 본 결과, 아래와 같이 proxy 설정을 하면 된다고 하네요.

 

[user@Compute0 /]$ kubectl proxy --address='0.0.0.0' --disable-filter=true
W0517 19:06:56.197172   14394 proxy.go:167] Request filter disabled, your proxy is vulnerable to XSRF attacks, please be cautious
Starting to serve on [::]:8001

 

또 저 상태에서 그냥 행이 걸립니다. (쿠버네티스는 행 걸린 상태가 그냥 동작 한다는 의미인가..? 왜 다 저 상태로 두는지 이해가 안됨. 아니면 비정상적인 상황인지도 의문이네요)

 

어찌됐든, 이 상태에서 앞서 minikube dashboard 명령을 통해 받은 url에 Ip만 적용하여 접속해보니 접속이 되네요.

http://<자신의 external ip>:8001/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/

 

 

그리고 위의 proxy 가 동작하는 상태에서 ctrl+c로 종료하면 저 대시보드도 종료됩니다 (왜 이렇게 만들었는지 참,, 오픈스택처럼 그냥 외부에서 접속할 수 있도록 따로 설정이 있으면 어떨까 하는 생각이 듦)

 

대시보드 접속 과정은 여기까지 입니다. 크게 어려운 내용은 없지만 처음 시도하는 과정에서 외부 접근을 위해 proxy 설정 부분에서 애를 먹었네요. 다음 포스트에서는 본격적으로 컨테이너를 생성하고 devstack을 설치하는 과정을 다뤄보도록 하겠습니다. 물론 개인적으로 실험적인 내용이라 잘 될지는 모르겠네요.

 

TAGS.

Comments