Tencent Cloud TKE 커널은 주기적으로 컨테이너를 모니터링하는 Kubernetes를 기반으로 합니다. 그런 다음 결과를 사용하여 컨테이너의 상태를 결정하고 필요한 경우 작업을 수행합니다.
상태 확인 유형
상태 확인은 다음 유형으로 나뉩니다.
Liveness check: 컨테이너의 활성 상태 여부를 확인합니다. 이는 ps를 사용하여 프로세스가 있는지 여부를 확인하는 것과 유사합니다. 활성 확인 실패 시 클러스터가 컨테이너를 재시작합니다. 활성 확인이 성공되면 작업이 수행되지 않습니다.
Readiness check: 컨테이너가 사용자 요청을 처리할 준비가 되었는지 확인합니다. 예를 들어 애플리케이션이 서비스를 제공하기 위해 데이터 디스크 마운트 또는 외부 모듈 시작에 의존하기 때문에 시작하는 데 시간이 걸리는 경우 Kubernetes는 준비 상태 프로브를 사용하여 애플리케이션 시작이 완료되었는지 확인합니다. 준비 프로브가 실패하면 준비 프로브가 성공할 때까지 해당 컨테이너에 대한 요청이 차단됩니다.
상태 확인 방법
TCP 포트 프로브
TCP 포트 프로브는 다음과 같이 작동합니다.
클러스터는 주기적으로 TCP 서비스를 제공하는 컨테이너에 TCP 연결을 설정하려고 시도합니다. 연결이 설정되면 프로브가 성공한 것입니다. 그렇지 않으면 프로브 실패입니다. TCP 프로브가 작동하려면 컨테이너의 수신 포트를 지정해야 합니다.
예를 들어 포트 6379에서 실행 중인 redis 서비스가 있고 포트 6379를 검사하도록 TCP 프로브가 설정되어 있다고 가정합니다. 클러스터는 주기적으로 포트 6379에서 컨테이너에 대한 TCP 연결을 설정하려고 시도합니다. 연결이 설정되면 프로브가 성공한 것입니다. 그렇지 않으면 프로브 실패됩니다.
HTTP 요청 프로브
HTTP 요청 프로브는 HTTP/HTTPS 서비스를 제공하는 컨테이너용이며, 여기서 클러스터는 주기적으로 컨테이너에 대한 HTTP/HTTPS GET 요청을 시작합니다. HTTP/HTTPS response의 반환 코드가 200 - 399 범위에 있으면 프로브가 성공합니다. 그렇지 않으면 실패합니다. HTTP 요청 프로브를 사용하는 경우 수신 포트와 HTTP/HTTPS 요청 경로를 지정해야 합니다.
예를 들어 HTTP 서비스에 서비스 포트 80 및 HTTP 확인 경로 /health-check를 제공하는 컨테이너의 경우 클러스터는 주기적으로 컨테이너에 대한 GET http://containerIP:80/health-check 요청을 시작합니다.
명령 확인 실행
강력한 확인 방법입니다. 사용자가 컨테이너 내에서 실행 가능한 명령을 지정한 후 클러스터는 주기적으로 명령을 실행합니다. 결과가 0이면 검사가 성공합니다. 그렇지 않으면 검사가 실패합니다.
TCP 포트 프로브와 HTTP 요청 프로브를 모두 실행 명령 검사로 바꿀 수 있습니다. TCP 포트 프로브를 대체하기 위해 컨테이너의 포트에 connect하는 특정 프로그램을 작성할 수 있습니다. connect가 성공하면 스크립트는 0을 반환합니다. 그렇지 않으면 -1을 반환합니다.
HTTP 요청 프로브를 교체하려면 wget을 실행하여 컨테이너에서 콘텐츠를 검색하고 response의 반환 코드를 확인하는 스크립트를 작성할 수 있습니다. 예를 들어 wget http://127.0.0.1:80/health-check입니다. 반환 코드가 200 - 399 범위에 있으면 스크립트는 0을 반환합니다. 그렇지 않으면 -1을 반환합니다.
주의사항
실행할 프로그램은 컨테이너 이미지의 일부여야 합니다. 그렇지 않으면 프로그램을 찾을 수 없기 때문에 실행 명령 검사가 실패합니다.
실행 명령 검사가 shell 스크립트를 사용하는 경우 스크립트를 명령으로 사용할 수 없습니다. 스크립트 인터프리터를 사용하여 검사를 수행해야 합니다. 예를 들어 스크립트가 /data/scripts/health_check.sh인 경우 다음을 사용합니다.
sh
/data/scripts/health_check.sh
1.1 클러스터의 ‘Deployment’ 페이지에서 Create를 클릭합니다. CreateWorkload 페이지가 나타납니다.
1.2 ‘Create Workload’ 페이지로 이동하여 ‘Containers in a pod’ 섹션에서 Advanced Settings을 선택합니다.
1.3 ‘Container Health Check’에 대해 Liveness Check을 선택하고 다음 매개변수를 설정합니다.
Checking Method: ‘Execute Command Check’을 선택합니다.
Execute Command: 다음을 입력합니다.
sh
/data/scripts/health_check.sh
기타 공용 매개변수
Start-up Latency: 단위: 초. 컨테이너가 시작된 후 프로브를 시작하기 전에 대기할 시간을 지정합니다. 예를 들어 시작 지연이 5로 설정된 경우 컨테이너가 시작된 후 5초 후에 상태 확인이 시작됩니다.
Interval: 단위: 초. 상태 확인 빈도를 지정합니다. 예를 들어 간격을 10으로 설정하면 상태 확인이 10초마다 한 번씩 실행됩니다.
Response timeout: 단위: 초. 상태 확인을 위한 시간 초과 기간을 지정합니다. TCP 포트 프로브, HTTP 요청 프로브, 실행 명령 확인에 대한 TCP 연결 시간 초과 기간, HTTP 요청 응답 시간 초과 기간 및 실행 명령 시간 초과 기간을 각각 나타냅니다.
Healthy Threshold: 단위: 회. 컨테이너가 정상으로 결정되기 전에 연속적인 상태 확인이 성공한 시간을 지정합니다. 예를 들어 정상 임계값이 3으로 설정된 경우 프로브가 연속 3회 성공하는 경우에만 컨테이너가 정상으로 간주됩니다.
주의:
활성 상태 확인의 경우 정상 임계값은 1일 수 있습니다. 다른 값은 유효하지 않습니다.
Unhealthy Threshold: 단위: 회. 컨테이너가 비정상으로 결정되기 전에 연속적인 상태 확인 실패 횟수를 지정합니다. 예를 들어 비정상 임계값이 3으로 설정된 경우 프로브가 연속적으로 세 번 실패하는 경우에만 컨테이너가 비정상으로 간주됩니다.