POD - 2
이 블로그 포스트는 인프런 의 대세는 쿠버네티스 [초급~중급] 강의를 내가 이해하기 편하도록
정리한 자료이다.
대세는 쿠버네티스 [초급~중급] - 인프런 | 강의
쿠버네티스는 앞으로 어플리케이션 배포/운영에 주류가 될 기술 입니다. 이 강좌를 통해 여러분도 대세에 쉽게 편승할 수 있게 됩니다., - 강의 소개 | 인프런...
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 |
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가 다르게 생성됨을 확인할 수 있다.