이세개발
article thumbnail

Kuernetes 외부 서비스


쿠버네티스에서 외부 서비스를 사용하면, 클러스터 외부의 클라이언트들이 서비스를 찾고 통신할 수 있습니다. 이는 서비스 디스커버리를 가능하게 하며, 클러스터 외부의 클라이언트가 동적으로 생성되고 사라지는 파드와 통신할 수 있게 합니다.

다음은 외부 서비스를 테스트하기 위한 명령어입니다:

kubectl run nettool --image ghcr.io/c1t1d0s7/network-multitool -it --rm
> host -v example.default.svc.cluster.local

kubectl run 명령어는 ghcr.io/c1t1d0s7/network-multitool 이미지를 사용하여 nettool이라는 이름의 파드를 실행합니다. 이 파드는 네트워크 문제를 진단하는 데 사용되는 도구들을 포함하고 있습니다.

host -v 명령어는 example.default.svc.cluster.local라는 이름의 서비스에 대한 DNS 조회를 수행합니다. 이는 서비스가 올바르게 구성되었는지, 그리고 클러스터 외부의 클라이언트가 이 서비스를 찾을 수 있는지 확인하는 데 사용됩니다.

이제 각 YAML 파일에 대한 설명을 제공하겠습니다.


myapp-rs.yaml

이 YAML 파일은 쿠버네티스의 ReplicaSet을 정의합니다. ReplicaSet은 동일한 파드의 복사본을 여러 개 유지하도록 보장합니다.

apiVersion: apps/v1
kind: ReplicaSet
metadata:
  name: myapp-rs
spec:
  replicas: 3
  selector:
    matchLabels:
      app: myapp-rs
  template:
    metadata:
      labels:
        app: myapp-rs
    spec:
      containers:
      - name: myapp
        image: ghcr.io/c1t1d0s7/go-myweb:alpine
        ports:
        - containerPort: 8080

myapp-svc-extname.yaml

이 YAML 파일은 외부 이름을 가진 서비스를 정의합니다. 이 서비스는 example.com이라는 외부 도메인을 참조합니다.

apiVersion: v1
kind: Service
metadata:
  name: example
spec:
  type: ExternalName
  externalName: example.com

myapp-svc-lb.yaml

이 YAML 파일은 로드 밸런서를 사용하는 서비스를 정의합니다. 로드 밸런서는 클러스터 외부의 클라이언트가 서비스에 접근할 수 있도록 합니다.

apiVersion: v1
kind: Service
metadata:
  name: myapp-svc-lb
spec:
  type: LoadBalancer
  ports:
  - port: 80
    targetPort: 8080
  selector:
    app: myapp-rs

myapp-svc-np.yaml

이 YAML 파일은 노드 포트를 사용하는 서비스를 정의합니다. 노드 포트는 클러스터의 모든 노드에서 동일한 포트를 통해 서비스에 접근할 수 있도록 합니다.

apiVersion: v1
kind: Service
metadata:
  name: myapp-svc-np
spec:
  type: NodePort
  ports:
  - port: 80
    targetPort: 8080
    nodePort: 31111
  selector:
    app: myapp-rs

이러한 YAML 파일들은 쿠버네티스 클러스터 내에서 서비스를 생성하고 관리하는 데 사용됩니다. 이들 각각은 특정 목적을 가지고 있으며, 그 목적은 파드의 배포, 서비스의 라우팅, 외부 클라이언트의 접근 등 다양합니다. 이러한 설정들은 애플리케이션의 가용성과 확장성을 높이는 데 도움이 됩니다.


태그: #쿠버네티스 #외부서비스 #ReplicaSet #ExternalName #LoadBalancer #NodePort #네트워크 #클러스터

profile

이세개발

@print(name)

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!