반응형
Downward API 란?
애플리케이션이 쿠버네티스 리소스에 대한 메타데이터 및 상태 정보를
액세스할 수 있도록 지원하는 기능입니다.
이를 통해 애플리케이션이 쿠버네티스 환경에서 동적으로 설정을 수정하거나,
Pod 및 컨테이너의 상태를 확인할 수 있습니다.
즉, Downward API는 애플리케이션이 쿠버네티스 환경의 메타데이터나, 리소스
정보를 동적으로 활용해야할 때 주로 사용됩니다.
Downward API를 사용하여 POD에 전달 할 수 있는 메타 데이터 종류는 아래와 같습니다.
- 파드의 이름
- 파드의 IP 주소
- 파드가 속한 네임스페이스
- 파드가 실행 중인 노드의 이름
- 파드가 실행 중인 서비스 어카운트 이름
- 각 컨테이너의 CPU와 메모리 요청
- 각 컨테이너의 CPU와 메모리 제한
- 파드의 레이블
- 파드의 어노테이션
실습을 통해 좀 더 자세히 알아보도록 하겠습니다.
우선 아래와 같은 내용으로 POD를 생성 해줍니다.
apiVersion: v1 kind: Pod metadata: name: downward spec: containers: - name: main image: busybox command: ["sleep", "9999999"] resources: requests: cpu: 15m memory: 100Ki limits: cpu: 100m memory: 32Mi env: - name: POD_NAME valueFrom: fieldRef: fieldPath: metadata.name - name: POD_NAMESPACE valueFrom: fieldRef: fieldPath: metadata.namespace - name: POD_IP valueFrom: fieldRef: fieldPath: status.podIP - name: NODE_NAME valueFrom: fieldRef: fieldPath: spec.nodeName - name: SERVICE_ACCOUNT valueFrom: fieldRef: fieldPath: spec.serviceAccountName - name: CONTAINER_CPU_REQUEST_MILLICORES valueFrom: resourceFieldRef: resource: requests.cpu divisor: 1m - name: CONTAINER_MEMORY_LIMIT_KIBIBYTES valueFrom: resourceFieldRef: resource: limits.memory divisor: 1Ki
- spec.env에서 metadata.name, status.podIP, spec.nodeName 과 같이
fieldPath에 적은 내용은 POD가 생성 되면서 생기는 정보들을
환경 변수로 사용하겠다고 하는 의미 입니다.그래서 실제로 POD내 컨테이너의 환경변수를 확인해보면,
아래 이미지와 같습니다.
# kubectl exec -it downward -- env
이제 downwardAPI 볼륨에 파일로 메타데이터를 전달 해보도록 하겠습니다.
아래의 Yaml 파일로 POD를 생성 해줍니다.
apiVersion: v1 kind: Pod metadata: name: downward labels: foo: bar annotations: key1: value1 key2: | multi line value spec: containers: - name: main image: busybox command: ["sleep", "9999999"] resources: requests: cpu: 15m memory: 100Ki limits: cpu: 100m memory: 32Mi volumeMounts: - name: downward mountPath: /etc/downward volumes: - name: downward downwardAPI: items: - path: "podName" fieldRef: fieldPath: metadata.name - path: "podNamespace" fieldRef: fieldPath: metadata.namespace - path: "labels" fieldRef: fieldPath: metadata.labels - path: "annotations" fieldRef: fieldPath: metadata.annotations - path: "containerCpuRequestMilliCores" resourceFieldRef: containerName: main resource: requests.cpu divisor: 1m - path: "containerMemoryLimitBytes" resourceFieldRef: containerName: main resource: limits.memory divisor: 1
- 위 yaml 파일의 내용대로 POD를 생성하면,
spec.containers.volumeMounts.mountPath 부분에 있는 /etc/downward 에
환경 변수 값들이 존재하게 됩니다.
POD에 접속하여 확인해보도록 하겠습니다.
# kubectl exec -it downward -- /bin/sh => downward POD에 접속 후 / # cd /etc/downward
아래 이미지와 같이 환경변수 파일이 있는 곳 까지
링크로 걸려있는 것을 확인 할 수 있습니다.
이상 입니다.
반응형
'쿠버네티스 > 이론' 카테고리의 다른 글
스테이트풀셋(StatefulSet) 이란 ? (0) | 2025.01.02 |
---|---|
쿠버네티스 Deployment 란 ? (0) | 2024.12.04 |
쿠버네티스 ConfigMap, Secret 이란 ? (0) | 2024.11.26 |
쿠버네티스 퍼시스턴트볼륨(PV) 퍼시스턴트볼륨 클레임(PVC) 이란? (0) | 2024.11.12 |
쿠버네티스 Volume 이란? (0) | 2024.11.11 |