오 vscode에서 wsl 연결하니까 잘 뜸.

다시 실습해보겠음 (추후에)

Untitled

3.1 파드 소개

파드 : 함께 배치된 컨테이너 그룹, 쿠버네티스의 기본 빌딩블록

왜 파드가 필요한가?

같은 파드에서 컨테이너간 부분격리

→ 완벽한 격리 불가

컨테이너 ip,포트공간 공유

동일한 파드일때 포트 번호 충돌 조심!

파드간 플랫네트워크

모든 파드는 다른 파드의 IP주소 사용해 접근 가능.

둘사이에는 어떠한 NAT도 존재하지 않음.

플랫 네트워크에 속하면 통신 가능하다는 소리네.

파드는 논리적인 호스트로서 컨테이너가 아닌 환경에서의 물리적인 호스트 혹은 VM과 유사하게 동작한다.

파드에서 컨테이너의 적절한 구성

애플리케이션을 여러 파드로 구성 가능하다.

if ) 프론트엔드 서버와 데이터베이스 컨테이너 두개로 구성되어있다면,

파드에 여러 컨테이너를 넣는 이유

주요 프로세스 + 보완프로세스

파드에 여러 컨테이너를 사용하는 경우 결정

3.2 yaml 또는 json 디스크립터로 파드 생성

Reference

3.2.1 기존 파드의 YAML 스크립터 살펴보기

(시작전에 cluster-info 로 돌아가고있는지 확인하고, 안돌아간다면 minikube start 해주기.)

$kubectl get po kubia-zxzij -o yaml

Untitled

파드를 정의하는 주요부분

파드를 정의하는 간단한 YAML 정의 작성하기

apiVersion: v1
kind: Pod  오브젝트 종류
metadata:
  name: kubia-manual 파드 이름
spec:
  containers:
  - image: pinetree0308/kubia 이미지 이름
    name: kubia 컨테이너 이름
    ports:
    - containerPort: 8080 앱이 수신하는 포트
      protocol: TCP

사용가능한 API 오브젝트 필드 찾기

$ kubectl explain pods

속성에 대한 설명

Untitled

spec속성

kubectl explain pod.spec

3.2.3 kubectl create 명령으로 파드 만들기

$ kubectl create -f kubia-manul.yaml

→ kubectl create -f 는 yaml 또는 json 파일로 리소스를만드는데 사용함

Untitled

실행중인 파드의 전체 정의 가져오기

$ kubectl get po kubia-manul -o yaml

$ kubectl get po kubia-manul -o json

→ json 으로 보기 원한다면, kubectl 명령으로 json 반환하도록 할 수 있다. (yaml 로 만들었어도!)

파드 목록에서 새로 생성된 파드 보기

파드 생성 후에 제대로 동작하는지 확인

$ kubectl get pods

파드 확인

Untitled

3.2.4 애플리케이션 로그 보기

컨테이너 런타임은(여기서는 도커) 이러한 스트림을 파일로 전달하고, 다음 명령을 이용해 컨테이너 로그를 가져옴.

$ docker logs <container Id>

kubectl logs를 이용해 파드 로그 가져오기

$ kubectl logs kubia-manual

컨테이너 로그는 하루단위로, 로그파일이 10MB크기에 도달할 때마다 순환된다.

kubectl logs 명령은 마지막으로 순환된 로그 항목만 보여준다.

컨테이너 이름을 지정해 다중 컨테이너 파드에서 로그 가져오기

$ kubectl logs <파드이름> -c <컨테이너 이름>

여러 컨테이너를 포함한 파드의 경우 -c 옵션을 붙여야한다.

→ 파드가 삭제된 후에 로그 보려면 중앙집중식 로깅 설정해야함

3.2.5 파드에 요청보내기

파드에 테스트와 디버깅 목적으로 연결하는 방법