개요

쿠버네티스로 docker 실행 시 환경변수로 현재 노드 hostname, ip등을 주입시키고 싶을 수 있다. 이 때 Pod 생성 시 지정할 수 있는 예약 환경변수값에 대해 알아보자.

1. 컨테이너로 주입가능한 예약 환경변수값

아래와 같은것들이 가능하다.

  • spec.nodeName – the node’s name
  • status.hostIP – the node’s IP
  • metadata.name – the pod’s name
  • metadata.namespace – the pod’s namespace
  • status.podIP – the pod’s IP address
  • spec.serviceAccountName – the pod’s service account name
  • metadata.uid – the pod’s UID
  • metadata.labels[‘‘] – the value of the pod’s label (for example, – metadata.labels[‘mylabel’]); available in Kubernetes 1.9+
  • metadata.annotations[‘‘] – the value of the pod’s annotation (for example, metadata.annotations[‘myannotation’]); available in Kubernetes 1.9+

2. 명세 문법

envfieldPath값을 지정한 것을 확인 할 수 있다.

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: aurochsapp
  labels:
    env: test
spec:
  replicas: 2
  template:
    metadata:
      labels:
        env: test
    spec:
      containers:
      - name: nginx
        image: 원하는이미지
        env:
        - name: ENV_NODE_NAME
          valueFrom:
            fieldRef:
              fieldPath: spec.nodeName
        resources:
          requests:
            memory: "64Mi"
            cpu: "250m"
            ephemeral-storage: "2Gi"
          limits:
            memory: "128Mi"
            cpu: "500m"
            ephemeral-storage: "4Gi"
      affinity:
        nodeAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
            nodeSelectorTerms:
            - matchExpressions:
              - key: aurochsapp
                operator: In
                values:
                - large

3. 검증하기

image

참고자료