K8S

POD - 2

blesslee 2023. 2. 13. 11:17
반응형

이 블로그 포스트는 인프런 의 대세는 쿠버네티스 [초급~중급] 강의를 내가 이해하기 편하도록

정리한 자료이다.

https://www.inflearn.com/course/%EC%BF%A0%EB%B2%84%EB%84%A4%ED%8B%B0%EC%8A%A4-%EA%B8%B0%EC%B4%88/dashboard

 

대세는 쿠버네티스 [초급~중급] - 인프런 | 강의

쿠버네티스는 앞으로 어플리케이션 배포/운영에 주류가 될 기술 입니다. 이 강좌를 통해 여러분도 대세에 쉽게 편승할 수 있게 됩니다., - 강의 소개 | 인프런...

www.inflearn.com

 

Container

apiVersion: v1
kind: Pod
metadata:
  name: pod-1
spec:
  containers:
  - name: container1 -- 한 pod 안에 여러개의 컨테이너 만듬.
    image: kubetm/p8000 
    ports:
    - containerPort: 8000 -- 내부 포트 8000
  - name: container2
    image: kubetm/p8080
    ports:
    - containerPort: 8080 -- 내부 포트 8080

k8s 대시보드를 통해 생성
POD가 생성되고 있는 상태
pod 생성이 완료된 상태

POD의 IP는 서비스 없이  k8s 클러스터 내부에서만 접속이 가능하다.

k8s 클러스터 내부에서 pod IP로 curl 명령어를 이용하여 8000 포트와 8080 포트로 접속 확인이 가능하다.

K8s 대시보드에서 해당 POD를 선택한 후 상단에 [파드에 Exec] 아이콘을 클릭하면 POD 에 접속이 가능하다.

대시보드를 통해서 pod에 접속 후 각각 container1, container2 로 접속이 가능하다.

container 의 ip는 pod의 ip를 공유하기에 1번 container 에서 2번 container 로 통신을 확인하기 위해서는 localhost(ip는 POD의 IP를 공유)8080(2번 container의 포트) 로 실행한다.

2번 container 에서도 동일하게 1번 container로 접속할 경우 localhost:8000(1번 container의 포트)로 가능하다.

 

apiVersion: v1
kind: Pod
metadata:
  name: pod-2
spec:
  containers:
  - name: container1
    image: kubetm/p8000
    ports:
    - containerPort: 8000
  - name: container2
    image: kubetm/p8000
    ports:
    - containerPort: 8000

위 예제는 1번 container와 2번 container 의 port 를 동일하게 생성하는 테스트 이다.

container 1, 2 의 경우 한개의 파드 ip를 공유하므로 생성시 에러가 날 것으로 예상된다.

POD가 정상적으로 생성되지 않고 계속 재생성을 시도하고있다.

대시보드의 POD 항목에서 방금 생성한 pod를 선택한 후 로그 를 확인한다.

container 1 의 경우에는 문제없이 생성 되었으며,

container 2 의 경우에는 이미 사용중인 포트라는 에러 메세지가 출력됨을 확인 할 수 있다.

 

다음 테스트는 POD가 재생성 될 때 IP가 변경되는 것을 테스트로 확인하기 위한 예제이다.

이를 테스트하기 위해서 ReplicationController 를 임시로 생성하여 테스트 하도록 하겠다.

 

apiVersion: v1
kind: ReplicationController
metadata:
  name: replication-1
spec:
  replicas: 1
  selector:
    app: rc
  template:
    metadata:
      name: pod-1
      labels:
        app: rc
    spec:
      containers:
      - name: container
        image: kubetm/init

ReplicationController 는 특정 pod를 관리해주는 컨트롤러로써 해당 pod가 죽었을 때 다시 살려주는 등의 기능을 한다.

(해당 컨트롤러는 추후 다룰예정)

생성한 컨트롤러를 통해 Pod가 생성됨을 확인 할 수 있다.

현재 POD의 IP는 20.111.156.82 이다.

 

대시보드에서 해당 POD를 삭제한다.

삭제와 동시에 컨트롤러는 동일한 POD를 새로 생성하고 있다.

새로 생성된 pod는 앞서 만든 POD와 IP가 다르게 생성됨을 확인할 수 있다.

반응형