본문 바로가기
AI 빅데이터/Open Source Software

[OSS] 맥에서 쿠버네티스 테스트하기

by 마고커 2020. 6. 18.


지난번에 GCP에서 쿠버네티스 활용을 테스트 했었다.

 

 

[GCP] GKE로 쿠버네티스 운영하기 완전 기본

쿠버네티스가 컨테이너 운영의 기본이 된다는 건 이미 주지의 사실이지만 사실 개념대로 따라가기는 만만치 않았다. 개념적으로 이해 되도 활용가능한 수준으로 익힐 수 있을까 하다가 아주 기

magoker.tistory.com

 

유사하지만 좀 더 이해를 하고 싶어서 맥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



댓글