본문 바로가기

Infrastructure/Kubernetes

(46)
[Pod] 사용자 네임스페이스 사용자 네임스페이스 쿠버네티스 공식문서를 확인하며 사용자 네임스페이스에 대해서 기억해야 하는 부분을 기록한다. 사용자 네임스페이스를 사용하면 컨테이너 내부에서 실행 중인 사용자를 호스트의 사용자로부터 격리할 수 있다. 컨테이너에서 루트로 실행되는 프로세스는 호스트에서 다른 사용자로 실행할 수 있다. 프로세스는 사용자 네임스페이스 내부의 작업에 대한 모든 권한을 갖지만 네임스페이스 외부의 작업에 대해서는 권한이 없다. 사용자 네임스페이스 기능을 사용하여 손상된 컨테이너가 동일한 노드의 호스트 또는 다른 파드에 미칠 수 있는 피해를 줄일 수 있다. 사용자 네임스페이스가 활성화되면 막을 수 있는 보안 취약점 중에 높음 및 보안으로 취급되는 것들이 있다. 사용자 네임스페이스가 추후로 발생하는 보안 취약점 또한 ..
[Pod] 임시(Ephemeral) 컨테이너 임시(Ephemeral) 컨테이너 쿠버네티스 공식문서를 확인하며 임시 컨테이너에에 대해서 기억해야 하는 부분을 기록한다. 임시 컨테이너는 트러블슈팅과 같은 사용자가 시작한 작업을 완료하기 위해 기존 파드에서 임시적으로 실행된다. 임시 컨테이너는 애플리케이션을 빌드하는 경우보다는 서비스 점검과 같은 경우에 더 적합하다. 파드는 쿠버네티스 애플리케이션의 기본 구성 요소이며 일회용이다. 언제든 재활용이 아니라 교체 가능한 것으로 의도되었기 때문에, 사용자는 파드가 한번 생성되면 컨테이너를 추가할 수 없다. 컨테이너를 추가하는 대신 일반적으로 디플로이먼트를 사용해서 제어하는 방식으로 파드를 삭제하고 교체한다. 임시 컨테이너란 임시 컨테이너는 리소스 또는 실행에 대한 보증이 없다는 점에서 다른 컨테이너와 다르며,..
[Pod] 중단(Disruption) 중단(Disruption) 쿠버네티스 공식문서를 확인하며 파드의 중단에 대해서 기억해야 하는 부분을 기록한다. “파드의 중단”은 고가용성 애플리케이션을 구성하려는 소유자, 파드의 장애 유형을 이해하기 위한 소유자, 클러스터의 업그레이드와 오토스케일링과 같은 클러스터의 자동화 작업을 하려는 관리자들은 숙지하고 있어야 한다. 자발적 중단과 비자발적 중단 파드는 사람 또는 컨트롤러가 파괴하거나 불가피한 하드웨어 오류 또는 시스템 소프트웨어 오류가 아니면 사라지지 않는다. 아래와 같이 불가피한 상황에서 애플리케이션이 중단되는 것을 “비자발적 중단”이라고 부른다. 노드를 지원하는 물리 머신의 하드웨어 오류 클러스터 관리자의 실수로 VM 삭제 클라우드 공급자 또는 하이퍼바이저의 오류로 인한 VM 장애 커널 패닉 클..
[Pod] 초기화 컨테이너 초기화 컨테이너 쿠버네티스 공식문서를 확인하며 초기화 컨테이너에 대해서 기억해야 하는 부분을 기록한다. 초기화 컨테이너는 파드의 앱 컨테이너들이 실행되기 전에 실행되는 특수한 컨테이너로 앱 이미지에는 없는 유틸리티 또는 설정 스크립트 등을 포함할 수 있다. 초기화 컨테이너는 containers 배열에 과 나란히 파드 스펙에 명시할 수 있다. 초기화 컨테이너는 일반 컨테이너와 비교하여 아래와 같은 차이가 있다. 초기화 컨테이너는 항상 완료를 목표로 실행된다. 각 초기화 컨테이너는 다음 초기화 컨테이너가 시작되기 전에 성공적으로 완료되어야 한다. 파드의 초기화 컨테이너가 실패하면, kubelet은 초기화 컨테이너가 성공할 때까지 반복적으로 재시작한다. 만약 파드의 restartPolicy를 Never로 설정..
[Pod] 라이프사이클 라이프사이클 쿠버네티스 공식문서를 확인하며 파드 라이프사이클에 대해서 기억해야 하는 부분을 기록한다. 파드는 정의된 라이프사이클을 따르며, Pending 단계에서 시작해서, 기본 컨테이너 중 적어도 하나 이상이 OK로 시작하면 Running 단계를 통과하고, 파드의 컨테이너가 실패로 종료되었는지 여부에 따라 Succeeded 또는 Failed 단계로 이동한다. 파드가 실행되는 동안, kubelet은 일종의 오류를 처리하기 위해 컨테이너를 다시 시작할 수 있다. 파드 내에서, 쿠버네티스는 다양한 컨테이너 상태를 추적하고 파드를 다시 정상 상태로 만들기 위해 취할 조치를 결정한다. 쿠버네티스 API에서 파드는 명세와 실제 상태를 모두 가지고 이러한 오브젝트의 상태는 일련의 파드 컨디션으로 구성된다. 사용자의..
[Pod] 개념 파드 쿠버네티스 공식문서를 확인하며 파드에 대해서 기억해야 하는 부분을 기록한다. “파드”는 쿠버네티스에서 생성하고 관리할 수 있는 배포 가능한 가장 작은 컴퓨팅 단위이며 하나 이상의 컨테이너의 그룹이다. “그룹”은 스토리지 및 네티워크를 공유하고, 해당 컨테이너를 구동하는 방식에 대한 명세를 갖는다. “파드의 콘텐츠”는 항상 함께 배치되고, 함께 스케줄되며, 공유 콘텍스트에서 실행된다. 파드는 애플리케이션 별 “논리 호스트"를 모델링한다. 여기에는 상대적으로 밀접하게 결합된 하나 이상의 애플리케이션 컨테이너가 포함된다. 클라우드가 아닌 콘텍스트에서, 동일한 물리 또는 가상 머신에서 실행되는 애플리케이션은 동일한 논리 호스트에서 실행되는 클라우드 애플리케이션과 비슷하다. 애플리케이션 컨테이너와 마찬가지로..
[워크로드] 개념 워크로드 쿠버네티스 공식문서를 확인하며 워크로드에 대해서 기억해야 하는 부분을 기록한다. “워크로드”는 쿠버네티스에서 구동되는 애플리케이션을 뜻한다. “워크로드”가 단일 컴포넌트이거나 함께 작동하는 여러 컴포넌트이든 관계없이, 쿠버네티스에서는 워크로드를 일련의 파드 집합 내에서 실행한다. 쿠버네티스에서 **Pod는 클러스터에서 실행 중인 컨테이너 집합을 의미**한다. 파드에는 정의된 라이프사이클이 있다. 일단 파드가 클러스터에서 실행되고 나서 해당 파드가 동작 중인 노드에 심각한 오류가 발생하면 해당 노드의 모든 파드가 실패하고 이러한 상황을 최종(final)로 취급한다. 최종 상황에서 사용자는 향후 노드가 복구되는 것과 상관 없이 Pod를 새로 생성해야 한다. “워크로드 리소스”는 사용자를 대신하여 파..
[컨테이너] 환경변수와 라이프사이클 훅(Hook) 환경변수와 라이프사이클 훅(Hook) 쿠버네티스 공식문서를 확인하며 환경변수와 라이프사이클 훅(Hook)에 대해서 기억해야 하는 부분을 기록한다. 환경변수 컨테이너 환경 컨테이너 환경은 컨테이너에 몇 가지 중요한 리소스를 제공한다. 하나의 이미지와 하나 이상의 볼륨이 결합된 파일 시스템 컨테이너 자신에 대한 정보 클러스터 내의 다른 오브젝트에 대한 정보 컨테이너 정보 컨테이너의 “호스트네임”은 컨테이너가 동작 중인 파드의 이름과 같다. **hostname 커맨드 또는 libc의 gethostname 함수 호출을 통해서 구할 수** 있다. 파드 이름과 네임스페이스는 다운워드(Downward) API를 통해 환경 변수로 구할 수 있다. 컨테이너 이미지에 정적으로 명시된 환경 변수와 마찬가지로, 파드 정의에서..