본문 바로가기

Infrastructure/Kubernetes

(43)
[워크로드 리소스] 스테이트풀셋 스테이트풀셋 쿠버네티스 공식문서를 확인하며 스테이트풀셋에 대해서 기억해야 하는 부분을 기록한다. 스테이트풀셋은 애플리케이션의 스테이트풀을 관리하는데 사용하는 워크로드 API 오브젝트이다. 파드 집합의 디플로이먼트와 스케일링을 관리하며, 파드들의 순서 및 고유성을 보장한다. 디플로이먼트와 유사하게, 스테이트풀셋은 동일한 컨테이너 스펙을 기반으로 둔 파드들을 관리한다. 디플로이먼트와 다른점은, 스테이트풀셋은 각 파드의 독자성을 유지하기 때문에 동일한 스펙으로 생성되었지만, 서로 교체는 불가능하다. 즉, 각각의 파드는 다시 스케줄링이 되더라도 지속적으로 유지되는 식별자를 가진다. 스토리지 볼륨을 사용해서 워크로드에 지속성을 제공하려는 경우, 솔루션의 일부로 스테이트풀셋을 사용할 수 있다. 스테이트풀셋의 개별 ..
[워크로드 리소스] 레플리카셋 레플리카셋 쿠버네티스 공식문서를 확인하며 레플리카셋에 대해서 기억해야 하는 부분을 기록한다. 레플리카셋의 목적은 레플리카 파드 집합의 실행을 안정적으로 유지하는 것이다. 레플리카셋은 보통 명시된 동일 파드 개수에 대한 가용성을 보증하는데 사용한다. 레플리카셋의 작동 방식 레플리카셋을 정의하는 필드는 획득 가능한 파드를 식별하는 방법이 명시된 셀렉터, 유지해야 하는 파드 개수를 명시하는 레플리카의 개수 유지를 위해 생성하는 신규 파드에 대한 데이터를 명시하는 파드 템플릿을 포함한다. 레플리카셋은 필드에 지정된 설정을 충족하기 위해 필요한 만큼 파드를 만들고 삭제한다. 이 때 파드를 생성하기 위해 명시된 파드 템플릿을 사용한다. 레플리카셋은 파드의 metadata.ownerReferences 필드를 통해 파..
[워크로드 리소스] 디플로이먼트 스케일리와 롤아웃 디플로이먼트 스케일링과 롤아웃 쿠버네티스 공식문서를 확인하며 디플로이먼트의 스케일링과 롤아웃에 대해서 기억해야 하는 부분을 기록한다. 디플로이먼트 스케일링 kubectl scale deployment/nginx-deployment --replicas=10 커맨드를 실행하여 수동으로 스케일 할 수 있으며 정상적으로 스케일되면 아래와 같이 출력된다. deployment.apps/nginx-deployment scaled 클러스터에서 horizontal Pod autoscaling를 설정 한 경우 디플로이먼트에 대한 오토스케일러를 설정할 수 있으며 기존 파드의 CPU 사용률을 기준으로 생성할 최소 파드 및 최대 파드의 수를 선택할 수 있다. kubectl autoscale deployment/nginx-dep..
[워크로드 리소스] 디플로이먼트 업데이트와 롤백 디플로이먼트 업데이트와 롤백 쿠버네티스 공식문서를 확인하며 디플로이먼트의 업데이트와 롤백에 대해서 기억해야 하는 부분을 기록한다. 디플로이먼트(Deployment)는 파드와 레플리카셋(ReplicaSet)에 대한 선언적 업데이트를 제공한다. 디플로이먼트에서 “의도하는 상태”를 설명하고, 디플로이먼트 컨트롤러(Controller)는 현재 상태에서 의도하는 상태로 비율을 조정하며 변경한다. 새 레플리카셋을 생성하는 디플로이먼트를 정의하거나 기존 디플로이먼트를 제거하고, 모든 리소스를 새 디플로이먼트에 적용할 수 있다. 디플로이먼트가 소유하는 레플리카셋은 관리하지 말아야 한다. 유스케이스 아래는 디플로이먼트의 일반적인 유스케이스다. 레플리카셋을 롤아웃 할 디플로이먼트 생성. 레플리카셋은 백그라운드에서 파드를 ..
[Pod] 다운워드(Downward) API 다운워드(Downward) API 쿠버네티스 공식문서를 확인하며 다운워드 API에 대해서 기억해야 하는 부분을 기록한다. 컨테이너가 쿠버네티스에 지나치게 종속되지 않으면서도 자기 자신에 대한 정보를 알고 있으면 유용할 때가 있다. 다운워드 API는 컨테이너가 자기 자신 혹은 클러스터에 대한 정보를 쿠버네티스 클라이언트나 API 서버 없이도 사용할 수 있게 한다. 잘 알려진 특정 환경 변수에다가 고유한 식별자를 넣어 사용하는 애플리케이션이 있을 때, 해당 애플리케이션에 맞게 작업할 수도 있겠지만 이러한 방식은 오류가 나기 쉽고 결합력이 높아지게 된다. 위에서 말한 방법 대신 파드의 이름을 식별자로 사용하고 잘 알려진 환경 변수에 파드의 이름을 넣는 것도 좋은 방식이다. 쿠버네티스를 실행 중인 컨테이너에 파..
[Pod] 사용자 네임스페이스 사용자 네임스페이스 쿠버네티스 공식문서를 확인하며 사용자 네임스페이스에 대해서 기억해야 하는 부분을 기록한다. 사용자 네임스페이스를 사용하면 컨테이너 내부에서 실행 중인 사용자를 호스트의 사용자로부터 격리할 수 있다. 컨테이너에서 루트로 실행되는 프로세스는 호스트에서 다른 사용자로 실행할 수 있다. 프로세스는 사용자 네임스페이스 내부의 작업에 대한 모든 권한을 갖지만 네임스페이스 외부의 작업에 대해서는 권한이 없다. 사용자 네임스페이스 기능을 사용하여 손상된 컨테이너가 동일한 노드의 호스트 또는 다른 파드에 미칠 수 있는 피해를 줄일 수 있다. 사용자 네임스페이스가 활성화되면 막을 수 있는 보안 취약점 중에 높음 및 보안으로 취급되는 것들이 있다. 사용자 네임스페이스가 추후로 발생하는 보안 취약점 또한 ..
[Pod] 임시(Ephemeral) 컨테이너 임시(Ephemeral) 컨테이너 쿠버네티스 공식문서를 확인하며 임시 컨테이너에에 대해서 기억해야 하는 부분을 기록한다. 임시 컨테이너는 트러블슈팅과 같은 사용자가 시작한 작업을 완료하기 위해 기존 파드에서 임시적으로 실행된다. 임시 컨테이너는 애플리케이션을 빌드하는 경우보다는 서비스 점검과 같은 경우에 더 적합하다. 파드는 쿠버네티스 애플리케이션의 기본 구성 요소이며 일회용이다. 언제든 재활용이 아니라 교체 가능한 것으로 의도되었기 때문에, 사용자는 파드가 한번 생성되면 컨테이너를 추가할 수 없다. 컨테이너를 추가하는 대신 일반적으로 디플로이먼트를 사용해서 제어하는 방식으로 파드를 삭제하고 교체한다. 임시 컨테이너란 임시 컨테이너는 리소스 또는 실행에 대한 보증이 없다는 점에서 다른 컨테이너와 다르며,..
[Pod] 중단(Disruption) 중단(Disruption) 쿠버네티스 공식문서를 확인하며 파드의 중단에 대해서 기억해야 하는 부분을 기록한다. “파드의 중단”은 고가용성 애플리케이션을 구성하려는 소유자, 파드의 장애 유형을 이해하기 위한 소유자, 클러스터의 업그레이드와 오토스케일링과 같은 클러스터의 자동화 작업을 하려는 관리자들은 숙지하고 있어야 한다. 자발적 중단과 비자발적 중단 파드는 사람 또는 컨트롤러가 파괴하거나 불가피한 하드웨어 오류 또는 시스템 소프트웨어 오류가 아니면 사라지지 않는다. 아래와 같이 불가피한 상황에서 애플리케이션이 중단되는 것을 “비자발적 중단”이라고 부른다. 노드를 지원하는 물리 머신의 하드웨어 오류 클러스터 관리자의 실수로 VM 삭제 클라우드 공급자 또는 하이퍼바이저의 오류로 인한 VM 장애 커널 패닉 클..