쿠버네티스

728x90
반응형
StatefulSet란?스테이트풀셋은 애플리케이션의 스테이트풀을 관리하는데 사용하는 워크로드 API 오브젝트이다. 파드 집합의 디플로이먼트와 스케일링을 관리하며, 파드들의 순서 및 고유성을 보장한다 .deployment와 비슷한 기능을 하고 있다. 그래서 deployment와 항상 비교된다.deployment와 차이점StatefuleSet의 내부 pod들은 각자 역할이 다르고, 그 pod들을 따로 관리한다. 이를 통해서 어플리케션 자체의 State를 보장하면서 앱의 생성, 배포, 스케일링기능을 지원한다. Deployment는 앱이 Stateless하다는 전제 아래에서 앱을 관리(생성, 배포, 스케일링)하기 때문에, PV 연결 되었어도 앱을 생성하거나 스케일링하는 과정에서 오류가 발생할 수 있다.그래서 p..
우리가 업데이트를 했는데 없는 이미지로 인하여 ImagePullBackOff 상태가 된 적이 있을 것이다. 이를 해결하기 위해 rollback해주는데, 쿠버네티스에서는 roll out 명령어를 쓴다. 이를 서술하고자 한다.rollout 명령어 알아보기kubectl rollout status: 롤아웃 작업의 상태를 확인한다.kubectl rollout history: 롤아웃 작업의 이력을 확인한다.kubectl rollout undo: 롤아웃 작업을 취소하고 이전 버전으로 롤백한다.kubectl rollout restart: 롤아웃 작업을 재시작한다.kubectl rollout pause/resume: 롤링 업데이트를 일시 중지하거나 다시 시작한다.실습하기1) rollout 파일 만들기apiVersion:..
namespace: 네임스페이스는 쿠버네티스 클러스터 하나를 여러 개의논리적인 단위로 나누어서 사용하는 것쿠버네티스 클러스터 하나를 여러 개 팀이나 사용자가 공유할 수 있다. 또한 클러스터 안에서 용도에 따라 실행해야 하는 앱을 구분할 때도 네임스페이스를 사용한다.kubectl get namespaces기본 네임스페이스 별 의미는 다음과 같습니다.default : 기본 네임스페이스쿠버네티스에서 명령을 실행할 때 별도의 네임스페이스를 지정하지 않으면 default 네임스페이스에 명령을 적용한다.kube-system : 쿠버네티스 시스템에서 관리하는 네임스페이스쿠버네티스 관리용 파드, 설정이 있다.kube-public : 클러스터 안 모든 사용자가 읽을 수 있는 네임스페이스클러스터 사용량 관리한다.kube-..
kubernetes의 label을 배우게 되었을 때 되게 좋은 기능이다라고 생각했다. 공부를 하다보니 affinity와 nodeselector등의 개념이 헷갈렸다. 이를 자세히 서술하고자 한다.NodeSelector앞 전에 node label을 하면서 nodeselector부분은 안 하고 넘어갔다.레이블 노드 : 먼저 노드 선택에 사용할 키-값 쌍으로 노드에 레이블을 지정해야 한다. 노드 이름과 =노드에 할당할 레이블 키-값 쌍으로 바꾼다 .kubectl label nodes =nodeSelector 정의하기 : Pod manifest에서 섹션 spec 아래에 nodeSelector필드를 정의할 수 있다.노드에 지정하고자 하는 라벨의 key-value값을 지정한다.apiVersion: v1 kind: ..
pod란?kubernetes에서 가장 기본적인 배포 단위이다. 간단히 1개의 가상이미지라고 보면 된다.container란?pod를 이루는Application으로 생각하면 된다. init container는 app container가 구동되기 이전에pod를 초기화해주는 container이다.pod의 환경 설정 또는 기타 다른 부수적인 작업을 하기 위해 일회성으로 구동되는 것이다.init container란?init container는 말 그대로 초기화를 위한 목적이기 때문에 container 개수로는 잡히지 않는다. app container와 다른 한 가지 특성이 있다면, 반드시 init container -> app container로 구동된다. 그래서 init container에서 에러가 발생할 경우 ..
쿠버네티스 API 서버는 현재 상태를 나타내는 API 엔드포인트를 제공한다. 이를 각 컨테이너의 상태를 주기적으로 체크해서, 문제가 있는 컨테이너를 자동으로 재시작하거나 또는 문제가 있는 컨테이너(Pod를) 서비스에서 제외할 수 있다.1. Probe란?Probe를 통해 쿠버네티스는 각 컨테이너의 상태를 주기적으로 체크하여 문제를 판단할 수 있다. 그래서 이 문제가 있는 컨테이너를 자동으로 재시작하거나 또는 문제가 있는 컨테이너를 서비스에서 제외할 수 있다.kubelet은 실행 중인 컨테이너에 대해 세 가지 종류의 프로브를 지정할 수 있다.Liveness probe : 제일 먼저 애플리케이션의 상태를 체크한다. 그래서 서버가 제대로 응답하는지 혹은 컨테이너가 제대로 동작중인지를 검사한다.Pod은 정상적인 ..
taint라는 개념을 봤는데 정확히 어디 쓰이는지 모르는 개념이었다. 이를 오늘 알아보고 활용하고자 한다.개념여러 곳에서 taint의 원래 뜻을 알아보고 그에 대한 toleration 개념을 알려주는데 오히려 헷갈려서 개념을 쌓는데 더 오래 걸렸다. 한마디로 둘의 개념은 이거다.taint : 제한 걸어주기toleration : 제한 풀어주기이 말로 설명하는 게 제일 간단한 듯하다.pod에는 각각의 할당되어지는 노드들이 존재한다. 이 노드들의 가지고 있는 성능에 따라 돌리고 싶은 노드들이 존재하기에 이 때문에 제약을 걸어두는 것이다.taint & tolerations 알아보기우선 제한을 걸어두는 taint에 대해서 알아보자면 세 가지의 옵션이 존재한다.NoSchedule : taint에 대한 key,val..
kubernetes를 처음에 공부했을 때 별로 필요없는 줄 알고 비중을 크게 두지 않았다. 근데 공부하고 나서 활용도가 높아서 정리하게 되었다.예를 들어 ai모델을 클라우드에서 돌리고자 한다. 그런데 워커 노드에 어떤 gpu와 disk가 있는지 모른다. 그렇다면 어느 노드에 돌리는 것이 효율적인지 모른다.이럴 경우를 대비하여 label를 사용한다.위와 같이 node1에는 gpu가 있고, disk가 ssd임을 알려준다면 ai모델을 돌리는 워커 노드를 택하는 것이 쉬워질 것이다. 이럴 경우에 쓰이도록 한다.1. 노드의 label 할당하기1) 전체 노드의 label 확인하기kubectl get nodes --show-labels위와 같이 node들의 label들을 확인할 수 있다. 이는 기본적으로 node들에..
728x90
반응형
Uheeking
'쿠버네티스' 태그의 글 목록