apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.14.2
ports:
- containerPort: 80
kubectl apply -f deployment.yaml
생성된 Pod 의 IP 를 확인하고 접속을 시도해봅니다.
kubectl get pod -o wide
# Pod 의 IP 를 확인합니다.
curl -X GET <POD-IP> -vvv
ping <POD-IP>
# 통신 불가능
minikube ssh
# minikube 내부로 접속합니다.
curl -X GET <POD-IP> -vvv
ping <POD-IP>
# 통신 가능
apiVersion: v1
kind: Service
metadata:
name: my-nginx
labels:
run: my-nginx
spec:
type: NodePort # Service 의 Type 을 명시하는 부분입니다. 자세한 설명은 추후 말씀드리겠습니다.
ports:
- port: 80
protocol: TCP
selector: # 아래 label 을 가진 Pod 을 매핑하는 부분입니다.
app: nginx
vi service.yaml
# 파일을 열어 위의 내용을 복사 붙여넣기 합니다.
kubectl apply -f service.yaml
kubectl get service
# PORT 80:<PORT> 숫자 확인
curl -X GET $(minikube ip):<PORT>
# 이렇게 서비스를 통해서 클러스터 외부에서도 정상적으로 pod 에 접속할 수 있는 것을 확인합니다.