1. Kubernetes Dashboard 배포 개요
Kubernetes Dashboard는 Kubernetes 클러스터를 웹 기반 인터페이스로 모니터링하고 관리할 수 있게 해주는 공식 웹 UI 도구입니다. 본 문서에서는 Dashboard를 클러스터에 배포하는 과정을 설명합니다.
2. 배포 전 노드 상태 확인
Dashboard를 배포하기 전에 모든 노드가 정상 상태인지 확인합니다.
[root@kube-master ~]# kubectl get node
NAME STATUS AGE
node-1 Ready 35d
node-2 Ready 35d
3. Deployment 리소스 생성
Dashboard Pod을 관리하기 위한 Deployment 리소스 설정 파일을 작성합니다.
[root@kube-master ~]# vim dashboard-deployment.yaml
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: kubernetes-dashboard-latest
namespace: kube-system
spec:
replicas: 1
template:
metadata:
labels:
k8s-app: kubernetes-dashboard
version: latest
kubernetes.io/cluster-service: "true"
spec:
containers:
- name: kubernetes-dashboard
image: docker.io/bestwu/kubernetes-dashboard-amd64:v1.6.3
imagePullPolicy: IfNotPresent
resources:
limits:
cpu: 100m
memory: 50Mi
requests:
cpu: 100m
memory: 50Mi
ports:
- containerPort: 9090
args:
- --apiserver-host=http://192.168.1.100:8080
livenessProbe:
httpGet:
path: /
port: 9090
initialDelaySeconds: 30
timeoutSeconds: 30
4. Service 리소스 생성
Dashboard에 대한 외부 접근을 위한 Service 설정 파일을 작성합니다.
[root@kube-master ~]# vim dashboard-service.yaml
apiVersion: v1
kind: Service
metadata:
name: kubernetes-dashboard
namespace: kube-system
labels:
k8s-app: kubernetes-dashboard
kubernetes.io/cluster-service: "true"
spec:
selector:
k8s-app: kubernetes-dashboard
ports:
- port: 80
nodePort: 30303
targetPort: 9090
5. 필수镜像 다운로드
모든 노드에서 필요한 이미지를 다운로드합니다. 클러스터 환경에 따라 자동 다운로드되기도 합니다.
[root@node-1 ~]# docker pull docker.io/bestwu/kubernetes-dashboard-amd64:v1.6.3
Trying to pull repository docker.io/bestwu/kubernetes-dashboard-amd64 ...
v1.6.3: Pulling from docker.io/bestwu/kubernetes-dashboard-amd64
ff9e00b73eb4: Pull complete
Digest: sha256:d820c9a0a0a7cd7d0c9d3630a2db0fc33d190db31f3e0797d4df9dc4a6a41c6b
Status: Downloaded newer image for docker.io/bestwu/kubernetes-dashboard-amd64:v1.6.3
6. Dashboard Deployment 및 Service 시작
설정 파일을 사용하여 리소스를 생성합니다.
[root@kube-master ~]# kubectl create -f dashboard-deployment.yaml
deployment "kubernetes-dashboard-latest" created
[root@kube-master ~]# kubectl create -f dashboard-service.yaml
service "kubernetes-dashboard" created
리소스 생성 후 상태를 확인합니다.
[root@kube-master ~]# kubectl get deployment --namespace=kube-system
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
kubernetes-dashboard-latest 1 1 1 1 3d
[root@kube-master ~]# kubectl get service --namespace=kube-system
NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes-dashboard 10.254.146.81 <none> 80/TCP 3d
[root@kube-master ~]# kubectl get pod --namespace=kube-system -o wide
NAME READY STATUS RESTARTS AGE IP NODE
kubernetes-dashboard-latest-4124080496-dprcl 1/1 Running 1 3d 10.255.39.2 node-1
7. 웹 인터페이스 접근
브라우저에서 다음 URL로 접속합니다.
http://192.168.1.100:8080/ui
접속成功后 Dashboard 메인 페이지가 표시됩니다.
8. 리소스 정리
Dashboard 사용이 완료되었을 경우 리소스를 삭제합니다. 단기적인 사용 중단은 Service만, 장기적인 중단은 Deployment와 Service 모두 삭제합니다.
[root@kube-master ~]# kubectl delete -f dashboard-service.yaml
service "kubernetes-dashboard" deleted
[root@kube-master ~]# kubectl delete -f dashboard-deployment.yaml
deployment "kubernetes-dashboard-latest" deleted