Pod 컨테이너 환경변수
흐름
- Pod 선언과환경변수설정
- Pod 생성/배포
- Pull image(Docker)
- Pod IP할당및컨테이너실행확인
- Port-forward 3000:3000
- Pod으로트래픽을전송
- HTTP 서버응답확인
- 컨테이너환경변수목록확인
작성해 보기
1
2
3
4
5
6
7
8
9
10
apiVersion: v1
kind: Pod
metadata:
name: hello-app # pod 이름
spec:
containers:
- name: hello-app # 컨테이너 이름
image: devchloe/hello-app:1.0 # 실습용 이미지
ports:
- containerPort: 3000 # 3000번 포트로 요청이 오면 포워딩
- 커스텀한 환경변수
1
2
3
4
5
6
7
spec:
containers:
- env: hello-app
- name: STUDENT_NAME #환경변수키선언
value: 홍길동 #환경변수값선언
- name: GREETING
value: 쿠버네티스입문강의에오신것을환영합니다. $(STUDENT_NAME)님!
- Pod오브젝트값을환경변수값으로설정
1
2
3
4
5
6
7
8
9
10
11
spec:
containers:
- env: hello-app
- name: NODE_NAME
valueFrom: # ‘쿠버네티스오브젝트로부터환경변수값을얻겠다’
fieldRef: # ‘Pod spec, status의field를환경변수값으로참조하겠다’
fieldPath: spec.nodeName #참조할field의경로선택
- name: NODE_IP
valueFrom:
fieldRef:
fieldPath: status.hostIP
명령어
1
2
3
4
5
6
- Pod 생성: kubectl apply ‒f <yaml파일경로>
- Pod 실행및IP 확인: kubectl get pod ‒o wide
- Pod 종료: kubectl delete pod --all or kubectl delete pod <pod-name>
- 컨테이너IP 확인: kubectl exec <pod-name> [-c <container-name>] -- ifconfig eth0
- 컨테이너환경변수확인: kubectl exec <pod-name> -- env
- 포트포워딩: kubectl port-forward <pod-name> <host-port>:<container-port>
실습
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
apiVersion: v1
kind: Pod
metadata:
name: hello-app
spec:
containers:
- name: hello-app
image: yoonjeong/hello-app:1.0
ports:
- containerPort: 8080
env:
- name: POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name # pod의 field 경로
- name: POD_IP
valueFrom:
fieldRef:
fieldPath: status.podIP
- name: NAMESPACE_NAME
valueFrom:
fieldRef:
fieldPath: metadata.namespace
- name: NODE_NAME
valueFrom:
fieldRef:
fieldPath: spec.nodeName
- name: NODE_IP
valueFrom:
fieldRef:
fieldPath: status.hostIP
- name: STUDENT_NAME
value: yanagi
- name: GREETING
value: 쿠버네티스 입문 강의에 오신 것을 환영합니다. $(STUDENT_NAME)님!
resources:
limits:
memory: "128Mi"
cpu: "100m"
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# Pod 생성
kubectl apply -f hello-app.yaml
# Pod 실행 및 IP 확인
kubectl get pod -o wide
kubectl get pod/hello-app -o json
# 컨테이너 IP 확인
kubectl exec hello-app -- ifconfig eth0
kubectl exec hello-app -- cat /etc/hosts
# 컨테이너에 설정된 환경변수 확인 (env)
kubectl exec hello-app -- env
# 컨테이너가 리스닝하고 있는 포트 확인
kubectl exec hello-app -- netstat -an
# 로컬 포트 포워딩 (8080 -> 8080)
kubectl port-forward hello-app 8080:8080
# HTTP Server 응답 확인 (웹브라우저 or curl)
curl -v localhost:8080
# Pod 종료
kubectl delete pod --all
# kubectl delete pod hello-pod