이미 **알고있는 정보들은 매니페스트 파일을 정의할 때 사용
**할 수 있지만 아래와 같은 정보들은 불가능하다.
위 같은 정보들을 사용하기 위해서 k8s에서는 Downward API라는 기능을 제공한다.
이 기능을 이용해서 파드에 환경변수나 볼륨 형태로 전달해줄 수 있다.
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를 조회해보면 잘 들어간 것을 확인할 수 있다
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>