지난번에 GCP에서 쿠버네티스 활용을 테스트 했었다.
유사하지만 좀 더 이해를 하고 싶어서 맥OS에서 쿠버네티스 서비스를 테스트해보고 싶었다.
도커만드는 과정은 위의 링크를 그대로 따라하면 된다. 다만 GCP를 쓰지 않을 테니 docker hub에 이미지를 push 하도록 했다.
$ docker build -t xxxxxx/nodejs .
$ docker push xxxxxx/nodejs
1) 맥용 쿠버네티스 설정
맥에서 Kubernetes를 활용하는 것은 간단하다. docker 가 kubernetes를 지원하고 있어, docker for macos를 설치하고 log-in 한 뒤, preference 항목에서 enable kubernetes와 show system을 설정해주고 apply & restart를 해 주는 것만으로 끝난다.
2) Kubernetes 대시보드와 kubectl 설치
쿠버네티스를 운영하기 위한 kubectl과 대시보드는 아래와 같이 설치할 수 있다. kubectl은 docker를 설치하면 같이 설치되는 듯 한데 혹시나 해서 기록해 둔다.
// kubectl 설치
$ brew install kubectl
// 대시보드 설치
$ kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0/aio/deploy/recommended.yaml
// 대시보드 활용 가능하도록
$ kubectl proxy
// 아래 웹 주소에서 확인
http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/
아래와 같은 login 화면을 볼 수 있다.
토큰은 아래와 같이 얻어올 수 있다.
// 서비스 계정 생성
$ cat <<EOF | kubectl create -f -
apiVersion: v1
kind: ServiceAccount
metadata:
name: admin-user
namespace: kube-system
EOF
// Cluster Role Binding 생성
$ cat <<EOF | kubectl create -f -
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: kube-system
EOF
// token 생성
$ kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep admin-user | awk '{print $1}')
이제 아래와 같은 대시보드를 볼 수 있다.
3) 쿠버네티스 배포 테스트
배포할 도커이미지는 상단의 링크에서 활용한 simple-nodejs라는 이름으로 웹에서 hello-world를 찍어주는 간단한 서비스다. 지난번과 다르게 아래와 같이 커맨드라인을 통해서도 간단히 배포할 수 있다.
// Deployment
$ kubectl create deployment node-test --image=xxxxxx/nodejs
// Deployment 확인
$ kubectl get deployment
NAME READY UP-TO-DATE AVAILABLE AGE
node-test 1/1 1 1 29m
// Pod 확인
$ kubectl get pod
NAME READY STATUS RESTARTS AGE
node-test-577b57866c-qhwtj 1/1 Running 0 31m
// 서비스를 외부로 노출
$ kubectl expose deployment node-test --type=LoadBalancer --port=8080
// 서비스 확인
$ kubectl get service
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 5h41m
node-test LoadBalancer 10.97.149.163 localhost 8080:30571/TCP 33m
대시보드를 만들었으니 서비스가 제대로 노출되었는지 대시보드로도 확인해 보자
제대로 생성되었으니, http://localhost:8080을 클릭하면 아래와 같이 쿠버네티스로 도커를 잘 운영하고 있다.
Hello World! I'm node-test-577b57866c-qhwtj
'AI 빅데이터 > Open Source Software' 카테고리의 다른 글
[OSS] Katib로 Hyper Parameter Tuning 하기 (0) | 2020.06.30 |
---|---|
[OSS] Mac에서 Kubeflow 설치하고 테스트하기 (2) | 2020.06.29 |
[OSS] Jupyter Lab을 Git과 연동하기 (2) | 2020.06.11 |
[가상화] WSL 2로 리눅스 쓰기 (0) | 2020.05.31 |
[OSS] AutoKeras로 자동학습(AutoML) 하기 (0) | 2020.03.04 |
댓글