일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- kubenetes in action
- 메이븐
- Encapsulation
- 위임
- ArgoCD
- 피터코드의 상속규칙
- kubenetes architecture
- 캡슐화
- 쿠버네티스
- kube
- 쿠버네티스 어노테이션
- kubernetes in action
- kubernetes component
- 상속성
- maven
- kubenetes
- 레이블
- 어플리케이션셋
- 피터코드
- delegation
- 객체지향
- 빌드
- 레이블 셀렉터
- applicationset
- OOP
- argocd applicationset
- kubernetes in actin
- 추상화
- Abstraction
- kubernetes
- Today
- Total
IT 끄적장
#7 YAML 디스크립터로 POD 생성하기 본문
파드를 포함한 다른 쿠버네티스 리소스는 일반적으로 쿠버네티스 REST API 엔드포인트에 JSON 혹은
YAML 매니페스트를 전송해 생성한다.
kubectl run 명령처럼 다른 간다한 방법으로 리소스를 만들 수 있지만, 제한된 속성 집합만 설정할 수 있다.
그리고 YAML 파일에 모든 쿠버네티스 오브젝트를 정의하면 버전 관리 시스템에 넣는 것이 가능해져, 그에 따른 모든 이점을 누릴 수 있다.
Pod를 구성하는 주요 부분 소개
apiVersion: v1
kind: Pod
metadata:
name: my-app
spec:
containers:
- image: nginx
name: my-nginx
ports:
- containerPort: 8080
protocol: TCP
파드 정의는 몇 부분으로 구성된다. 먼저 yaml에서 사용하는 쿠버네티스 api 버전과 yaml이 설명하는 리소스 유형이 있다.
이어서 거의 모든 쿠버네티스 리소스가 갖고 있는 세 가지 중요한 부분이 있다.
- metadata: 이름, 네임스페이스, 레이블 및 파드에 관한 기타 정보를 포함한다.
- spec: 파드 컨테이너, 볼륨, 기타 데이터 등 파드 자체에 관한 실제 명세를 가진다.
- status: 파드 상태, 각 컨테이너 설명과 상태, 파드 내부 ip, 기타 기본 정보 등 현재 실행 중인 파드에 관한 현재 정보를 포함한다.
위의 yaml을 살펴보면 이 정의는 API v1 버전을 준수한다. 정의하는 리소스 유형은 파드이며 이름은 my-app이다.
파드는 nginx 이미지 기반 단일 컨테이너로 구성된다. 그리고 컨테이너 이름을 my-nginx라 지정하고 8080에서 연결을 기다리는 것을 의미한다.
컨테이너 포트 지정
포트 정의 안에서 포트를 지정해둔 것은 단지 정보에 불과하다.
이를 생략해도 다른 클라이언트에서 포트를 통해 파드에 연결할 수 있는 여부에 영향을 미치지 않는다.
컨테이너가 0.0.0.0 주소에 열어 둔 포트를 통해 접속을 허용할 겨우 접속을 허용할 경우 스펙에 포트를 명시적으로 나열하지 않아도 다른 파드에서 항상 해당 파드에 접속할 수 있다.
그러나 포트를 명시적으로 정의한다면, 클러스터를 사용하는 모든 사람이 파드에서 노출한 포트를 바르게 볼 수 있다.
또한 포트를 명시적으로 정의하면 포트에 이름을 지정해 편리하게 사용할 수 있다.
kubectl create 명령으로 파드 만들기
위의 파드를 정의한 yaml 파일을 testPod.yaml 로 저장 후, pod를 생성하기 위해서 kubectl create 명령어를 이용한다.
kubectl create -f testPod.yaml
다음과 같이 my-app이라는 파드가 생성된다.
현재 실행중인 파드의 전체 정의를 가지고 오기 위해서는
kubectl get pod my-app -o yaml 명령어를 사용한다.
다음과 같이 생성한 파드의 전체 정의를 yaml로 확인할 수 있다.
파드에 요청 보내기
파드가 지금 실행 중이다. 그렇다면 어떻게 외부에서 파드에 접속을 할 수 있을까?
서비스라는 리소스를 통해 접속할 수 있지만, 이번 포스팅에서는 로컬 네트워크 포트를 파드의 포트로 포워딩하여 접속해본다.
kubectl port-forward my-app 8888:8080
위의 명령은 머신의 로컬 포트 8888을 my-app파드의 8080포트로 향하게 한다.
'Kubernetes' 카테고리의 다른 글
# 9 파드에 어노테이션 달기 (0) | 2021.02.24 |
---|---|
#8 레이블을 이용한 파드의 구성 (0) | 2021.02.19 |
# 6 kubernetes 구성 요소_ Pod - 2 (0) | 2021.02.09 |
# 5 kubernetes 구성 요소_ Pod - 1 (0) | 2021.02.09 |
#4 kubernetes 사용의 장점 (0) | 2021.02.08 |