3-4. Service 만들어보기

황인권·2025년 2월 13일

Kubernetes

목록 보기
22/37

ClusterIP

apiVersion: v1
kind: Service
metadata:
  name: sample-service
  namespace: default
spec:
  selector:
    app: nginx
  ports:
    - protocol: TCP
      port: 80
      targetPort: 80

Port-forwar로 ClusterIP 서비스 접속하기

kubectl port-forward service/sample-service 8080:80

NodePort

  • NodePort의 Port는 30000 ~ 32767의 포트를 사용한다.
apiVersion: v1
kind: Service
metadata:
  name: sample-service
  namespace: default
spec:
  type: NodePort
  selector:
    app: nginx
  ports:
    - protocol: TCP
      port: 80
      targetPort: 80
      nodePort: 30001

NodePort로 접속하기 위해 노드 방화벽 해제하기

NodePort로 설정된 포트는 클러스터 내에 있는 모든 Node에 적용된다.
즉, Pod가 가동되고 있지 않은 Node도 상관없이 어떤 Node의 IP 주소로 접속하더라도 Service로 연결된다.

AWS 사용

  1. 클러스터 상세 페이지에서 컴퓨팅 탭에 진입

  2. 가동되고 있는 노드 중 하나를 클릭하여 노드 상세 페이지로 진입

  3. 인스턴스 항목에 있는 링크를 클릭하여, 인스턴스 상세 화면으로 이동

  4. 보안탭을 클릭

  5. 인바운드 규칙 항목의 첫번째 아이템의 보안그룹을 클릭

  6. 보안 그룹 ID 항목을 클릭하여 보안 그룹 설정 화면으로 이동

  7. 인바운드 규칙 탬의 '인바운드 규칙 편집' 버튼을 클릭하여 편집 화면으로 진입

  8. 좌측 하단의 '규칙 추가' 버튼을 눌러 새로운 규칙을 추가

  9. 사용자 지정 TCP, NodePort에서 개방한 포트 번호, Anywhere IPv4를 입력하고 규칙을 저장

  10. 다시 인스턴스 상세 정보 화면으로 돌아가 '퍼블릭 IPv4 주소'로 접속을 시도해 본다.

GCP 사용

  1. CLI에 다음과 같은 명령어를 입력해 NodePort로 개방한 포트의 방화벽을 해제
gcloud compute firewall-rules create nodeport-study-allow-port --allow=tcp:30001

  1. GCP 콘솔에서 'Compute Engine' 서비스에 접속
  1. 'VM 인스턴스' 항목에서 'gke-'로 시작하는 인스턴스 중 하나의 외부 IP 주소를 복사해 접속을 시도

profile
inkwon Hwang

0개의 댓글