본문 바로가기

Automation/system

[자동화] AI 개발환경 구축기 #5-Kubernetes Cluster(Dashboard)

머신러닝과 딥러닝, 그리 AI(인공지능)!!!

AI 서비스를 개발하기 위한 환경을 만들어본다.

최종 목표는 Kubeflow 기반의 AutoML 환경 구성이고, IaC(Infra as Code) 기반으로 Automation 하는것이 목적이다.

 

 

5편 Kubernete Dashboard 설치

 

쿠버네티스 설치를 자동화하고 나서 Dashboard를 확인하려고 보니 kubenetes-dashboard가 떠있지 않았다. addon.yml에 "dashboard_enabled = true"로 바꾸고 나서 플레이북 cluster.yml을 다시 실행했으나 여전히 dashboard가 pod로 보이지 않았다.

생각해보니 VM 생성할 때 GUI가 없는 Ubuntu를 설치했고, 그러니 당연히 브라우저도 설치되어 있지 않았다. 황당하기도하고 어이도 없어서 우선 No GUI에서 Dashboard 연동 과정을 정리해둔다. (자동화는 나중에...)

 

1. Ubuntu에 XWindow 설치 (k8s-master)

우선 GUI와 브라우저를 설치한다.

# 작업계정 : vagrant
sudo apt-get update
sudo apt-get install ubuntu-desktop

 

2. Chrome 브라우저 설치 (k8s-master)
# 작업계정 : vagrant
wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add -
sudo sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list'
sudo apt-get update
sudo apt-get install google-chrome-stable

 

3. Playbook 수정

k8s dashboard 설치/활성화를 위한 Ansible Playbook을 수정한다.

# inventory/my-k8s/group-vars/k8s-cluster 내 addons.yml 수정
vi addons.yml
-> dashboard_enabled: true
-> local_volume_provisioner_enabled: true (선택)
-> cert_manager_enabled: true

# inventory/my-k8s/group-vars/k8s-cluster 내 k8s-cluster.yml 수정
vi k8s-cluster.yml
-> kubeconfig_localhost: true

설정 완료 후 cluster.yml 을 다시 실행한다.

 

[결과 확인 및 조치]

 

dashboard POD 생성 확인하기

  • "kubectl get deployment -n kube-system" 또는 "kubectl get po -n kube-systme" 명령 결과 dashboard가 떠 있는지 확인할 것. ===> 보이면 "4. dashboard 연동" 단계 진행
  • 위 결과 dashboard 파드 또는 디플로이먼트가 보이지 않으면 dashboard를 수동로 설치
# k8s dashboard 수동 설치
kubectl apply -f \
https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0/aio/deploy/recommended.yaml

[참고] 쿠버네티스 대시보드 설치

 

웹 UI (대시보드)

대시보드는 웹 기반 쿠버네티스 유저 인터페이스이다. 대시보드를 통해 컨테이너화 된 애플리케이션을 쿠버네티스 클러스터에 배포할 수 있고, 컨테이너화 된 애플리케이션을 트러블슈팅할 수

kubernetes.io

  • 수동 설치 후 "kubectl get ns" 명령 실행 후 kubernetes-dashboard 네임스페이스가 존재하는지 확인 => 존재하면 "4. dashboard 연동" 단계 진행

 

4. Dashboard 연동

현재 사용 가능한 Service Account를 확인하고, dashboard 접근 권한(Cluster Role)을 설정하거나 새로운 Service Account를 생성할 수 있다.

k8s 클러스터를 생성하고 나면 default 라는 Service Account만 생성되어 있고, Dashboard 연동을 위해서는 Dashboard 접근 권한을 부여한 별도의 Service Account를 만드는 것이 좋다. 하지만 간단하게 default 어카운트에 cluster-admin Role을 할당하여 Dashboard 접근 권한을 부여하도록 설정할 수도 있다.

 

  • default Account의 Sercret 정보 확인

  • default Account에 "cluster-admin" Role을 부여
kubectl create clusterrolebinding default-token-h84zw -n default --clusterrole=cluster-admin --serviceaccount=default:default

  • default Account의 Token 값 확인

token 값을 복사하여 kubenetes dashboard의 token 값으로 입력하면 된다.

 

5. Dashboard 실행
  • kubenetes-dashboard 파드가 떠 있는 노드(k8s-master)에 로그인하고, proxy 실행
# 계정명 : vagrant
kubectl proxy &
  • Chrome 브라우저를 실행하고 아래 url을 입력
http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/

 

  • 4번에서 복사한 token 값을 입력하면 dashboard 로그인이 가능함


쿠버네티스 대시보드를 활성화하고, 로그인 하는 과정을 정리했다. 자동화를 고려하면 대시보드 뿐만 아니라 Grafana 같은 모니터링을 포함한 운영 전반에 대해서도 고려되어야할 것이다.

 

차근차근 자동화해야겠다.