하나의 Pod에 서로 다른 포트로 컨테이너 2개를 선언
Pod A에 있는 컨테이너 -> Pod B에 있는 컨테이너로 요청 전송/응답 확인
blue, green, red 3개의 앱이 있다는 가정하에
blue와 green은 같은 Pod안에
red는 다른 Pod에 구현될 예정
apiVersion: v1
kind: Pod
metadata:
name: blue-green-app
spec:
constainer:
- name: blue-app
image: simon/blue-app:1.0
ports:
- containerPort: 8080
resources:
limits:
memory: 64Mi
cpu: 250m
apiVersion: v1
kind: Pod
metadata:
name: blue-green-app
spec:
constainer:
- name: green-app
image: simon/green-app:1.0
ports:
- containerPort: 8081
apiVersion: v1
kind: Pod
metadata:
name: red-app
spec:
constainer:
- name: red-app
image: simon/red-app:1.0
ports:
- containerPort: 8080
spec:
containers:
- env:
- name: NODE_NAME
valueFrom :
fieldRef:
fieldPath: spec.nodeName
- name: NAMESPACE
valueFrom :
fieldRef:
fieldPath: metadata.namespace
- name: POD_IP
valueFrom :
fieldRef:
fieldPath: status.podIP
# Pod 생성
kubectl apply -f <yaml 파일 경로>
# Pod 실행 및 IP 확인
kubectl get pod -o wide
# Pod 종료
kubectl delete pod --all
kubectl delete pod <pod-name>
# 컨테이너 간 통신
kubectl exec <pod-name> -c <container-name> --curl -s localhost:<container-port>
# Pod 간 통신
kubectl exec <pod-name> -c <container-name> --curl -s <pod-id>:<container-port>
# 컨테이너 로그 출력
kubectl logs <pod-name> <container-name>
# 컨테이너 IP 확인
kubectl exec <pod-name> -c <container-name> --ifconfig eth0
# 컨테이너 환경변수 확인
kubectl exec <pod-name> --printenv
# 포트 포워딩
kubectl portforward <pod-name> <host-port>:<container-port>
apiVersion: v1
kind: Pod
metadata:
name: blue-green-app
spec:
containers:
- name: blue-app
image: simon/blue-app:1.0
ports:
- containerPort: 8080
env:
- name: NODE_NAME
valueFrom:
fieldRef:
fieldPath: spec.nodeName
- name: NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
- name: POD_IP
valueFrom:
fieldRef:
fieldPath: status.podIP
resources:
limits:
memory: '64Mi'
cpu: '250m'
- name: green-app
image: simon/green-app:1.0
ports:
- containerPort: 8081
env:
- name: NODE_NAME
valueFrom:
fieldRef:
fieldPath: spec.nodeName
- name: NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
- name: POD_IP
valueFrom:
fieldRef:
fieldPath: status.podIP
apply 명령어를 통해 정상적으로 생성이 되었다면
get pod 으로 상태 확인
같은 방법으로 red-app도 생성
logs 명령어로 blue-app의 로그 확인
exec ~~~ 명령어로 blue-app에 전달된 환경변수 확인
blue -> green 으로 curl 요청
blue -> red 으로 curl 요청 (다른 Pod)