docker: 20개의 글
이전 포스팅에서 쿠버네티스에 대한 용어와 개념을 다루어봤는데, 이번 포스팅에서는 실제 쿠버네티스가 어떤 구조로 되어 있는지 아키텍쳐에 대해 다루어본다. Kubernetes - Kubernetes 용어설명 마스터&노드 쿠버네티스 클러스터는 크게 마스터와 노드로 구성된다. 마스터는 쿠버네티스 클러스터의 전반적인 것을 관리하고 노드는 Pod이나 Service등처럼 쿠버네티스 위에서 동작하는 워크로드를 호스팅하는 역할을 한다. 1) 마스터 클러스터 전체를 관장하는 시스템이며 크게 API 서버, 스케줄러, 컨트롤러 매니저, etcd로 구성되어 있다. -API서버 : 쿠버네티스는 모든 명령과 통신을 API를 통해서 하는데, 그 중심이 되는 서버가 API 서버이다. -Etcd : 쿠버네티스 클러스터의 데이터 베이스 ..
지금까지 쿠버네티스에 대한 포스팅을 여러개 했는데, 더 진행하기 앞서 쿠버네티스에서 사용하는 용어 및 개념들을 정리하면 좋을듯 해서 포스팅한다. 마스터&노드 쿠버네티스의 클러스터의 구조에서 전체 클러스터를 관리하는 마스터 노드가 있고, 도커 컨테이너가 배포되는 노드가 존재한다. Pod Pod는 쿠버네티스에서 가장 기본적인 배포 단위로, 하나 이상의 도커 컨테이너의 묶음이다. 쿠버네티스는 컨테이너 단위로 배포하는 것이 아니라, Pod이라는 하나 이상의 도커 컨테이너로 이루어진 단위로 배포가 된다. 그렇다면 개별적인 컨테이너로 배포하지 않고, Pod이라는 단위로 배포하는 이유는 무엇일까? Pod 내의 컨테이너는 IP와 Port를 공유한다. 즉, 서로 localhost로 통신이 가능한 것이다. Pod 내에 배..
보통 쿠버네티스를 사용하면 단일 클러스터 환경에서 운영하지 않는다. 보통 Phase 별로 클러스터를 구성하기도 하고, 각 Phase의 클러스터는 하나 이상의 노드를 갖는 클러스터 형태인 경우가 많다. 또한 쿠버네티스를 사용하면 하나의 애플리케이션 혹은 미들웨어를 디플로이먼트나 서비스, 컨피그맵 혹은 인그레스 등 여러 종류의 리소스를 조합하는 형태로 배포한다. 그런데 각 Phase마다 배포시 달라지는 정보들이 많다. 예를 들면 개발환경의 데이터베이스 주소와 프로덕환경의 데이터베이스 주소가 다른것처럼 말이다. 그렇다면 모든 환경마다 매니페스트를 작성해야하나? 만약 Phase가 많다면 관리가 쉽지 않을 것이다. 이렇게 배포 환경에 따라 달라지는 설정값만 정의해 둔 다음 이에 따라 배포하는 메커니즘이 필요하게 ..
이번 포스팅은 kubernetes에 대해 다루어본다. 사실 쿠버네티스를 다루기 위해서는 docker(도커)에 대한 지식이 필요하지만 여기에서는 다루지 않는다. 그렇다면 쿠버네티스란 무엇인가? 쿠버네티스란? 쿠버네티스는 컨테이너 운영을 자동화하기 위한 컨테이너 오케스트레이션 도구이다. 많은 수의 컨테이너를 협조적으로 연동시키기 위한 통합 시스템이며 이 컨테이너를 다루기 위한 API 및 명령행 도구등이 함께 제공된다. 컨테이너를 이용한 애플리케이션 배포 외에도 다양한 운영 관리 업무를 자동화할 수 있다. 도커 호스트 관리, 서버 리소스의 여유를 고려한 컨테이너 배치, 스케일링, 여러 개의 컨테이너 그룹에 대한 로드 밸런싱, 헬스 체크 등의 기능을 갖추고 있다. 쿠버네티스 이외에도 도커 컴포즈, 스웜, 스택등..
이번 포스팅은 Docker를 이용하여 MongoDB를 설치하는 방법이다. 도커 실행 후 MongoDB 이미지를 받아준다. 이미지가 잘 받아진 것을 확인한다. 이제 내려받은 이미지를 실행시키자. 각 옵션은 이전 도커를 이용하여 오라클을 받는 옵션과 크게 다르지 않으므로 이전 포스팅을 참고하자. 위에서는 아니지만 만약 위에 실행한 명령에 마지막에 "--auth"를 붙인다면, 몽고디비 서버에 접속할때 인증이 필요하게 된다. > docker run --name mongodb -v localpath:containerpath -d -p 27017:27017 mongo --auth 유저를 만들기 위한 설명은 아래 링크참조를 참조하면 될듯하다. DB - MongoDB CRUD 사용방법 및 기타 사용방법 - 1 이번 포..
mac os 환경에서 docker를 이용한 oracle 11g 설치 우선 진행하기 전에 자신의 os에 맞는 docker를 다운로드 해줍니다. 1)docker pull wnameless/oracle-xe-11g =>oracle 11g 도커이미지 다운로드, 여기서 이미지란 컨테이너에서 oracle를 실행시킬 수 있는 모든 파일이 포함된 것이라고 생각하면 됩니다.(변하지 않는 파일) 즉, 이 이미지 파일을 이용하여 컨테이너에서 oracle을 실행시킬 수 있는 것입니다. 2)docker run --name oracle11g -d -p 59161:22 -p 59162:1521 -p 59163:8080 -v ~/my/oracle/data:/var/lib/oracle -e ORACLE_ALLOW_REMOTE=true..
1. Controller 설치 목록 확인 sudo docker search ngrinder 설치 최신 버전 설치 : sudo docker pull ngrinder/controller:latest 특정 버전 설치 : sudo docker pull ngrinder/controller:3.3 실행 sudo docker run --name ngrinder_controller -d -v ~/.ngrinder:/root/.ngrinder -p 8080:80 -p 16001:16001 -p 12000-12009:12000-12009 ngrinder/controller:3.3 확인 sudo docker ps 접속 http://xxx.xxx.xxx.xxx:8080/login 종료 sudo docker stop ngrin..
# 자동 설치 하기 최신 릴리즈 버전 확인 https://github.com/docker/compose/releases/latest 에서 최신의 안정된 버전 확인 curl이 설치 되어 있지 않다면 설치 sudo apt-get install curl docker 설치 curl -s https://get.docker.com/ | sudo sh # 직접 설치 하기 $ sudo apt-get update $ sudo apt-get install docker.io $ sudo ln -sf /usr/bin/docker.io /usr/local/bin/docker #최신 바이너리 사용하기 배포판 버전이 오래되었거나, CentOS 같이 버전업이 보수적인 배포판은 Docker 패키지 버전이 낮은 경우가 많습니다. 이번에..
개인적으로 Docker를 써야하는 이유를 몇가지 생각해보았다.서버 운영이 쉬워진다.장애를 해결하기 위한 재연이 쉬워지고 그로인해 장애 해결 시간을 줄일 수 있다.개발장비에 테스트 환경 구축이 쉽고 깔끔하다.서버 운영이 쉬워진다. Docker란 무언인가에서 설명한 부분인데, Docker로 서버 환경을 일관성있게 유지하고 공유할 수 있기 때문에 추가로 서버가 확장되거나, 서버 환경이 변경되는경우(애플리케이션 뿐 아니라 서버도 마찬가지도 요구사항이 자주 변경되기 마련이다.) 쉽고 빠르게 공유와 확장이 가능하다. 이는 즉 2번(장애를 해결하기 위한 재연 쉬워진다.)으로 이어진다. 하지만 Docker를 학습해야하지 않냐는 대답을 종종 듣곤하는데, 그렇게 치면 애플리케이션을 운영한다는 것은 평생 공부하고 기술을 익..
과거 서버 환경을 경험해 보지 못했지만, 적어도 내 경력 3~4년 동안 클라우드 서비스로 인해 많은 변화를 가져온 것 같다. 클라우드 서비스를 사용하지 않고 서버를 구축한다면... 서버(하드웨어)를 구입하고 OS를 설치하고, 서버에 필요한 Web Server, WAS(Web Application Server), 기타 필요한 애플리케이션, 그 뿐 아니라 여러가지 설정과 보안도 신경써야한다. 서버가 몇대 안되면 다행이다. 수백 수천대라고 생각하면 저 작업을 일일이 해야한다. 자동화 툴이나 쉘스크립트를 사용해서 자동화 해도 되지만, 쉽지 않은 작업이다. 그렇다면 클라우드 서비스를 사용한다면... 나는 AWS만 사용해봤는데 클릭 몇번으로 내가 원하는 OS 셋팅이 가능하고, 보안과 여러가지 아키텍처들을 빠르고 쉽..