Deployment 란? Deployment는 계층 구조 상 Replica Set 보다 상위에 위치한다. k8s환경에서 여러 개의 인스턴스로 작동하는 웹서비스가 있다고 할 때 Deployment 기능을 통해 아래와 같이 관리 할 수 있다. 인스턴스 업그레이드 인스턴스 이미지 버전, 리소스 등을 업그레이드 시킨다. Roll-back(롤백) 업데이트에 문제가 발생 한 경우 업데이트를 진행했던 인스턴스들의 버전을 업데이트 전으로 되돌린다. Roll-out(롤아웃) 실행중인 인스턴스를 종료하고, 환경, 리소스 등 주요 사항을 변경 후 다시 시작하여 반영한다. YAML 파일을 통해 Deployment 관리하기 YAML 파일 정의 apiVersion: apps/v1 kind: Deployment metadata: ..
Replication Controller 란? k8s 개체를 모니터링하고 필요 시 대응하는 프로세스 고 가용성(High Availability) Replication Controller에서 지정한 Pod의 개수가 항상 실행되도록 제어 2개의 Pod 생성을 지정했다고 가정했을 때, 1개 또는 2개 모두 장애가 발생하여 사용하지 못하는 상황이 오게 되면 이를 인지하고 1개 또는 2개의 Pod를 활성화 시켜 정의한 Pod 수만큼 Run(가용)상태를 유지함 따라서 Replication Controller는 고 가용성(High Availability) 특성을 지님 로드 밸런싱 & 스캐일링(Load Balancing & Scaling) Pod의 사용자가 증가하면 추가 Pod를 배포하여 두 개의 Pod에 부하를 분산..
LDAP 서버 구성하기 LDAP 인증이란? LDAP(Lightweight Directory Access Protocol)은 사용자가 조직, 구성원 등에 대한 데이터를 찾는데 도움이 되는 프로토콜이다. LDAP은 클라이언트-서버 모델을 기반으로 한다. LDAP는 디렉토리를 제공하고 클라이언트는 디렉토리 서비스를 사용하여 항목에 액세스한다. LDAP 서버가 디렉토리를 구성하는 방법 각 항목은 객체라고도 불리며 객체는 고유한 ‘DN(Distinguish Name)’을 갖는다. dn은 항목을 고유하게 식별하는 이름과 항목을 트리의 루트까지 추적하는 경로로 구성된다. 예를 들어 tomas의 dn은 다음과 같다. dn: cn=tomas,ou=group-a,dc=junkmm,dc=io LDAP은 사용자, 그룹, 장치..
시작하기 카카오클라우드 스쿨 엔지니어 2기를 진행하며 첫 번째 개인프로젝트인 도커 프로젝트를 진행하게 되었고 이런 저런 고민끝에 쉘 스크립트를 사용하여 도커 오토스케일링 구현하기 라는 주제를 선정하고 구현하게 되었는데, 이 과정을 정리해보려 한다. 1. 프로젝트 주제 선정 이유 및 목표 가. 주제 선정의 이유(문제 정의) docker swarm은 기본적으로 Auto-scale을 지원하지 않고, docker service 명령어를 통한 수동적인 컨테이너 배포만 가능하다. 이로 인해 컨테이너에 과부하가 발생하면 서비스 운영에 문제가 발생할 수 있기 때문에, docker swarm 환경에서 Auto-scaling을 구현하고자 한다. 나. 프로젝트 목표 매니저 노드 1대와 워커 노드 2대로 구성된 docker ..
Kubectl 명령어 kubectl 명령어는 쿠버네티스 API를 사용하여 쿠버네티스 클러스터의 컨트롤 플레인과 통신하기 위한 Command Tool이다. kubectl은 터미널 창에서 다음의 구문을 사용한다. kubectl [command] [TYPE] [NAME] [flags] 현재 쿠버네티스 클러스터에 배포된 Pod를 조회하는 kubectl 명령어는 아래와 같다. kubectl get pod kubectl 명령어 자동완성을 사용하는 이유 자동완성이란 Linux Terminal, Cisco 장비 등에서 Tab키를 사용하여 타이핑을 줄이고 실수를 방지할 수 있는 기능이다. 하지만 kubectl 명령어는 기본적으로 자동완성을 지원하지 않기 때문에, 별도의 설정을 통해 자동완성 기능을 적용한다면 쿠버네티스 ..
Kubernetes 클러스터 개요 Kubernetes 클러스터 구성 종류 Kubernetes를 구성하는 방법은 여러가지가 있다. 클라우드 플랫폼을 사용한 구성 - AWS(EKS), GCP(Kubernetes Engine) 로컬 구성 - kubeadm 온프레미스 환경에서 쿠버네티스 클러스터를 구성하기 위해 kubeadm을 사용하여 구축한다. Kubernetes 클러스터 구성요소 Master Node 구성 요소 API-Server - 명령 전달 ETCD - Key:Value로 이루어진 데이터 집합소, 파드의 상태를 비롯한 모든 정보 저장 Controller - Pod가 정상적으로 동작하는지 제어 Scheduler - Pod를 어떤 Node에 배치할 지 결정 Worker Node 구성 요소 Kubelet - ..
쿠버네티스 도입 배경 쿠버네티스, 컨테이너 기술이 도입되기 전 대부분의 소프트웨어 애플리케이션은 하나의 프로세스 또는 몇 개의 서버에 분산된 프로세스로 실행하는 거대한 모놀리스였다. 이런 레거시 시스템은 릴리즈 주기가 느리고, 개발자는 전체 릴리즈 주기가 끝날 때마다 전체 시스템을 패키징 하고 운영팀에게 넘기고, 운영팀은 이를 운용 가능한 서버로 직접 마이그레이션 했다. 이런 거대한 모놀리스 레거시 애플리케이션은 점차 마이크로 서비스라는 독립적으로 실행되는 더 작은 구성요소로 세분화 됐다. 마이크로 서비스는 서로 분리돼 있기 때문에 서비스 개별적으로 개발, 배포, 업데이트, 확장할 수 있다. 하지만 세분화가 많이 될수록 관리해야 할 운영 포인트가 증가하여 이를 유지하는데 어려움이 생기게 됐다. 이런 구성..