Infra & Container/k8s

k8s > GCE를 이용해서 설치하기(4) - Pod생성해보기

Porits789 2024. 4. 24. 19:06

간단한 Pod를 생성해서 컨테이너를 동작시켜볼 생각이다.

그전에 Pod란 무엇인가?

Pod

pod는 쿠버네티스에서 가장 작고 간단한 배포 단위를 말한다.

하나 이상의 컨테이너를 포함할 수 있으며, 이 컨테이너들은 실행에 필요한 설정들을 공유한다고 한다.

또한 독립된 네트워크 IP를 가지며, 다른 pod들과 소통이 가능하다는 특징이 있다.

1 Pod, 1 Container 권장

단일 책임 원칙, 손쉬운 확장관리, 오류 격리, 리소스 관리의 측면에서 하나의 파드에 하나의 컨테이너를 권장한다고 한다.

 

특징

컨테이너가 제공하는 모든 기능들을 활용하는 동시에 프로세스가 함께 실행되는 것 처럼 보일 수 있다고 한다.

  • 같은 Pod에서 컨테이너 간 부분 격리 : 그룹 내 컨테이너가 특정 리소스의 공유를 위해 완벽하게 격리되지 않는다.
  • 컨테이가 동일한 IP와 포트 공유
  • Pod간 플랫 네트워크 : Pod는 다른 Pod의 IP주소를 통해 접근이 가능하다.

레퍼런스 : https://easyitwanner.tistory.com/178

 

[Container 이론] 5. 컨테이너 파드(pod)와 사이드카

목차 pod란? 여러 프로세스를 실행하는 하나의 컨테이너 VS 하나의 프로세스를 실하는 다중 컨테이너 하나의 파드 안에 하나의 컨테이너 사용을 권장하는 이유 파드의 특징 사이드카? pod란? Kuberne

easyitwanner.tistory.com


Pod 생성

자 이제 간단한 Pod 생성 예제를 진행해볼 시간이다. Docs를 참고했다.

https://kubernetes.io/ko/docs/concepts/workloads/pods/#%ED%8C%8C%EB%93%9C-%EC%9E%91%EC%97%85

 

파드

운영 수준의 컨테이너 오케스트레이션

kubernetes.io

 

우선 간단한 nginx를 이미지를 실행해볼 계획이다. 실행할 yaml파일의 코드는 다음과 같다.

# pod-nginx.yaml
apiVersion: v1
kind: Pod
metadata:
  name: pod-nginx
  labels:
    app: nginx
spec:
  containers:
  - name: nginx
    image: nginx:1.14.2
    ports:
    - containerPort: 80

 

파드를 실행하기위해 master node에서 다음 명령을 수행한다.

kubectl apply -f pod-nginx.yaml

 

 

사진과 같이 pod/pod-nginx created로 나오면 생성이 된거다! 그럼 잘 동작하는지 확인해야한다.

 

정상적으로 Running중임을 확인 가능하다.

그러나 현재는 내부에서 접근은 가능하지만 외부에는 접근이 불가능하다. 따라서 외부에 앱을 노출시키는 과정이 필요하다.

앱 노출 시키기

우선 다음 코드를 통해서 포트를 지정해준다. nginx 웹을 보여줄것이므로 80번 포트를 연결할건데 다음 명령을 사용한다.

kubectl expose pod pod-nginx --type=NodePort --port=80

 

에러가 발생한다면 이미 서비스가 존재하는지 확인해본다.

 

기존 서비스를 삭제하고 다시 생성하는 법

kubectl delete service pod-nginx
kubectl expose pod pod-nginx --type=NodePort --port=80

 

정상적으로 서비스가 되면 우리는 GCE이기 때문에 외부 IP로 접근을 해야한다.

그런데 이전에 설정하지 않은 문제가 있다. 32335포트를 사용해서 접근해야하는데 방화벽에서 이를 허용해주어야한다.

Google Cloud Console에서 "VPC 네트워크" -> "방화벽" 섹션으로 이동하여 새로운 방화벽 규칙을 만들어야한다.

이 때 32335포트에 대해서 TCP를 열어주면된다.

이렇게 방화벽까지 열어주면 이제 접근이 가능해진다!


참고 자료들

https://www.cckn.dev/kubernetes/learn-k8s/

 

쿠버네티스 파드(pod)를 생성하는 법

이 글은 조훈님의 쉽게 시작하는 쿠버네티스(Kubernetes)를 학습하는 과정에서 기록하였습니다. 강의 내용과 다소 차이가 있을 수 있으니 정확한 학습을 위해서는 강의를 참조해주세요. 이 글에서

www.cckn.dev

https://easyitwanner.tistory.com/178

 

[Container 이론] 5. 컨테이너 파드(pod)와 사이드카

목차 pod란? 여러 프로세스를 실행하는 하나의 컨테이너 VS 하나의 프로세스를 실하는 다중 컨테이너 하나의 파드 안에 하나의 컨테이너 사용을 권장하는 이유 파드의 특징 사이드카? pod란? Kuberne

easyitwanner.tistory.com