Service Service 리소스 POD가 재생성되면 IP가 바뀌기때문에 직접 연결하는 데 문제가 생길 수 있음 그래서 서비스 리소스를 이용 한 번 할당받은 뒤에 바뀌지 않는 cluster IP 갖고 있음 Service 리소스가 cluster IP 할당받고, 사용자는 그 IP에 리퀘스트 요청 POD의 레이블(Selector)을 이용해서 서비스가 POD에 리퀘스트 전달 POD 앞단에서 사용자의 트래픽 Load Balancing하는 역할 Service 종류 ClusterIP 디폴트 서비스타입. 클러스터 내부에서 접속 가능 NodePort 각 Node의 지정된 port 할당하는 방식. 클러스터 내/외부 모두 접속 가능 LoadBalancer 로드밸런서의 IP 이용하여 클러스터 외부에서 접근 가능 Servic..
POD POD 하나 이상의 밀접하게 관련된 컨테이너로 구성된 그룹 동일한 리눅스 네임스페이스와 동일한 워커 노드에서 항상 함께 실행 POD가 필요한 이유 여러 개의 프로세스를 단일 단위로 관리할 수 있는 상위 레벨 구조의 필요성 밀접하게 연관된 프로세스를 함께 실행하고, 하나의 컨테이너에서 실행되는 것처럼 거의 동일한 환경을 제공하며 격리된 상태로 유지 쿠버네티스는 각 컨테이너가 자체 세트를 가지고 있는 대신, POD 안의 모든 컨테이너가 동일한 리눅스 네임스페이스 세트를 공유하도록 함으로써 격리시킨다. POD 안의 컨테이너가 동일한 IP 및 포트 공간을 공유하는 방법 네트워크 네임스페이스 공유 POD 안의 컨테이너들은 같은 IP 주소와 PORT 공간 공유 localhost를 통해 같은 POD 안의 다른..
Kubernetes 개요 The evolution of microservices frameworks Docker (2013) microservice의 runtime을 컨테이너 단위로 관리하면 편리함 불편함 발생 > 컨테이너 수가 많아질수록 관리 어려움 Container Orchestration Docker Swarm 등 여러 종류 등장 현재는 업계 표준 수준의 Kubernetes로 통일 (백엔드의 OS와 같은 역할로 여겨지기도 함) Spring Cloud (2015) netflix oss를 spring에서 매핑한 것 Istio Service mesh solution microservice 하나하나 각 서로를 호출 (거미줄처럼 복잡해짐) 구조적 문제점 발생: 핵심이 되는 microservice에 장애가 발..
컨테이너란? 컨테이너: 경량화된 Virtual Machine (운영체제를 포함하지 않음) 컨테이너 구동 위해서는 컨테이너 엔진(호스트 OS에 접근) 필요 > 가장 많이 사용되는 것이 도커 도커란? 컨테이너를 만들고, 배포하고, 구동 컨테이너를 만들기 위해서는 Dockerfile: 꼭 필요한 파일, 필요한 dependency, 환경 변수, 구동 script 포함 Image: 도커파일 이용하여 생성, 시스템 툴, 시스템 라이브러리 등 모두 포함 (불변의 상태) Container: 이미지를 고립된 환경에서 실행 (컨테이너 안에서 어플리케이션 실행) 이미지: 객체지향의 class와 유사 (템플릿 형태) 그 클래스를 이용하여 실제로 구동하는 컨테이너 생성 이미지는 불변, 컨테이너 안에서 구동되어있는 애플리케이션(..
Docker 개요 참고: 컨테이너 개념잡기- 왜 컨테이너일까? - Opennaru, Inc. Docker란? Dock + er 원래는 부두에서 물건을 싣고 내리는 일을 하는 사람을 의미한다. 규격화되지 않은 물건들의 형태와 노동 방식은 시간, 노동력 등에서 많은 비효율을 야기했는데 이 문제를 해결하기 위해 등장한 것이 컨테이너 컨테이너의 등장이 바꾼 가장 큰 것은 규격화 자동화가 가능하게 하고, 컨테이너 단위의 물류시스템도 구축할 수 있다. 이걸 그대로 IT 환경에 대입해 보면, 네트워크라는 바다 안에서 컨테이너들이 이동한다. 화물 컨테이너의 내부에 무엇이 있는지는 운송과는 관계없다. 도커 컨테이너도 어떤 애플리케이션이 내부에 있는지는 중요하지 않다. 컨테이너를 통해 개발과 테스트 단계에서 사용하는 시스..
코드업 C언어 기초 100제 풀어보기 ! 문제집 codeup.kr 1001. 출력하기01 #include int main() { printf("Hello"); return 0; } 1002. 출력하기02 #include int main() { printf("Hello World"); return 0; } 1003. 출력하기03 #include int main() { printf("Hello\nWorld"); return 0; } 1004. 출력하기04 #include int main() { printf("\'Hello\'"); return 0; } 1005. 출력하기05 #include int main() { printf("\"Hello World\""); return 0; } 1006. 출력하기06 #..