• 파드를 안정적으로 실행하기
    • 이전까진 파드를 직접 생성하는 법을 배웠는데, 이런 파드들은 따로 관리되고 있지 않다.
    • 파드가 안정적으로 유지되기 위해선 잘 살아있는지 모니터링하고 상태에 따라 적절한 조치를 해줄 친구들이 필요하다.
    • 쿠버네티스는 기본적으로 컨테이너에 문제가 생기면 다시 시작하여 복구하는 기능이 있다.
    • 여기서 문제가 발생했는지 확인하는 작업을 내부 어플리케이션에서 하면 무한루프, 데드락, 메모리 누수 등 신경써야 할 것이 많아진다.
    • 그렇기 때문에 쿠버네티스는 내부의 기능에 의존하지 않고 외부에서 체크가 가능하게 해주고 있다.
  • 라이브니스 프로브
    • 컨테이너가 살아있는지 지속적으로 확인
    • 파드의 스펙에 각 컨테이너의 라이브니스 프로브를 설정할 수 있다.
    • 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 : 작업에 데드라인을 걸어 시간 안에 성공 못하면 실패 시킴.
  • 크론잡
    • 잡을 크론에 태워서 주기적으로 실행

+ Recent posts