본문 바로가기

리눅스

Minikube Dashboard 활성화 및 외부 접근 설정 방법

반응형

Minikube Dashboard 활성화 및 외부 접근 설정 방법

Minikube 실행

Minikube 클러스터 삭제

더보기

---

minikube stop
minikube delete
rm -rf ~/.minikube

---

Minikube 클러스터 실행

더보기

---

minikube start --driver=none --force

---

Minikube 클러스터 상태 확인

minikube status
minikube
type: Control Plane
host: Running
kubelet: Running
apiserver: Running
kubeconfig: Configured

Minikube Dashboard 설치

minikube addons enable dashboard
minikube addons enable metrics-server

Minikube Dashboard 실행(활성화)

minikube dashboard
🤔  Verifying dashboard health ...
🚀  Launching proxy ...
🤔  Verifying proxy health ...
http://127.0.0.1:37629/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/
  • minikube dashboard 명령을 실행하면 대시보드가 자동으로 웹 브라우저에서 열리거나 URL을 통해 접근할 수 있게 됩니다. 기본적으로 대시보드는 localhost:30000에서 열립니다.

URL 확인

minikube service kubernetes-dashboard --url
❌  Exiting due to SVC_NOT_FOUND: Service 'kubernetes-dashboard' was not found in 'default' namespace.
You may select another namespace by using 'minikube service kubernetes-dashboard -n <namespace>'. Or list out all the services using 'minikube service list'
더보기

---

kubectl get services --all-namespaces
minikube service kubernetes-dashboard -n kubernetes-dashboard --url

---

Minikube 대시보드를 외부에서 접근할 수 있도록 설정

1안) NodePort를 사용하여 대시보드 노출

대시보드 서비스의 타입을 확인

kubectl get svc -n kubernetes-dashboard
NAME                        TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)    AGE
dashboard-metrics-scraper   ClusterIP   10.102.130.211   <none>        8000/TCP   110m
kubernetes-dashboard        ClusterIP   10.101.108.100   <none>        80/TCP     110m

대시보드 서비스의 타입을 NodePort로 변경

kubectl patch svc kubernetes-dashboard -n kubernetes-dashboard -p '{"spec":{"type":"NodePort"}}'

대시보드 서비스의 타입을 ClusterIP로 변경

더보기

---

kubectl patch svc kubernetes-dashboard -n kubernetes-dashboard --type='json' -p '[{"op":"replace","path":"/spec/type","value":"ClusterIP"}]'
$ kubectl get svc -n kubernetes-dashboard
NAME                        TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)    AGE
dashboard-metrics-scraper   ClusterIP   10.104.235.251   <none>        8000/TCP   47m
kubernetes-dashboard        ClusterIP   10.103.172.244   <none>        80/TCP     47m

---

변경된 서비스 상태를 확인

kubectl get svc -n kubernetes-dashboard
NAME                        TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)        AGE
dashboard-metrics-scraper   ClusterIP   10.102.130.211   <none>        8000/TCP       111m
kubernetes-dashboard        NodePort    10.101.108.100   <none>        80:32104/TCP   111m

Minikube IP 확인

minikube ip
192.168.10.48

호스트(/etc/hosts) 파일 설정 추가

echo -e "$(ip route get 1.2.3.4 2>/dev/null | grep -Eo 'src [0-9.]+' | grep -Eo '[0-9.]+')\tminikube-dashboard.local" | sudo tee -a /etc/hosts

cURL 테스트

curl minikube-dashboard.local

브라우저에서 접근(외부에서 접근)

http://192.168.10.48:32104

2안) Ingress Controller를 사용하여 대시보드 노출

Ingress Controller를 사용하면 도메인 이름을 통해 대시보드에 접근할 수 있습니다.

 

Ingress Controller 설치

minikube addons enable ingress

Ingress Controller의 서비스 상태를 확인

kubectl get svc -n ingress-nginx
NAME                                 TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)                      AGE
ingress-nginx-controller             NodePort    10.100.150.204   <none>        80:31765/TCP,443:31328/TCP   23m
ingress-nginx-controller-admission   ClusterIP   10.108.64.132    <none>        443/TCP                      23m

Ingress Controller의 파드 상태를 확인

kubectl get pods -n ingress-nginx
NAME                                        READY   STATUS      RESTARTS   AGE
ingress-nginx-controller-56d7c84fd4-n8lw8   1/1     Running     0          60s

대시보드 서비스 확인

kubectl get svc -n kubernetes-dashboard
NAME                        TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)    AGE
dashboard-metrics-scraper   ClusterIP   10.102.116.142   <none>        8000/TCP   2m36s
kubernetes-dashboard        ClusterIP   10.103.18.18     <none>        80/TCP     2m36s

Ingress 리소스 생성

tee dashboard-ingress.yaml > /dev/null <<EOF
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: dashboard-ingress
  namespace: kubernetes-dashboard
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
    nginx.ingress.kubernetes.io/ssl-redirect: "false"  # HTTPS가 아닌 HTTP로 접근할 경우
spec:
  rules:
    - host: minikube-dashboard.local  # 사용할 도메인 이름
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: kubernetes-dashboard
                port:
                  number: 80
EOF

Ingress 리소스 적용

kubectl apply -f dashboard-ingress.yaml
ingress.networking.k8s.io/dashboard-ingress created

Ingress 리소스 상태 확인

kubectl get ingress -n kubernetes-dashboard
NAME                CLASS   HOSTS                      ADDRESS         PORTS   AGE
dashboard-ingress   nginx   minikube-dashboard.local   192.168.10.48   80      84s

 

728x90
반응형