본문 바로가기
Chapter01/Kubernetes

[ Kubernetes ] .yaml로 Nginx Pod을 K8S cluster에 배포하기

by EmmaDev_v 2024. 9. 3.
반응형

 두 가지 방식이 있음

1.kubectl create deployment 명령어로 Deployment를 생성하기
2.
YAML파일로 kubectl apply

 

차이점은
kubectl create deployment 명령어를 사용하면
deployment 리소스가 생성되어 deployment를 관리하는 Pod의 복제본을 유지해 Pod이 실패하는 경우 자동으로 새로운 Pod을 생성한다.

YAML 파일로 생성한 것은
단일 Pod라서 Pod이 실패하면 자동으로 다시 생성되지 않아 새로운 Pod을 만들어야함. 

그래서 복제본을 유지하거나 애플리케이션 가동 중단 없이 업데이트를 해야하는 경우라면
deployment 를 생성하는 방식이 유용하고,
굳이 그렇지 않은 경우라면 간단하게 YAML을 만들어 생성,관리를 용이하게 하면된다


관리 및 유지보수에 용이한지, 복원력이 있는지 생각해보고 필요한 방법으로 하면될듯!

 

나는 YAML파일 kubectl apply 했고

이유는 일단 YAML 파일로 Pod를 생성하는 방식이 더 간단하다. 
리소스를 업데이트가 필요할 때  부분적으로 수정할 수 있고,
리소스 전체 구성을 명확하게 유지할 수 있어 리소스를 정의하고 관리하는데 유리하기때문

 

 

 

 

1. Kubernetes 클러스터 접근

kubectl 명령어를 사용할 수 있는지 확인해야함.
기본적으로 kubectl은 홈 디렉터리의 .kube/config 파일을 사용하여 클러스터에 접근함.

kubectl get nodes
 

이 명령어를 실행하여 클러스터의 노드 목록이 출력되면 클러스터에 올바르게 접근하고 있는 것임.

 

2. YAML 파일 작성

 

 Kubernetes 클러스터에 nginx 웹 서버를 실행하는 Pod을 정의하는yaml파일

이 Pod은 nginx:latest 이미지를 기반으로 하고, 웹 트래픽을 처리하기 위해 80번 포트를 엽니다.

 
vi nginx-pod.yaml
 

apiVersion: v1
kind: Pod
metadata:
  name: nginx-pod
  labels:
    app: nginx
spec:
  containers:
  - name: nginx
    image: nginx:latest
    ports:
    - containerPort: 80

 
 
 
 
 
 

3. Pod 배포

작성한 YAML 파일을 사용하여 Nginx Pod를 클러스터에 배포

kubectl apply -f ~/nginx-pod.yaml

이 명령은 현재 디렉터리에서 nginx-pod.yaml 파일을 사용하여 Kubernetes 클러스터에 Nginx Pod를 배포.

 

4. Pod 상태 확인

Pod가 정상적으로 실행 중인지 확인

kubectl get pods

nginx-pod가 Running 상태에 있는지 확인

 

5. Nginx에 접근하기 위한 Service 생성

Nginx에 외부에서 접근하기 위해 NodePort 타입의 Service를 생성
트래픽이 올바른 Pod으로 라우팅, 특정 포트를 통해 접근할 수 있도록 관리함.

vi nginx-service.yaml
 
apiVersion: v1
kind: Service
metadata:
  name: nginx-service
spec:
  selector:
    app: nginx
  ports:
  - protocol: TCP
    port: 80
    targetPort: 80
    nodePort: 30007
  type: NodePort
 
 
 
 
 

6. Service 배포

작성한 Service YAML 파일을 사용해 클러스터에 배포

kubectl apply -f ~/nginx-service.yaml
 
 

7. Service 상태 확인

Service가 올바르게 생성되었는지 확인

kubectl get svc
 

nginx-service가 목록에 나타나고, NodePort에 지정한 포트(30007)가 연결된 것을 확인

 

8. 웹 브라우저에서 Nginx 접속 확인

이제 클러스터의 노드 IP와 NodePort를 사용하여 브라우저에서 Nginx에 접속할 수 있음!

 
http://<INTERNAL-IP>:PORT

 

 

예를 들어, 노드 IP가 192.168.1.10이라고 가정하면 http://192.168.1.10:30007 웹 브라우저에서 접속
노드 IP는 kubectl get nodes -o wide 명령어를 사용하여 확인.

 

 

이 단계를 통해 Nginx Pod를 Kubernetes 클러스터에 배포하고, 외부에서 접근할 수 있게 됨~!~!~!

반응형