container
-
쿠버네티스 컨트롤러 : 복제 컨트롤러(Replication Controller)Kubernetes 2018. 6. 13. 09:00
복제 컨트롤러(Replication Controller)는 쿠버네티스의 가장 기본적인 컨트롤러 입니다. 지정된 숫자 만큼의 포드가 항상 클러스터 내에서 실행되고 있도록 관리하는 역할을 합니다. 포드 2개를 명시해둔 복제 컨트롤러가 있다면 장애나 다른 이유로 컨트롤러 개수가 2개보다 작아졌을때 다시 새로운 포드를 띄워서 포드 개수를 2개로 맞춰줍니다. 또한 포드가 2개보다 많아 졌을때에도 포드를 줄여서 2개만큼만 실행되게 조정하는 역할을 합니다. 컨트롤러를 사용하지 않고 포드를 직접 띄웠을때는 포드에 이상이 생겨서 종료되거나 삭제됐을때 재시작이 어렵습니다. 포드가 떠 있던 노드에 장애가 발생해서 포드가 내려갔다고 했을때 복제컨트롤러를 이용해서 실행한 포드라면 클러스터내의 다른 노드에 다시 포드를 띄워 줍니..
-
쿠버네티스 구성요소 : 객체(Object), 컨트롤러(Controller), 템플릿(Template)Kubernetes 2018. 6. 5. 09:00
쿠버네티스에서 사용하는 개념은 크게 객체(Object)와 그걸 관리하는 컨트롤러(Controller)가 있습니다. 객체는 사용자가 쿠버네티스에 바라는 상태(desired state)를 의미하고 컨트롤러는 객체가 원래 설정된 상태를 잘 유지할수있게 관리하는 역할을 합니다. 객체에는 포드(pod), 서비스(service), 볼륨(volume), 네임스페이스(namespace)등이 있습니다. 컨트롤러에는 ReplicaSet, Deployment, StatefulSet, DaemonSet, Job등이 있습니다. 쿠버네티스 클러스터에 객체나 컨트롤러가 어떤 상태여야 하는지를 제출할때는 yaml 파일형식의 템플릿을 사용합니다. 템플릿의 기본 형식은 다음과 같습니다. --- apiVersion : v1 Kind : ..
-
Large-scale cluster management at Google with Borg 정리Cloud 2015. 9. 21. 09:00
http://research.google.com/pubs/pub43438.html Large-scale cluster management at Google with Borg 정리 구글은 Borg 시스템으로 수십만개의 job을 돌리고 있음. 1. 도입 Borg는 구글이 운영하는 애플리케이션을 스케쥴, 시작, 재시작, 모니터하는 클러스터 관리 시스템. 크게 3가지 장점이 있음. (1) 사용자는 자원 관리와 장애 처리에 신경쓰지 않고 애플리케이션 개발에만 집중하면됨. (2) 애플리케이션을 안정적이고 가용성이 높게 운영할 수 있게 해줌. (3) 수만대 규모의 장비에서 작동하는 작업부하를 효율적으로 관리. 이런 이슈를 해결하기위한 시스템이 Borg만 있는건 아니지만 이정도 규모를 이렇게 잘 처리하는건 별로 없음...
-
kubernetes 기본 개념Cloud 2015. 9. 14. 09:00
개념정리 Cluster : Kubernetes가 앱을 실행하기위한 물리/가상 장비 집합 Node : Kubernetes가 실행중인 물리/가상 장비 Pod : Kubernetes가 생성/스케쥴/관리 하는 비슷한 컨테이너들의 묶음. Label : 객체 그룹을 지정/관리하기 위한 키:값 쌍. Selector : label에 관련된 자원이 어떤 것인지에 대한 표현이다. Replication controller : pod들의 수명주기를 관리함. pod안에 있는 컨테이너 개수가 항상 일정하게 유지되게 관리함 Service : pod에 접속하게 하는 로드밸런서 Volume : 컨테이너에서 파일시스템을 통해서 접근할 수 있는 디렉토리. Secret : 인증 토큰같은 민감한 데이터를 저장. Name : 자원에 사용자나 ..
-
내가 만든 소스를 포함해서 docker 이미지 빌드하기Cloud 2015. 1. 30. 09:00
Dockerfile에 현재 디렉토리를 컨테이너의 /src 등 특정경로에 복사해 넣게 하면됨. 그외 실행에 필요한 환경은 RUN 명령어를 이용해서 컨테이너에 설정하면 됨. 모든 필요한 환경이 이미지에 포함되니까 나중에는 빌드된 이미지만 배포하면 실행은 문제없이 가능하게 되는구조. 다음 package.json, index.js, Dockerfile을 하나의 디렉토리에 만든다. package.json { "name": "docker-centos-hello", "private": true, "version": "0.0.1", "description": "Node.js Hello world app on CentOS using docker", "author": "Daniel Gasienica ", "dependen..
-
Dockerfile 구조Cloud 2015. 1. 28. 09:00
Dockerfile 이라는 파일에 docker에서 필요한 설정들을 해서 컨테이너를 원하는대로 설정할 수 있다. Dockerfile을 생성한 후 아래처럼 소스경로를 포함해서 빌드명령을 내리면 해당 경로를 기준으로 빌드가 실행된다. docker build /your/source/path 빌드에서 제외할 파일들은 .dockerignore 파일에 명시해서 제외할 수 있다. Dockfile안의 명령어들은 독립적으로 실행되어서 다음에 실행되는 명령에 영향을 미치지 않는다. Dockfile 구조 #을 이용해서 주석처리 "명령어 인자”의 형식 명령어는 대소문자를 구분하지는 않으나 가급적 대문자를 이용하는것이 보기 좋음. 각 명령어는 위에서부터 순서대로 실행됨 첫번째 명령어는 반드시 ‘FROM'이어야 함. ENV 명령어..
-
간단한 docker 명령어들Cloud 2015. 1. 26. 09:00
전체 docker 명령어 확인 docker help ubuntu 14.04 컨테이너에서 Hello world 찍어보기 docker run ubuntu:14.04 /bin/echo 'Hello world' 위 명령어를 통해서 docker가 자동으로 ubuntu 14.04를 자동으로 다운받고 명령어를 실행하게 됨. 컨테이너 셸로 들어가기 docker run -t -i ubuntu:14.04 /bin/bash 컨테이너의 bash셸로 들어가서 작업할 수 있게 됨. 컨테이너 목록 확인하기 docker ps -al 컨테이너 삭제하기 docker rm -f 컨테이너이름 테스트용 docker 웹 애플리케이션 실행해보기 docker run -d -P training/webapp python app.py 현재 docker..
-
맥 os x에 docker 설치하기Cloud 2015. 1. 23. 09:00
운영체제 : OS X 10.10.1 docker는 리눅스 기반 컨테이너이기 때문에 OS X에 설치하기위해서는 Boot2Docker를 이용해야 함. VirtualBox의 VM에 Docker를 설치하고 이용하는 형태임. 설치후 virtualbox vm을 실행시킴 boot2docker init bootdocker start docker run hello-world 명령으로 docker가 잘 실행되는지 확인 참고 https://docs.docker.com/installation/mac/