[쿠버네티스 워크로드] 포드 소개

hi·2023년 7월 31일
0

쿠버네티스

목록 보기
19/64
post-custom-banner

포드

  • 컨테이너의 공동 배포된 그룹이며 쿠버네티스의 기본 빌딩 블록을 대표
  • 쿠버네티스는 컨테이너를 개별적으로 배포하지 않고 컨테이너의 파드를 항상 배포하고 운영
  • 일반적으로 파드는 단일 컨테이너만 포함하지만 다수의 컨테이너를 포함 할 수 있음
  • 파드는 다수의 노드에 생성되지 않고 단일 노드에서만 실행
  • 여러 프로세스를 실행하기 위해서는 컨테이너 당 단일 프로세스가 적합
  • 다수의 프로세스를 제어하려면? → 다수의 컨테이너를 다룰 수 있는 그룹이 필요



파드의 관리

  • 파드는 밀접하게 연관된 프로세스를 함께 실행하고 마치 하나의 환경에서 동작하는 것처럼 보임
  • 그러나 동일한 환경을 제공하면서 다소 격리된 상태로 유지


동일한 파드의 컨테이너 사이의 부분 격리

  • 파드의 모든 컨테이너는 동일한 네트워크 및 UTS 네임스페이스에서 실행
  • 같은 호스트 이름 및 네트워크 인터페이스를 공유 (포트 충돌 가능성 있음)
  • 파드의 모든 컨테이너는 동일한 IPC 네임스페이스 아래에서 실행되며 IPC를 통해 통신 가능

최신 쿠버네티스 및 도커 버전에서는 동일한 PID 네임스페이스를 공유할 수 있지만 이 기능은 기본적으로 활성화돼 있지 않다.



플랫 인터 파드 네트워크 구조

  • 쿠버네티스 클러스터의 모든 파드는 공유된 단일 플랫, 네트워크 주소 공간에 위치
  • 파드 사이에는 NAT 게이트웨이가 존재 하지 않음



컨테이너를 파드 전체에 적절하게 구성하는 방법

  • 다수의 파드로 멀티티어 애플리케이션 분할하기
  • 각각 스케일링이 가능한 파드로 분할하기



파드 정의 구성 요소

  • apiVersion: 쿠버네티스 api의 버전을 가리킴
  • kind: 어떤 리소스 유형인지 결정 (파드, 레플리카 컨트롤러, 서비스 등)
  • 메타데이터: 파드와 관련된 이름, 네임스페이스, 레이블 등의 정보 정의
  • 스펙: 컨테이너, 볼륨 등의 정보
  • 상태: 파드의 상태, 각 컨테이너의 설명 및 상태, 파드 내부의 IP 및 그 밖의 기본 정보 정의

KindVersion
PODv1
Servicev1
ReplicaSetapps/v1
Deploymentapps/v1


파드에서 YAML 파일 불러오기

imkunyoung@master-1:~$  kubectl get pod http-go-59dc99ffff-4hb5p -o yaml



apiVersion: v1
kind: Pod
metadata:
  creationTimestamp: "2023-07-31T23:27:16Z"
  generateName: http-go-59dc99ffff-
  labels:
    app: http-go
    pod-template-hash: 59dc99ffff
  name: http-go-59dc99ffff-4hb5p
  namespace: default
  ownerReferences:
  - apiVersion: apps/v1
    blockOwnerDeletion: true
    controller: true
    kind: ReplicaSet
    name: http-go-59dc99ffff
    uid: 91eeeffc-f70e-477b-b9f8-f600b4802f6f
  resourceVersion: "3621697"
  uid: e7031742-b187-426a-ab7e-d5b3487ff1b6
spec:
  containers:
  - image: gasbugs/http-go
    imagePullPolicy: Always
    name: http-go
    resources: {}
    terminationMessagePath: /dev/termination-log
    terminationMessagePolicy: File
    volumeMounts:
    - mountPath: /var/run/secrets/kubernetes.io/serviceaccount
      name: kube-api-access-7ft2f
      readOnly: true
  dnsPolicy: ClusterFirst
  enableServiceLinks: true
  nodeName: worker-3
  preemptionPolicy: PreemptLowerPriority
  priority: 0
  restartPolicy: Always
  schedulerName: default-scheduler
  securityContext: {}
  serviceAccount: default
  serviceAccountName: default
  terminationGracePeriodSeconds: 30
  tolerations:
  - effect: NoExecute
    key: node.kubernetes.io/not-ready
    operator: Exists
    tolerationSeconds: 300
  - effect: NoExecute
    key: node.kubernetes.io/unreachable
    operator: Exists
    tolerationSeconds: 300
  volumes:
  - name: kube-api-access-7ft2f
    projected:
      defaultMode: 420
      sources:
      - serviceAccountToken:
          expirationSeconds: 3607
          path: token
      - configMap:
          items:
          - key: ca.crt
            path: ca.crt
          name: kube-root-ca.crt
      - downwardAPI:
          items:
          - fieldRef:
              apiVersion: v1
              fieldPath: metadata.namespace
            path: namespace
status:
  conditions:
  - lastProbeTime: null
    lastTransitionTime: "2023-07-31T23:27:16Z"
    status: "True"
    type: Initialized
  - lastProbeTime: null
    lastTransitionTime: "2023-07-31T23:27:19Z"
    status: "True"
    type: Ready
  - lastProbeTime: null
    lastTransitionTime: "2023-07-31T23:27:19Z"
    status: "True"
    type: ContainersReady
  - lastProbeTime: null
    lastTransitionTime: "2023-07-31T23:27:16Z"
    status: "True"
    type: PodScheduled
  containerStatuses:
  - containerID: containerd://aa75273f918c96448b6f1798452ea8b6fa6a0f3928500fb193ad65e7bf20b201
    image: docker.io/gasbugs/http-go:latest
    imageID: docker.io/gasbugs/http-go@sha256:5cf243f818caf7a750761cfe2ff822a284d6eb459356318d3f0bd4b1efe141d9
    lastState: {}
    name: http-go
    ready: true
    restartCount: 0
    started: true
    state:
      running:
        startedAt: "2023-07-31T23:27:18Z"
  hostIP: 10.138.0.5
  phase: Running
  podIP: 10.0.1.123
  podIPs:
  - ip: 10.0.1.123
  qosClass: BestEffort
  startTime: "2023-07-31T23:27:16Z"
post-custom-banner

0개의 댓글