[kubernetes] Pod Service / NodePort 연결

‍정진철·2023년 6월 5일
0

Kubernetes

목록 보기
4/4

1. replicaSet 생성

two-replicas-with-label.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: eva-west
  labels:
    app: eva
    release: west
spec:
  replicas: 2
  selector:
    matchLabels:
      app: eva
      release: west
  template:
    metadata:
      labels:
        app: eva
        release: west
    spec:
      containers:
      - name: nginx
        image: nginx:latest
        ports:
        - containerPort: 80
      - name: redis
        image: redis
        volumeMounts:
        - name: redis-storage
          mountPath: /data/redis
      volumes:
      - name: redis-storage
        emptyDir: {}
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: eva-east
  labels:
    app: eva
    release: east
spec:
  replicas: 2
  selector:
    matchLabels:
      app: eva
      release: east
  template:
    metadata:
      labels:
        app: eva
        release: east
    spec:
      containers:
      - name: nginx
        image: nginx:latest
        ports:
        - containerPort: 80
      - name: redis
        image: redis
        volumeMounts:
        - name: redis-storage
          mountPath: /data/redis
      volumes:
      - name: redis-storage
        emptyDir: {}
  

kubectl apply -f two-replicas-with-label.yaml

kubectl get pod -l app=eva
replicaSet ( east, west ) 확인

2. NodePort 적용하기

simple-service.yaml

  • 위에서 생성한 eva라는 app 중 west pod 에게 한정 Service 연결 후 NodePort 생성
  • 특정 VM 과 연결된 NodePort로 트래픽이 전송되고 Service를 거쳐 pod 들에게 전달되는 과정

apiVersion: v1
kind: Service
metadata:
  name: eva
spec:
  type: NodePort
  selector:
    app: eva
    release: west
  ports:
  - name: http
    port: 80

kubectl apply -f simple-service.yaml
위에서 설정한 NodePort (외부 에서 들어오는 포트) 가 80번 포트로 연결됨

kubectl cluster-info (master IP 주소 확인)
해당 NodePort 를 열어줬으니 masterIP 를 이용해 해당 포트로 들어가보자 하지만 나는 현재 minikube를 사용중이라 MasterIP를 사용해서 NodePort 를 사용하지 못함 그러므로 minikube service를 사용해 터미널을 따로 또 뚫기를 요청해서 nginx에 접근 필요


컨테이너 생성 후 Pod 에 접근

우리가 생성한 pod(eva) 에 존재하는 nginx에 접근해보자 그러기 위해서 또 다른 alphine 컨테이너 생성

alphine 컨테이너 띄우기
apk add curl
curl http://eva 수행

kubectl logs -f {Pod ID} nginx
kubectl logs -f eva-west-6668567578-7dp4w nginx


Cleanup Kubernets

profile
WILL is ALL

0개의 댓글