📂
Amazon EKS
  • Amazon EKS
  • 워크스페이스 생성하기
    • Cloud9 IDE 환경 구성
    • IAM 역할 생성
    • SSH & CMK Key 생성하기
  • EKS 클러스터 구축
    • EKS 클러스터 만들기
  • 쿠버네티스 대시보드 배포
    • Kubernetes 공식 대시보드 배포
  • 마이크로서비스 배포
    • 예제 애플리케이션 배포
    • 서비스 스케일(Scaling)
    • 애플리케이션 정리하기
  • 애플리케이션 배포 - Helm
    • HELM 설치
    • Helm으로 Nginx 배포
    • Helm을 사용하여 마이크로서비스 배포
    • 정리하기
  • 리소스 관리 - POD 배치
    • NodeSelector
    • Affinity and Anti-affinity
    • 더 실용적인 사용 사례
    • 정리하기
  • 리소스 관리 - Health Checks
    • Liveness 프로브 구성
    • Readiness 프로브 구성
    • 정리하기
  • 리소스 관리 - AutoScaling
    • HPA 구성하기
    • CA 구성하기
    • 정리하기
  • 네트워킹 - 서비스 노출
    • 서비스와 애플리케이션 연결
    • 서비스에 접근하기
    • 서비스 노출
    • Ingress
    • Ingress Controller
    • 정리하기
  • 네트워크 - Calico 정책
    • Calico 설치하기
    • Stars Policy Demo
    • 정리하기
  • Updating 권한설정 - RBAC
    • 테스트 POD 설치
    • 사용자 생성 및 맵핑
    • 역할과 바인딩
    • 정리하기
  • Updating 권한설정 - IAM 그룹
    • IAM Role, Group & User 생성하기
    • RBAC 설정하기
    • EKS 엑세스 테스트
    • 정리하기
  • Updating 권한설정 - Service account
    • OIDC 자격 증명 공급자 생성하기
    • IAM 역할 생성 및 지정
    • 샘플 POD 배포
    • 정리하기
  • Updating - 네트워크 - POD Security Group
    • SG 생성하기
    • RDS 생성하기
    • CNI 구성하기
    • SG 정책
    • Pod 배포하기
    • 정리하기
  • Updating - 모니터링 - Prometheus and Grafana
    • Prometheus 배포하기
    • Grafana 배포하기
    • 정리하기(Optional)
  • Updating 모니터링 - X-Ray
    • X-Ray DaemonSet 배포하기
    • 샘플 마이크로서비스 배포
    • X-Ray console 확인
    • 정리하기(Optional)
  • Updating 모니터링 - Container Insights
    • 사전 준비
    • Container Insights 구성하기
    • 부하 테스트
    • Container Insights 확인하기
    • 정리하기(Optional)
  • Updating CD - Gitops with Flux
    • 사전 준비
    • Codepipeline
    • EKS에 배포
    • 정리하기
  • Updating Argo Rollouts
  • Updating Service Mesh - AWS App Mesh
    • Fargate 및 OBSERVABILITY 구성
    • Product Catalog App 배포
    • APP MESH 설치
    • Porting to APP MESH
    • Virtual Gateway 구성
    • Canary
    • Observability
  • Updating 버전 업그레이드 - EKS Cluster
    • Upgrade EKS control Plane
    • Upgrade EKS CORE ADD-ONs
    • Upgrade Managed Node Group
Powered by GitBook
On this page
  • 1. 프로브 구성하기
  • 2. 실패 확인하기

Was this helpful?

  1. 리소스 관리 - Health Checks

Liveness 프로브 구성

1. 프로브 구성하기

아래 명령을 사용하여 디렉토리를 만듭니다.

mkdir -p ~/environment/healthchecks

다음 코드 블록을 실행하여 manifest 파일 ~/environment/healthchecks/liveness-app.yaml을 생성합니다. 구성 파일에서 livenessProbe 필드는 kubelet이 컨테이너가 정상인지 여부를 고려하기 위해 컨테이너를 확인하는 방법을 결정합니다. kubelet은 periodSeconds 필드를 사용하여 컨테이너를 자주 확인합니다. 이 경우 kubelet은 5초 마다 활성 상태 프로브를 확인합니다. initialDelaySeconds 필드는 kubelet에게 첫 번째 프로브를 수행하기 전에 5초 동안 기다려야 함을 알리는 데 사용됩니다. 프로브를 수행하기 위해 kubelet은 이 파드를 호스팅하는 서버에 HTTP GET 요청을 보내고 서버 /health에 대한 핸들러가 성공 코드를 반환 하면 컨테이너를 정상으로 간주 합니다. 핸들러가 실패 코드를 반환 하면 kubelet은 컨테이너를 종료하고 다시 시작 합니다.

cat <<EoF > ~/environment/healthchecks/liveness-app.yaml
apiVersion: v1
kind: Pod
metadata:
  name: liveness-app
spec:
  containers:
  - name: liveness
    image: brentley/ecsdemo-nodejs
    livenessProbe:
      httpGet:
        path: /health
        port: 3000
      initialDelaySeconds: 5
      periodSeconds: 5
EoF

manifest를 적용하여 포드를 만들어 보겠습니다.

kubectl apply -f ~/environment/healthchecks/liveness-app.yaml

위의 명령은 활성 상태 프로브가 있는 파드를 생성 합니다.

kubectl get pod liveness-app

출력은 다음과 같습니다.

kubectl describe 명령은 모든 프로브 실패 또는 재시작을 보여 주는 이벤트 기록을 표시 합니다.

kubectl describe pod liveness-app

2. 실패 확인하기

다음 명령을 실행하여 SIGUSR1 신호를 nodejs 애플리케이션에 보냅니다. 이 명령을 실행하면 docker 런타임의 애플리케이션 프로세스에 kill 신호를 보냅니다.

kubectl exec -it liveness-app -- /bin/kill -s SIGUSR1 1

15-20초 동안 기다린 후 kubectl describe 명령을 수행하면 컨테이너를 종료하고 다시 시작하는 kubelet 작업을 확인할 수 있습니다.

nodejs 애플리케이션이 SIGUSR1 신호로 디버그 모드에 진입 했을 때 상태 확인 핑에 응답하지 않았고 kubelet이 컨테이너를 종료했습니다. 컨테이너에는 재시작 정책이 기본으로 적용 되었 있습니다.

kubectl get pod liveness-app

출력은 다음과 같습니다.

컨테이너 health check를 확인하기 위해서 아래 명령어를 수행할 수 있습니다.

kubectl logs liveness-app

컨테이너가 충돌 한 경우 --previous 플래그로 컨테이너의 이전 인스턴스화에서 로그를 검색하기 위해 kubectl logs를 사용할 수도 있습니다.

kubectl logs liveness-app --previous
Previous리소스 관리 - Health ChecksNextReadiness 프로브 구성

Last updated 3 years ago

Was this helpful?