8.1.1 사용 가능한 메타데이터 이해

이미 **알고있는 정보들은 매니페스트 파일을 정의할 때 사용**할 수 있지만 아래와 같은 정보들은 불가능하다.

위 같은 정보들을 사용하기 위해서 k8s에서는 Downward API라는 기능을 제공한다.

이 기능을 이용해서 파드에 환경변수나 볼륨 형태로 전달해줄 수 있다.


8.1.2 환경변수로 메타데이터 노출하기

apiVersion: v1
kind: Pod
metadata:
  name: c8-1
spec:
  containers:
    - name: c8-1
      image: ojt90902/all:latest
      imagePullPolicy: Always
      command: ["sleep", "999d"]
      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와 관련된 데이터를 불러옴
              resource: request.cpu
              divisor: 1m # 적절한 단위로 표현하기 위함
        - name: CONTAINER_MEMORY_REQUEST_KIBIBYTES
          valueFrom:
            resourceFieldRef:
              resource: request.memory
              divisor: 1Ki
$ kubectl exec -it c8-1 -- env
>>> 
HOSTNAME=c8-1
CONTAINER_MEMORY_REQUEST_KIBIBYTES=0
POD_NAME=c8-1
POD_NAMESPACE=default
POD_IP=30.0.235.149

파드로 들어가서 env를 조회해보면 잘 들어간 것을 확인할 수 있다


8.2.1 쿠버네티스 REST API 살펴보기

REST API에 요청을 보내기 위해서는 URL을 알아야 하는데

아래처럼 확인해보면 **kube-api-server는 https로 통신**을 해야되는걸 알 수 있다.

$ kubectl cluster-info
>>>
Kubernetes control plane is running at <https://192.168.56.120:6443>
CoreDNS is running at <https://192.168.56.120:6443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy>