Pod
Kubernetes에서 컨테이너를 만들고 관리할 수 있는 가장 작은 배포 가능 단위
쿠버네티스의 오브젝트 종류 중 하나
컨테이너를 실행하기 위한 환경
1개의 포드는 1개 이상의 컨테이너가 존재할 수 있다.
일반적으로 1개의 컨테이너를 생성해서 사용한다.
- 쿠버네티스에서는 하나의 애플리케이션을 배포하기 위한 가장 작은 단위를 Pod라고 부른다.
- Pod는 하나의 애플리케이션을 나타내기 위한 컨테이너 그룹이다.
- Pod 하나는 하나의 완전한 애플리케이션이라고 생각하면 된다.
- 하나의 Pod 안에는 하나의 컨테이너, 혹은 여러 개의 컨테이너가 존재할 수 있다.
- 하나의 애플리케이션을 여러 개의 컨테이너가 필요하다면 추상적으로 하나의 단위로 컨테이너를 묶는 것을 Pod라고 한다.
- Pod != 컨테이너
- 주컨테이너와 사이드카컨테이너로 나뉜다.
[ 실습 환경 만들기 ] 테스트용 이미지를 만들기
- index.jsp 파일 준비
- 이미지 만들기
- Dockerfile 빌드
- 현재 Pod 내부에 있는 IP를 찍어보자.
이미지가 잘 만들어진 것을 확인할 수 있다.
▶ Pod 생성하기
kubectl run Pod명 --image=이미지명 [옵션]
- 일반적으로 Yaml 파일을 이용해서 생성하는 것을 권장
예시 > kubectl run kuweb1 --image=testweb:1.0 --port=8080
--port : 컨테이너가 노출하는 포트
▶ Pod의 목록 확인
kubectl get pods [옵션]
▷ - o : 아웃풋을 어떻게 할 것인지 옵션
- + wide : 상세보기
- + json : JSON 스타일로 보이기
▷ NAME : Pod의 이름
▷ READY : /구동 완료된 것
▷ STATUS : 상태값
- ContainerCreating : 아직 만드는 중
- Running : 모든 컨테이너가 만들어져서 구동됨)
▷ RESTARTS : Pod가 실행된 시간?
▷ AGE :
▷ IP : Pod의 IP
▷ NODE : 노드에 대한 정보
▶ pod 상세 정보 확인
kubectl describe pod
▶ Pod 컨테이너 명령 실행
kubectl exec Pod명 [-c 컨테이너명] [옵션] -- 명령어 [args ...]
▷ 외부에서 명령어 실행
- pwd : 현재 작업 경로 출력하는 명령어
예시 > kubectl exec kuweb -- pwd
▷ 컨테이너 내부에서 명령어 실행
- /bin/bash : 쉘로 접근해서 명령어 실행 (종료 = exit)
예시 > kubectl exec kuweb -it -- /bin/bash
▶ 접속 확인
- 컨테이너가 만들어진 상태이지만, 실제로 외부에 노출된 것은 아니다. 브라우저에서 접근할 수 없다.
- 쿠버네티스에서는 외부에서 Pod에 접근할 수 있도록 하려면(Pod를 외부에 노출시키려면) 쿠버네티스 서비스 오브젝트를 따로 만들어야 한다.
- 외부에서는 불가능하지만, 내부에서 접근할 때는 Pod를 하나 더 만들고 Pod IP를 통해서 접속 가능하다.
- 내부에서 접속 테스트를 위해서 임시로 서버 설치 후 Curl 도구 활용해서 테스트 진행
(Curl : HTTP, HTTPs 기타 프로토콜을 사용해서 URL을 통해서 요청을 보낼 수 있다. 다양한 통신 프로토콜을 이용해서 데이터를 주고 받을 수 있도록 하는 프로그램)
리눅스 서버 설치
kubectl run -it kuserver --image=alpine:latest
▶ Pod 삭제
kubectl delete pod Pod이름
다른 Powershell 2 띄워서 이렇게 보면 IP를 확인할 수 있다.
[지금 어떤 상황이냐면]
쿠버네티스가 Pod를 안에 2개를 만든 상황임
첫 번째 Pod의 IP는 10.1.0.6이고, 두 번째 Pod의 IP는 10.1.0.8이다.
외부에서 접근하는 것은 불가능한 상황이다. (서비스 오브젝트가 필요하다.)
그래서 지금은
쿠버네티스 내부에 있는 Pod들 끼리는 IP를 가지고 요청, 응답을 주고 받을 수 있다.
요청을 보내고 응답을 받기 위한 도구로 CURL을 활용한다.
명령어를 curl 10.1.0.6:8080 (컨테이너가 톰캣 포트를 개방했기 때문에) 로 요청을 보내면
응답하는 화면을 보내주게 된다.

아까 index.jsp 에 적은대로 보이게 된다.

실습에 사용한 명령어들
kubectl get pods
kubectl exec -it kuserver -- /bin/ash : 셸로 들어감
kubectl get pods -o wide
/ # curl 10.1.0.20:8080
Pod는 포트로 구분한다.
'Programming > Cloud' 카테고리의 다른 글
DAY 176. 쿠버네티스(Kubenetest) - Replica Set (0) | 2022.02.15 |
---|---|
DAY 175. 쿠버네티스(Kubernetes) - Yaml 파일 (0) | 2022.02.14 |
DAY 173. 쿠버네티스(Kubernetes) 설치 (0) | 2022.02.11 |
DAY 172. 쿠버네티스(Kubernetes) (0) | 2022.02.10 |
DAY 171. 도커파일(Dockerfile) 응용 (0) | 2022.02.09 |