작성중..
1. docker image를 docker hub에 push하기
docker name으로 docker hub에 push 시, ImagePullBackOff 에러가 있어 먼저 tag를 지정해준다.
1) docker tag 지정하기
docker tag todolist_nodejs seyeon321/todolist_nodejs
2) docker hub 로그인 후 push
docker login
docker push seyeon321/todolist_nodejs
2. 쿠버네티스를 사용하여 클러스터에 이미지 배포하기
deployment.yml
apiVersion: apps/v1
kind: Deployment
metadata:
name: todolist
spec:
selector:
matchLabels:
app: todolist
replicas: 2
template:
metadata:
labels: # labels to select/identify the deployment
app: todolist
spec: # pod spec
containers:
- name: todolist
image: seyeon321/todolist_nodejs # docker image name
ports:
- containerPort: 3000
Deployments > replicasets > pod
- pods: 컨테이너의 집합
- replica set: 컨테이너의 집합을 관리하는 컨트롤러
replicas에 2로 설정해서 pod를 2개 실행시킨다.
kubectl create -f deployment.yml --save-config
pod가 running 상태인지 확인해본다.
kubectl get pod
NAME READY STATUS RESTARTS AGE
todolist-6d68684796-9m9xr 1/1 Running 0 21s
todolist-6d68684796-hmcng 1/1 Running 0 21s
인터넷에 접근할 수 있도록 service 오브젝트 생성한다.
kubectl expose deployment todolist --type="LoadBalancer"
서비스에 대한 정보를 확인한다.
kubectl get services
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
todolist LoadBalancer ~ localhost 3000:32060/TCP 10s
http://<EXTERNAL-IP>:<PORT> 에 접근하여 잘 구동하는지 확인해본다.
Reference.
https://kubernetes.io/ko/docs/tutorials/stateless-application/expose-external-ip-address/