1. OS 업그레이드 노드가 다운되었다고 가정해보자. 클러스터는 해당 노드가 복구되는 대로 파드를 재기동 시킬려고 할 것이다. 만약 5분동안 노드가 복구되지 않는다면 클러스터 매니저는 노드가 복구 불가 상태라고 판단하고 다른 노드에 파드를 올린다. (이때의 5분이라는 시간은 pod-eviction-timeout 값으로 컨트롤러 매니저에서 설정할 수 있다.) 노드의 OS를 업그레이드 하려면 다운타임이 필요한데 해당 노드에만 올라가 있고 replica가 없는 단일 파드는 다른 노드에서 자동 실행이 되지 않는다. 따라서 OS 업그레이드를 할떄는 우선 kubectl drain node-1 명령어로 해당 노드에 있는 파드들을 내리고 다른 노드에서 실행하도록 해야한다. drain이 실행된 노드는 별도 명령을 내리기..
1. Rollout이란 Rollout은 어플리케이션의 변경 내용을 적용하고 업데이트 이력 관리를 하는 것을 말한다. Rolling Update Strategy로는 두가지가 있다. 1) Recreate 모든 레플리카를 종료하고 새 버전으로 실행한다. 이 때 어플리케이션 다운이 발생한다. 2) Rolling Update 레플리카의 일부분씩 rolling update를 수행하여 어플리케이션 중단이 없도록 하는 방법이다. 디폴트 배포 방법. 한번에 다운시키는 레플리카 수는 RollingUpdate에서 설정 가능하다. maxSurge : 매회 새로 추가할 신규 버전의 파드 수, 정수 혹은 비율(%)로 지정 가능 maxUnavailable : 매회 제거할 기존 버전의 파드 수, 정수 혹은 비율(%)로 지정 가능 r..
1. 클러스터 모니터링 1-1. 소개 쿠버네티스에서 모니터링 대상은 클러스터의 노드, 파드들의 정보와 자원 사용률 등이 있다. 이런 모니터링 기능을 제공하는 솔루션으로 METRIC SERVER, PROMETHEUS, ELK STACK, DATADOG, dynatrace 등의 오픈소스 제품들이 있다. METRICS SERVER는 노드와 파드들의 정보를 메모리에 저장하고 보여주는 솔루션으로 인메모리 방식이기 때문에 과거 히스토리를 보기 위해서는 디스크에 저장하는 다른 오픈소스 솔루션과 함께 사용해야 한다. METRICS SERVER는 KUBELET 내부 컴포넌트인 cAdvisor에 질의하며 각 파드들의 데이터를 수집한다. 1-2. 설치 # MINIKUBE를 사용한다면 minikube addons enable..
1. 소개 쿠버네티스에서 서비스는 각 컴포넌트들로의 네트워크 연결을 제공하는 모듈이다. 유저는 웹 서비스를 통해 프론트엔드 파드의 웹서비스로 접속하고 프론트엔드 파드는 백엔드 서비스를 통해 백엔드 파드들과 통신 할 수 있다. 서비스의 타입은 Nodeport, ClusterIP, LoadBalancer의 세 가지가 있다. 2. 유형 1) Nodeport 노드의 포트와 노드 내부 파드의 포트 매핑 역할을 한다. 외부의 사용자가 노드로 커넥션을 시도할 때 사용하는 Nodeport와 매핑할 파드의 포트인 Targetport 정보를 가진다. 단일 노드, 단일 파드든 멀티 노드 멀티파드든 관계없이 selector에 원하는 label을 입력하는 것만으로 로드밸런싱 기능을 제공한다. 관리 목적으로 운영자가 원하는 노드..
1. POD 1-1. 소개 k8s에서 서비스를 운영할 때 하나의 서비스 인스턴스 단위로 사용하는 개념이다. k8s는 컨테이너 이미지를 직접 운영하지 않고 POD라는 단위로 묶어서 관리한다. 한 POD 안에는 여러 복수의 컨테이너들이 있을 수 있고 같은 POD안에서는 같은 네트워크, 볼륨을 공유할 수 있기 때문에 컨테이너 간의 연결을 쉽게 사용할 수 있다. 서비스 스케일링의 단위도 POD 단위로 수행한다. 1-2. 명령어 # Docker hub 등 리파지터리에서 이미지를 가져와 POD를 실행할 경우 kubectl run nginx —image nginx # POD 리스트와 상태를 조회 kubectl get pods # POD의 상세정보 조회 kubectl describe pod nginx2. Replica..
1. 쿠버네티스 기초 개념 쿠버네티스는 컴퓨터 클러스터에 걸쳐서 애플리케이션 컨테이너 스케줄링과 실행을 오케스트레이션 하는 오픈소스 플랫폼이다. 쿠버네티스의 구조를 간략하게 정리하면 다음과 같다. 1)쿠버네티스 클러스터 쿠버네티스 클러스터는 마스터와 노드로 구성되며 마스터는 클러스터를 상호조정하고 노드는 어플리케이션을 구동하는 역할을 한다. 쿠버네티스 클러스터의 추상화된 개념을 통해 개별 머신에 얽매이지 않고 애플리케이션 컨테이너를 분산시키고 스케쥴링하는 일을 자동화 할 수 있다. 2) 마스터 마스터는 애플리케이션을 스케줄링하거나 애플리케이션의 항상성을 유지한다. 또한 스케일링, 변경사항 반영 등 클러스터 내 모든 활동을 조율한다. 3) 노드 노드는 쿠버네티스 클러스터 내의 워커 머신으로써 동작하는 VM..