docker & Kubernetes

반응형
이 글은 docker로 react와 express를 구동하는 것에 대한 글입니다. 참고부탁드립니다!1. node.js 설치하기1) 본인 OS 버전 확인하기cat /etc/*release*본인의 OS 버전 정보를 확인해준다.만약 본인의 버전이 나와 같이 amazon linux 2023이라면 이 글을 따라해도 좋다.2) node.js 설치하기sudo yum update -y모든 소프트웨어 패키지가 최신 상태인지 확인하기 위해 패키지를 업데이트 시켜준다.curl -fsSL | sudo bash -NodeSource 저장소 설치 스크립트를 설치해준다. 여기서는 node의 버전을 18버전으로 설치한다.sudo yum install -y nodejs위와 같은 명령어를 작성해주면, node.js와 npm이 같이 설..
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..
반응형
Uheeking
'docker & Kubernetes' 카테고리의 글 목록