반응형
node-app 도커 이미지를 쿠버네티스(Kubernetes)로 배포하는 방법
- node-app-deployment.yaml 파일 생성
vim node-app-deployment.yaml
# node-app-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: node-app # Deployment의 이름
spec:
replicas: 1 # Replica 수
selector:
matchLabels:
app: node-app # Pod를 식별하기 위한 라벨
template:
metadata:
labels:
app: node-app # Pod에 부여되는 라벨
name: node-app # Pod의 이름
spec:
containers:
- name: node-app
image: anti1346/node-app:latest # 사용할 이미지
ports:
- containerPort: 3000 # 컨테이너에서 노출할 포트
---
apiVersion: v1
kind: Service
metadata:
name: node-app # Service의 이름
spec:
selector:
app: node-app # 해당 Service가 라우팅할 Pod를 선택하는 라벨
ports:
- protocol: TCP
port: 3000 # Service가 사용하는 포트
targetPort: 3000 # Pod의 포트
nodePort: 31000 # 노드포트 (외부로 노출되는 포트)
type: NodePort # 서비스 유형 (노드포트)
- 쿠버네티스 클러스터에 node-app 애플리케이션 배포
kubectl apply -f node-app-deployment.yaml
$ kubectl apply -f node-app-deployment.yaml
deployment.apps/node-app created
service/node-app created
- 현재 배포된 파드와 서비스의 상태를 확인
kubectl get pods,services
$ kubectl get pods,services
NAME READY STATUS RESTARTS AGE
pod/node-app-5776f68947-qmmlh 1/1 Running 0 5s
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 4d23h
service/node-app NodePort 10.110.145.167 <none> 3000:31000/TCP 5s
728x90
- 실행 중인 파드의 이름에 대한 대화형 bash 쉘을 실행
kubectl exec -it node-app-5776f68947-qmmlh -- /bin/bash
kubectl exec -it $(kubectl get pods -o jsonpath='{.items[0].metadata.name}') -- /bin/bash
- 로컬에서 실행 중인 파드의 웹 서버에 HTTP GET 요청(쿠버네티스 내부에서만 동작합니다)
curl -fsSL http://localhost:3000
root@node-app-5776f68947-qmmlh:/usr/src/app# curl -fsSL http://localhost:3000
Hostname: node-app-5776f68947-qmmlh
Internal IP: 10.244.0.71
External IP: 111.111.111.111
Current Time: 2024. 2. 7. 오후 1:24:09
- 클러스터 내에서 파드의 외부 IP 주소를 사용하여 파드의 웹 서버에 HTTP GET 요청(클러스터 내부에서만 동작합니다)
curl http://10.110.145.167:3000
root@node-app-5776f68947-qmmlh:/usr/src/app# curl http://10.110.145.167:3000
Hostname: node-app-5776f68947-qmmlh
Internal IP: 10.244.0.71
External IP: 111.111.111.111
Current Time: 2024. 2. 7. 오후 1:24:23
- Minikube 클러스터의 외부 IP 주소를 사용하여 서비스에 HTTP GET 요청(클러스터 외부에서 동작합니다.)
curl http://$(minikube ip):31000
$ curl http://$(minikube ip):31000
Hostname: node-app-5776f68947-qmmlh
Internal IP: 10.244.0.71
External IP: 111.111.111.111
Current Time: 2024. 2. 7. 오후 1:25:34
- node-app 디플로이먼트 삭제
kubectl delete deployment node-app
$ kubectl delete deployment node-app
deployment.apps "node-app" deleted
- node-app 서비스 삭제
kubectl delete service node-app
$ kubectl delete service node-app
service "node-app" deleted
728x90
반응형
'리눅스' 카테고리의 다른 글
쿠버네티스에서 모든 리소스를 삭제하는 방법 (0) | 2024.02.13 |
---|---|
쿠버네티스에서 네임스페이스를 스위칭하는 방법(kubens 명령어) (0) | 2024.02.13 |
쿠버네티스 네임스페이스를 생성하고 확인하고 삭제하는 방법(namespaces) (0) | 2024.02.07 |
Docker 자원 관리(프로세스, 이미지, 볼륨, 네트워크 정리하기) (0) | 2024.02.05 |
쿠버네티스 클러스터와 관련된 정보를 가져오거나 명령어의 기능을 설명 (0) | 2024.02.02 |