NodePort

### service-nodeport.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-nginx
  namespace: default
spec:
  replicas: 1
  selector:
    matchLabels:
      app: my-nginx
  template:
    metadata:
      labels:
        app: my-nginx
    spec:
      containers:
        - name: my-nginx
          image: nginx
          imagePullPolicy: Always
          ports:
            - containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
  name: svc-nodeport
spec:
  type: NodePort
  selector:
    app: my-nginx
  ports:
  - port: 80
    nodePort: 30080
    targetPort: 80
# node ec2 보안그룹에 30080 열어주기
kubectl get node -o wide
curl http://<node-ip>:30080

Untitled

LoadBalancer

# 위 service-nodeport.yaml에서 service 부분만 변경
apiVersion: v1
kind: Service
metadata:
  name: svc-lb
spec:
  type: LoadBalancer
  selector:
    app: my-nginx
  ports:
  - port: 80
    targetPort: 80
kubectl get svc
# 기존 노드포트 타입의 서비스 삭제
kubectl delete svc svc-nodeport
# 로드밸런서 타입 서비스 생성
kubectl apply -f service-nodeport.yaml
# external-ip에 CLB dns 주소 보이면 성공
kubectl get svc
curl http://<clb-dns>

Untitled