목록가상화 (15)
bxm's IT Story
보호되어 있는 글입니다.
## 쿠버네티스(Kubernetes) ## 쿠버네티스(Kubernetes)는 그리스어로 '조타수' 라는 뜻으로, 오늘날 사실상 표준으로 사용되고 있는 '컨테이너 오케스트레이션 도구'이다. 쿠버네티스는 도커 스웜 모드처럼 여러대의 도커 호스트를 하나의 클러스터로 만들어 준다는 점은 같지만, 세부적인 기능을 더욱 폭넓게 제공하고 있다. ## 쿠버네티스의 핵심 장점 ① 서버 지원 클러스터링(하나로 묶음), 마이크로서비스 구조의 컨테이너 배포, 서비스 장애 복구 등 오케스트레이션 기능을 폭 넓게 지원한다. ② 구글, 레드햇을 비롯한 많은 오픈소스 진영에서 쿠버네티스의 소스코드에 기여하고 있기 때문에, 성능과 안정성 면에서 신뢰를 받고 있다. ③ 영속적 볼륨, 스케줄링, 장애복구, 오토 스케일링, 서비스 발견(디..
## 도커 Swarm mode 노드 다루기 ## ## 1) 노드 AVAILABILITY 변경하기 (Active/Drain) ★★★★★ 매우중요!!!! docker node ls 특정 노드에서 유지보수 작업을 수행할 때 해당 노드에 컨테이너를 할당하지 않게 하고 싶을 때가 있다. 이를 위해 특정 노드의 AVAILABILITY를 설정함으로써, 컨테이너의 할당 가능 여부를 변경할 수 있다. 1) Active 노드가 컨테이너를 할당받을 수 있음을 의미한다. Active 상태가 아닌 노드를 Active 상태로 변경하려면 다음과 같이 수행하면 된다. docker node update --availability active worker2 2) Drain // Manager, Worker1, Worker2가 있는데 만..
## 레플리카 삭제 후 스웜 모드의 서비스 장애 복구 ## Manager] // Global_web은 각 노드에 균등하게 배치되므로 service를 삭제하자. docker service rm global_web docker service ls docker service ps myweb docker ps // 위에서 말했듯이, 나는 manager의 레플리카를 지울 것이므로 manager에서 컨테이너 ID를 확인해서 날릴 것이다. 다른 노드의 레플리카 날리고 싶으면 그 노드로 가서 검색해서 날리세용 ㅎㅎㅎ docker rm -f myweb.4.lxg40fs0sojoqpn6az5wsy9f2 docker service ps myweb ## 정리 !! 결과값을 보면 여전히 레플리카의 개수는 4개를 유지하고 있다...
## 도커 스웜 ## ## 도커 스웜을 사용하는 이유 하나의 호스트 머신에서 도커 엔진을 구동하다가 시스템 자원이 모자랄 때 좋은 대안이 된다. 이는 여러 대의 서버를 클러스터로 만들어 자원을 병렬로 확장하는 것이다. 그러나 여러 대의 서버를 하나의 자원 풀로 만들게 되면 새로운 서버나 컨테이너가 추가되었을때 이를 발견(Service Discovery) 하는 작업부터, 어떤 서버에 컨테이너를 할당할 것인가에 대한 스케줄러와 로드밸런싱 문제, 클러스터 내의 서버가 다운되었을 때 고가용성을 어떻게 보장할지에 대한 문제가 생긴다. 이 문제를 해결해주는 오픈소스 솔루션 중 대표적인 것이 도커 스웜(Docker swarm)과 스웜 모드(Swarm mode) 이다. // New VirtualMachine - GUI..
## 기타 Dockerfile 명령어 ## // 미리 말하는데 ENV는 환경변수라서 대상에 빠르게 접근이 가능하고, VOLUME은 호스트의 볼륨과 서로 공유를 하기에 편하고, USER는 아무나 root 계정에 접근하면 안되므로, 딱 정해주는 것임!! 그래서 su 를 쳐도 류트계정으로 못들어옴 ㅎㅎ chmod로 권한 주면 되지 않느냐!! 할 수 있는데 그걸로 root 계정 접근을 막을 수는 없다!! ㅎㅎㅎㅎ T 피셜, 클라우드 중급 이상으로 다루는 엔지니어가 되면 훨씬 더 편할텐데 아직은 공감이 안될 거라고 하심. 1) ENV, VOLUME, ARG, USER - ENV (Environment; 뒤의 ARG와 비슷하다!) : Dockerfile에서 사용될 환경변수를 지정한다. 설정한 환경변수는 ${ENV_..
## 도커 사설 레지스트리 ## 1) 사설 레지스트리 컨테이너 생성 도커 사설 레지스트리를 사용하면 개인 서버에 이미지를 저장할 수 있는 저장소를 만들 수 있다. 이 레지스트리는 컨테이너로써 구현되므로 이에 해당하는 도커 이미지가 존재한다. 이 이미지는 도커에서 공식적으로 제공하고 있기 때문에, 아래의 run 명령어로 간단히 사용할 수 있다. (레지스트리의 컨테이너 이미지 버전은 https://hub.docker.com/r/library/registry/tags)에서 확인할 수 있다. ) docker run -d --name myregistry -p 5000:5000 --restart=always registry:latest // --restart 옵션은 컨테이너가 종료되었을 때, 재시작에 대한 정책을 ..
## 도커 이미지 ## ## 먼저 숙지하고 가야할 내용은 도커 이미지는 실체가 없고 레이어 정보만 있다!! 그래서 tar 파일을 추출하는 것이다. // 도커는 기본적으로 도커 허브라는 중앙 이미지 저장소에서 이미지를 내려받는다. 도커 계정을 가지고 있다면 누구든지 이미지를 올리고 내려받을 수 있기 때문에, 다른 사람들에게 이미지를 쉽게 공유할 수 있다. 단, 도커 허브는 누구나 이미지를 올릴 수 있기 때문에 공식(Official) 라벨이 없는 이미지는 사용법이 제각각이다. 도커 허브에 어떤 이미지가 있는지 확인하기 위해 도커 허브 사이트를 직접 접속해서 찾아볼 수도 있지만, 도커 엔진에서 'docker search' 명령어를 사용할 수도 있다. Docker1] docker search ubuntu doc..
## 1) json-file 로그 사용하기 ## ## JSON JavaScripts Object Notaion(JSON)은 Javascripts 객체에 문법으로 구조화된 데이터를 표현하기 위한 문자 기반의 표준 포맷이다. 웹 어플리케이션에서 데이터를 전송할 때 일반적으로 사용한다.(서버에서 클라이언트로 데이터를 전송하려거나 반대의 경우) "속성-값 쌍" 또는 "키-값 쌍"으로 이루어진 데이터 오브젝트를 전달하기 위해 인간이 읽을 수 있는 텍스트를 사용하는 개qkd형 표준 포맷이다. 컨테이너 표준 출력(StdOut)과 에어(StdErr) 로그를 별도의 메타데이터 파일로 저장하며, 이를 확인하는 명령어를 제공한다. 먼저 컨테이너를 생성하고 로그를 확인해본다. Docker1] wget "https://regi..
## 도커 네트워크 ## // 컨테이너의 eth0 인터페이스는 호스트의 veth... 라는 인터페이스와 연결되어 있으며, veth 인터페이스는 docker0 브릿지와 바인딩 되어 외부와 통신할 수 있다. Docker1] // 컨테이너를 실행 후에 Cntl+P+Q를 통해서 나온 뒤에, ifconfig 명령어를 통해 확인해보면 아래와 같이 vethe가 새로 생긴 것을 확인할 수 있다. (컨테이너 미 실행시에는 vethe가 나타나지 않는다.) ifconfig brctl show // 이것을 통해 브릿지에 인터페이스가 물려있는 것을 확인할 수 있다. docker network ls // 그냥 한번 보고 넘어갔음. ## 1) 브릿지 네트워크 ## // 기본적으로 사용하는 docker0 을 사용하는 브리지 네트워크..