[Kubernetes] 쿠버네티스 오브젝트 [ReplicaSet]
·
Infra/Kubernetes
ReplicaSet Pod에 이어서 ReplicaSet이다. 레플리카셋은 이름에서 알 수 있듯이 여러 개의 파드를 한번에 생성해주는 오브젝트이다. ReplicaSet을 왜 쓸까? 예시로 바로 보자. 이전과는 다르게, Pod가 이번엔 1개가 아니라 4개가 필요한 상황이다. 4개의 nginx pod를 만드려면 어떻게 해야할까? apiVersion: v1 kind: Pod metadata: name: my-nginx-pod-a spec: containers: - name: my-nginx-container image: nginx ports: - containerPort: 80 protocol: TCP --- apiVersion: v1 kind: Pod metadata: name: my-nginx-pod-b s..
[Kubernetes] 쿠버네티스 오브젝트 [Pod]
·
Infra/Kubernetes
Pod 쿠버네티스의 핵심 오브젝트인 파드이다. 이번 포스팅에서는 파드의 생명주기, 생성과 삭제, 관리등을 다루겠다. 쿠버네티스에서는 컨테이너 어플리케이션의 기본 단위를 Pod라고 부른다. Pod는 1개 이상의 컨테이너로 구성된 컨테이너들의 집합이라고 생각하면 된다. 낯설지 않다. 도커 스웜에서 다루었던 서비스와 비슷하다. 같은 컨테이너 오케스트레이션 툴로써, 복잡한 애플리케이션을 쉽게 다루기 위해 기본 단위를 바꾼것이다. Pod를 정의하는 YAML apiVersion: v1 kind: Pod metadata: name: my-nginx-pod spec: containers: - name: my-nginx-container image: nginx ports: - containerPort: 80 protoc..
[Kubernetes] 쿠버네티스 구성 요소
·
Infra/Kubernetes
쿠버네티스 클러스터 구성 쿠버네티스는 마스터 노드와 워커 노드로 구성되어 있다. 마스터 노드가 최소 1대 이상 있어야 클러스터를 유지시킬 수 있으며 마스터 노드는 여러 대가 있을 수 있다. 보통 마스터 노드를 Control Plane, 워커 노드를 Data Plane이라 부르는데 마스터 노드에는 특별한 경우가 아니면 애플리케이션 로직이 담긴 컨테이너(Pod)를 할당하지 않기 때문이다. 마스터 노드, Control Plane 이름을 보면 알 수 있듯이 클러스터를 제어하는 영역이다. 그렇다면 쿠버네티스는 Control Plane에 어떤 컴포넌트를 가지고 있을까? kubectl kubectl은 쿠버네티스 클러스터에 명령을 내리는 컴포넌트이다. 우리가 정의한 YAML 파일을 클러스터에 배포하거나 현재 클러스터의..
[Kubernetes] 쿠버네티스 시작하기
·
Infra/Kubernetes
쿠버네티스 시작 드디어 도커를 끝내고 쿠버네티스 포스팅을 시작한다! 쿠버네티스도 처음 접한건 학회에서였다. 그 당시에는 도커도 모르던 시절이라 쿠버네티스가 뭐지?? 하고 넘겼었는데 도커를 어느정도 쓸줄 알게 되니까 쿠버네티스도 배우고 싶어져 학회원들과 스터디까지 진행했었다. 학회 스터디와 개인적으로 공부한 내용을 앞으로의 포스팅에 담으려고 한다. 쿠버네티스 너 누구니? 쿠버네티스를 보통 k8s라고 부르는데, 이는 kubernetes 에서 가운데가 8글자여서 이렇게 줄인다고 한다. ㅋㅋ 쿠버네티스는 컨테이너 오케이스트레이션 도구이다. 구글에서 2014년 오픈소스로 공개하고 현재 CNCF(Cloud Native Computing Foundation)에 소속되어 있다고 한다. 컨테이너 오케스트레이션? 말 그대..
AWS EKS 클러스터 구성 및 배포하기 [2/2]
·
Trouble Shooting
지난 포스팅 요약 https://imsongkk.tistory.com/59 AWS EKS 클러스터 구성 및 배포하기 [1/2] AWS EKS? EKS는 Elastic Kubernetes Service의 준말로, k8s 클러스터를 AWS에서 fully managed 해주는 서비스이다. k8s 클러스터를 구축하는 방법에는 크게 3가지가 있다. On-Premise 환경 클라우드 플랫폼 클라우드 Ma imsongkk.tistory.com 우리는 VPC, Subnet, Nat Gateway, Routing Table, Internet Gateway를 만들고 EKS IAM, Node Group IAM을 생성했다. 그리고 클러스터 엔드포인트를 퍼블릭 및 프라이빗으로 설정해 VPC 내외부에서 접근가능하도록 만들었다. ..
AWS EKS 클러스터 구성 및 배포하기 [1/2]
·
Trouble Shooting
AWS EKS? EKS는 Elastic Kubernetes Service의 준말로, k8s 클러스터를 AWS에서 fully managed 해주는 서비스이다. k8s 클러스터를 구축하는 방법에는 크게 3가지가 있다. On-Premise 환경 클라우드 플랫폼 클라우드 Managed 서비스 On-Premise 환경에 가까워질수록 클라우드의 의존성은 감소하지만, 관리의 복잡함이 늘어난다. AWS EKS 3번 환경에 속하며 클라우드의 의존성은 증가하지만, 관리가 매우 쉬워진다! 소마에 들어오기 전에, On-Premise환경에 k8s 클러스터 구축 경험을 쌓고자 하는 욕심이 있었지만 소마 프로젝트를 진행하면서, 팀별 AWS 지원비도 나올뿐더러 팀원이 3명밖에 안되기에 현실적으로 On-Premise 환경에 k8s 클..
[Docker] Docker Swarm
·
Infra/Docker
Docker Swarm 지금까지의 도커 사용은 단일 호스트에서만 이루어졌다. 애플리케이션 규모가 작으면 상관 없겠지만 만약 규모가 더 늘어나게 된다면 어떻게 해야할까? 가장 먼저 떠오르는 생각은 서버의 성능을 높이자!(스케일 업) 이다. 현재 CPU가 듀얼코어에 메모리가 16GB니까,,,,, 새로운 쿼드코어 CPU와 32GB 메모리를 장착한다. 전보다 쾌적하게 서버가 운용되지만 이는 한계가 있다. 메모리와 CPU는 좋은 사양으로 갈수록 가격이 기하급수적으로 늘어나서 현실적인 해결방법이 아니다. 그 다음으로는 할 수 있는 조치가 뭐가 있을까? 단일 호스트가 아닌 여러 개의 서버를 만들자!(스케일 아웃) 이다. 기억하자. 우리는 컨테이너를 설계할 때 Stateless 하게 설계해왔기 때문에 스케일 아웃은 비..
[Docker] Docker Compose
·
Infra/Docker
도커 컴포즈의 이해 docker-compose, 얘는 무엇일까? 등장 배경부터 알아보자. docker container 기술은 애플리케이션을 빠르고 경량화해서 배포하기 위해 등장했다. 우리가 쇼핑몰 애플리케이션을 만들어 컨테이너 형태로 배포한다고 생각해보자. 화면, 웹서버, WAS, DB, 모니터링, 로깅 등등 여러 기능들이 모여서 우리의 애플리케이션을 이룰것이다. 우리는 이 기능들을 컨테이너 단위로 분리하여 구성할 것이다. 컨테이너 설계는 확장성을 고려하여 stateless 하게 설계하는것이 좋고, Utilization을 위해서라도 하나의 컨테이너안에 모든 기능(프로세스)을 넣는것은 지양해야 한다. 이때, 웹서버인 nginx에 트래픽이 몰려 쇼핑몰이 다운될 위기에 처했다면? 스케일 아웃과 스케일 업 두..
[Docker] Docker Daemon
·
Infra/Docker
Docker Daemon 지금까지 docker를 다룰 때 항상 docker라는 명령어를 맨 앞에 붙여서 사용했었다. docker ps -a docker logs -f my-container ... 이러한 docker 명령어는 실제로 누가 처리하고 있을까? # which docker /usr/bin/docker 리눅스에서 which 명령어는 명령어의 파일이 위치한 경로를 출력한다. docker는 usr/bin/docker라는 폴더에 있다고 나온다. 참고로 usr는 Unix System Resource의 약자이다. 맨 처음에 user인줄,,, 그렇다면 얘가 컨테이너를 생성하고 삭제 하는 역할을 할까? 반은 맞고 반은 틀리다. /usr/bin/docker에 있는 docker 파일은 사용자의 명령어만 받아들일 ..
[Docker] Dockerfile
·
Infra/Docker
Dockerfile 이전에 도커 이미지를 생성하는 방법으로, 실행중인 컨테이너에 commit을 통해 변경사항을 저장하는 방법을 소개했었다. 이 방법의 직접 이미지의 동작 여부를 확인할 수 있다는 장점이 있지만, 환경을 구성하기 위해 일일이 개발자가 수작업으로 작업을 해야된다는 단점이 있다. Dockerfile은 변경 사항, 작업 내용들을 텍스트 파일로 기록할 수 있어 베이스 이미지로부터 어떤 변화가 있었고, 이미지의 구성을 좀 더 쉽게 알수있게 해준다. 장기적으로 본다면 이미지의 유지보수가 쉬워지고, 배포시에도 이미지 파일 대신 도커파일만 배포하면 된다는 장점을 가지고 있다. Dockerfile 작성 바로 예시를 보자. FROM ubuntu:14.04 LABEL "purpose"="pactice" ENV..