이세개발
article thumbnail

Kubernetes Readiness Probe

쿠버네티스에서 Readiness Probe는 컨테이너가 트래픽을 받을 준비가 되었는지를 확인하는 역할을 합니다. 이는 서비스가 트래픽을 안전하게 라우팅할 수 있도록 보장하는 중요한 기능입니다.
일정한 간격으로 애플리케이션의 상태를 확인하고, 특정 조건을 충족할 때 애플리케이션을 "레디(Ready)" 상태로 표시합니다. 이는 클라이언트의 요청을 처리할 준비가 된 상태를 의미하며, 클러스터의 로드 밸런서 등에서 애플리케이션을 배포 가능한 상태로 간주합니다.

레디니스 프로브는 HTTP 요청, TCP 소켓 연결, 컨테이너 내부 명령 실행 등 다양한 방법으로 애플리케이션의 상태를 확인할 수 있습니다. 프로브는 애플리케이션의 특정 엔드포인트나 포트를 대상으로 요청을 보내고, 응답을 기반으로 애플리케이션의 상태를 판단합니다.

다음은 각 YAML 파일에 대한 설명입니다.


myapp-rs-readiness.yaml

이 YAML 파일은 Readiness Probe가 설정된 ReplicaSet을 정의합니다. 이 ReplicaSet은 동일한 파드의 복사본을 여러 개 유지하도록 보장합니다.

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

여기서 readinessProbe는 컨테이너가 준비된 상태인지를 확인하는 명령어를 실행합니다. 이 경우, /var/ready 디렉토리의 존재를 확인하는 ls 명령어를 사용합니다.

myapp-svc-readiness.yaml

이 YAML 파일은 서비스를 정의합니다. 이 서비스는 특정 포트를 통해 파드에 접근할 수 있도록 합니다.

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

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


profile

이세개발

@print(name)

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