- 파드를 안정적으로 실행하기
- 이전까진 파드를 직접 생성하는 법을 배웠는데, 이런 파드들은 따로 관리되고 있지 않다.
- 파드가 안정적으로 유지되기 위해선 잘 살아있는지 모니터링하고 상태에 따라 적절한 조치를 해줄 친구들이 필요하다.
- 쿠버네티스는 기본적으로 컨테이너에 문제가 생기면 다시 시작하여 복구하는 기능이 있다.
- 여기서 문제가 발생했는지 확인하는 작업을 내부 어플리케이션에서 하면 무한루프, 데드락, 메모리 누수 등 신경써야 할 것이 많아진다.
- 그렇기 때문에 쿠버네티스는 내부의 기능에 의존하지 않고 외부에서 체크가 가능하게 해주고 있다.
- 라이브니스 프로브
- 컨테이너가 살아있는지 지속적으로 확인
- 파드의 스펙에 각 컨테이너의 라이브니스 프로브를 설정할 수 있다.
- 3가지 메커니즘을 가지고 실행된다.
- HTTP GET 프로브 : get요청을 보내 정상 응답을 반환하는지 확인
- TCP 소켓 프로브 : 컨테이너에 지정된 포트에 TCP연결을 시도하여 정상 연결되는지 확인
- Exec 프로브 : 컨테이너에 임의의 명령을 내리고 종료 상태 코드가 정상인지 확인
- 3가지 중 원하는 프로브를 추가할 수 있다.
... spec: containers: - image: luksa/kubia name: kubia livenessProbe: httpGet: path: / port: 8080 ...
- 컨테이너가 재생성 될 경우 describe에 이전 상태( 재실행 이유 ) 등을 확인 할 수 있다.
- 프로브에 옵션을 달 수도 있다. (지연, 제한시간, 기간 등)
- 라이브니스 프로브는 파드가 실행 중인 노드에서 실행한다. 만약 노드가 죽을 경우에 마스터 노드의 컨트롤 플레인이 재실행 하는 역할을 한다. 하지만 사용자가 직접 실행한 파드의 경우 노드가 죽으면 자동으로 재실행 될 수 없다.
- 노드가 죽더라도 파드가 다른 노드에서 재실행 될 수 있도록 해주는 친구들이 필요하다.
- 레플리케이션컨트롤러
- 실행 중인 관리 파드 목록을 모니터링하고 관리 파드 수가 다르면 같아지도록 삭제, 생성을 한다.
- 레이블 셀렉터로 파드를 지정 가능 (ex. app=value)
- 레플리카 수로 관리하는 파드의 갯수를 설정 가능
- 파드 템플릿으로 관리하는 파드를 새로 만들때 어떤 파드를 만들지 설정 가능.
- 레플리케이션 컨트롤러는 파드의 수만 모니터링 한다 → 파드 템플릿이나 레이블을 변경하더라도 기존 파드가 레플리카 수에 만족하면 아무 작업도 하지 않는다.
- 레플리카 셋
- 레플리케이션컨트롤러와 거의 비슷하게 작동
- 레이블 셀렉터 표현식을 더 다양하게 사용 가능
- 이후 공부할 디플로이먼트에 의해 관리할 수 있음.
- 레플리케이션 컨트롤러와는 다르게 레이블 셀렉터 수정 불가능.
- 레플리케이션 컨트롤러와는 다르게 레플리카 셋 삭제 시 관리 파드도 삭제
- 데몬 셋
- 원하는 노드들에 파드 하나씩 만들기
- 노드 셀렉터로 선택한 노드들한테만 파드 하나씩 만들기
- ex) 노드의 로그 수집기
- 잡
- 파드 만들어서 작업 성공하면 컨테이너 재실행 x
- 작업 실패시 restart할 지 설정 가능
- 옵션으로
- completions : 연달아 총 몇 번 시킬지
- parallelism : 병렬적으로 한번에 몇개까지 실행 시킬지
- activeDeadlineSeconds : 작업에 데드라인을 걸어 시간 안에 성공 못하면 실패 시킴.
- 크론잡
- 잡을 크론에 태워서 주기적으로 실행
'CS > Infra' 카테고리의 다른 글
쿠버네티스 공부 7일차 :: 서비스의 친구 인그레스 (0) | 2022.10.28 |
---|---|
쿠버네티스 공부 6일차 :: 서비스는 누구지? 파드를 외부와 연결하기 (0) | 2022.10.24 |
쿠버네티스 공부 4일차 :: 파드 만드는 법, 파드에 붙여서 쓸 수 있는 것들(포트포워딩, 레이블, 네임스페이스, 어노테이션) (0) | 2022.10.12 |
쿠버네티스 공부 3일차 :: 파드가 정확히 뭐야? (0) | 2022.10.10 |
쿠버네티스 공부 2일차 :: 쿠버네티스는 어떻게 굴러가? (0) | 2022.10.07 |