無知

갈 길이 먼 공부 일기

기술 공부/쿠버네티스 24

쿠버네티스 (6) | 볼륨, 퍼시스턴트 스토리지

핵심 내용 다중 컨테이너 파드 생성 컨테이너 간 디스크 스토리지 공유용 볼륨 생성 파드 내부 깃 리포지터리 사용 파드 내 GCE 퍼시스턴트 디스크 등 퍼시스턴트 스토리지 연결 사전 프로비저닝된 퍼시스턴트 스토리지 퍼시스턴트 스토리지의 동적 프로비저닝 볼륨 소개 파드는 내부에 프로세스를 실행하고, 여러 리소스를 공유하는 논리적 호스트이지만, 디스크를 공유하지 못한다. 파드 내 각 컨테이너는 컨테이너 이미지에서 제공하는, 고유하게 분리된 파일시스템을 가진다. 새로운 컨테이너가 시작할 때 이미지 빌드 시 추가해둔 파일을 갖고 시작하기 때문에, 재시작시마다 파일시스템이 이미지대로 초기화된다. 즉, 이전에 종료된 컨테이너의 데이터를 가진 디렉터리를 보존하기 위해서는, 쿠버네티스 내에서 스토리지 볼륨을 정의해야 한..

쿠버네티스 (5) | 서비스

앞으로의 스터디 내용은 을 기반으로 진행합니다. 자세한 내용은, 해당 책을 확인해주세요! http://www.yes24.com/Product/Goods/89607047 서비스, 파드의 검색과 통신을 위한 요소 파드가 다른 파드에게 제공하는 서비스를 사용하기 위해서는, 다른 파드를 검색하고 인식할 수 있어야 한다. 쿠버네티스가 나오기 전에는 사용자가 서비스 제공 서버의 주소와 호스트 이름을 지정해 구성해줬지만, 쿠버네티스에는 해당하지 않는다. 서비스를 제공하는 파드 자체가 일시적이라는 특성이 있고, 파드는 시작 직전에 IP 주소를 받기 때문에 미리 주소를 알아 구성해줄 수 없기 때문이다. 나아가, 수평적인 스케일링을 제공하려면, 여러 파드가 동일 서비스를 제공해야 하므로, 여러 병렬적인 파드의 수와 무관하..

쿠버네티스 (4) | 레플리카셋, 데몬셋, 잡, 크론잡

앞으로의 스터디 내용은 을 기반으로 진행합니다. 자세한 내용은, 해당 책을 확인해주세요! http://www.yes24.com/Product/Goods/89607047 이번 챕터의 경우 전체 포스트를 완성하였으나 티스토리 오류로 임시저장본이 초기 작성 시기로 롤백되고, 기존 작성 분이 모두 사라진 관계로... 일단 스터디를 통해 기억나는 개념을 간단히 재정리하면서 간략한 정리본만 남기겠습니다 ㅠㅠ 파드의 안정적인 유지를 위해서, 컨테이너 외부 측면에서도 컨테이너의 상황을 확인하는 장치가 필요한데, 이를 위한 것이 쿠버네티스 라이브니스 프로브이다. 애플리케이션이 정상이라고 간주되는 조건을 http get 등의 방법을 통해 조회하여, 조건 충족 시 성공, 그렇지 않을 경우 실패로 판단한다. $ minikub..

쿠버네티스 (3) | 파드, 레이블, 네임스페이스, 어노테이션

앞으로의 스터디 내용은 을 기반으로 진행합니다. 자세한 내용은, 해당 책을 확인해주세요! http://www.yes24.com/Product/Goods/89607047 1. 파드란 여러 개의 컨테이너가 함께 배치된 컨테이너 그룹이자 쿠버네티스의 기본 빌딩 블록 파드는 논리적인 호스트로, 동일한 파드 내 프로세스는 각각이 컨테이너 형태로 캡슐화되었다는 점을 제외하면 동일한 머신 위에서 동작하는 것과 같다 일반적으로 파드 하나 당 하나의 컨테이너만 포함한다 하나의 파드에 여러 컨테이너가 포함된다고 해도, 그 컨테이너들은 모두 하나의 워커 노드에서 실행된다 1개의 워커노드에 여러 개의 파드가 포함되고, 각 파드에는 1개 이상의 컨테이너가 포함된다 하나의 컨테이너에 여러 프로세스를 실행하지 않고 다중 컨테이너를..

쿠버네티스 (2) | 도커와 쿠버네티스 튜토리얼

앞으로의 스터디 내용은 을 기반으로 진행합니다. 자세한 내용은, 해당 책을 확인해주세요! http://www.yes24.com/Product/Goods/89607047 도커를 사용한 컨테이너 이미지 생성, 실행, 공유하기 도커 설치와 Hello World 컨테이너 실행하기 리눅스 머신에 도커 설치하기 도커 설치 + 가상머신 생성 가상 머신 내 도커 데몬 구동 호스트 OS에서 도커 클라이언트 실행 파일 사용 가상머신 내 도커 데몬과 도커 클라이언트 간 통신 Busybox 이미지로 Hello World 컨테이너 실행하기 busybox는 표준 UNIX 명령줄 도구를 합쳐놓은 단일 실행파일 터미널을 통한 실행 > 별도 설치 없이 전체 애플리케이션이 다운로드되어 실행됨. $ docker run busybox ec..

쿠버네티스 (1-6) | 쿠버네티스의 기원과 개념

쿠버네티스의 개념 쿠버네티스란 무엇인가? 쿠버네티스는 컨테이너화된 워크로드와 서비스를 관리하기 위한 이식성이 있고, 확장가능한 오픈소스 플랫폼이다. 쿠버네티스는 선언적 구성과 자동화를 모두 용이하게 해준다. 쿠버네티스는 크고, 빠르게 성장하는 생태계를 가지고 있다. 쿠버네티스 서비스, 기술 지원 및 도구는 어디서나 쉽게 이용할 수 있다. 쿠버네티스란 명칭은 키잡이(helmsman)나 파일럿을 뜻하는 그리스어에서 유래했다. K8s라는 표기는 "K"와 "s"와 그 사이에 있는 8글자를 나타내는 약식 표기이다. 구글이 2014년에 쿠버네티스 프로젝트를 오픈소스화했다. 쿠버네티스는 프로덕션 워크로드를 대규모로 운영하는 15년 이상의 구글 경험과 커뮤니티의 최고의 아이디어와 적용 사례가 결합되어 있다. 쿠버네티스..

쿠버네티스 (1-5) | 쿠버네티스 소개

앞으로의 스터디 내용은 을 기반으로 진행합니다. 자세한 내용은, 해당 책을 확인해주세요! http://www.yes24.com/Product/Goods/89607047 서론 쿠버네티스 등장 배경 기존 소프트웨어 앱 트랜드 = 모놀리스, Monolith 모놀리스 (Monolith) 애플리케이션 : 여러 모듈이 상호작용하는 로직을 하나의 프로그램 내에서 구동시키는 방식 ⇒ 소규모 서비스엔 어울릴 수 있으나, 서비스가 거대해질수록 소프트웨어의 확장성 및 유연성이 줄어든다는 치명적인 단점이 있음 마이크로서비스 (Microservices) : 모놀리스 방식을 대체하기 위한 개념으로, 여러 모듈을 독립된 형태로 구성 ⇒ 언어에 종속되지 않고 변화에 빠르게 대응할 수 있으며, 각 모듈의 유지/보수(관리)가 쉬움 ht..

쿠버네티스 (1-4-2) | 개발자가 바라보는 도커의 필요성

도커라는 게, 기존의 퍼블릭 클라우드 이미지 기반 인스턴스 관리 기법의 연장선이기도 하다. 가장 중요한 것은 왜 쓰기 시작했는가! 의 문제라 볼 수 있다. 시니어 개발자님이 공유해주신, 도커의 사용 이유에 대해 정리해보았다. 도커는 왜 쓰기 시작했을까? 도커는 커스텀 환경을 빠르게 구축할 수 있다 - 도커 이미지 일단, 이미지의 경우, 결국은 개발 환경과 연관된다. 개발자 입장에서, 서버를 만들어서, 서버에서 개발하기도 한다. 예를 들어 자바 환경이라 하면, 서버나 클라이언트 환경을 꾸미고 나서, 환경 변수 설정 후 개발한다. 그런데 도커를 쓰고 나서는, 환경을 내부적으로 구성해서 독립적으로 환경을 빠르게 만들 수 있다. 우분투의 JVM 1.8을 빠르게 빌드해서 개발하고 싶을 때, 예전에는 서버를 띄우고..

쿠버네티스 (1-4-1) | 도커 네트워크와 의존성 문제

앞선 논의들을 정리하며 도커에서 쿠버네티스로 생태계가 나아간건지 이해해보자. 컨테이너 기술이란 컨테이너란, 애플리케이션 구동 환경을 추상화할 수 있는 패키징 기술을 뜻한다. OS의 커널은 공유하면서 사용자마다 각각 격리된 컴퓨팅 자원을 제공해주는 가상화 기술이다. 물류 시장에서 물건을 옮기는 규격화된 박스이자 프로토콜이 컨테이너이듯이, 애플리케이션도 컨테이너라는 표준화된 방식으로 배포한다면, 어떤 환경이든 동일한 방식으로 배포가 가능하다는 측면에서 의의를 갖는다 OS 커널이란? 커널은 컴퓨팅 하드웨어 리소스를 관리하는 메커니즘을 관리하는 것이다. 커널의 기능 커널은 다음과 같은 4가지 기능을 수행합니다. 메모리 관리: 메모리가 어디에서 무엇을 저장하는 데 얼마나 사용되는지를 추적합니다. 프로세스 관리: ..

쿠버네티스 (1-3) | 도커 이미지 멀티 스테이지 빌드 및 경량화

멀티 스테이지 빌드를 통한 도커 이미지 경량화 멀티 스테이지 빌드란? 대부분의 사람들은 한 프로젝트의 하나의 Dockerfile만 존재하는 것이 익숙했습니다. 여러 개의 Dockerfile은 유지보수의 편의성도 떨어뜨리고, 각각의 단계에 순서 의존성이 있는 만큼 관리도 복잡해졌죠. 예를 들어 바이너리 빌드가 끝나기 전에 실행 이미지를 만들 수는 없으니까요. 이후 많은 사람들이 불편함을 느끼자, 여러 단계의 이미지 빌드 과정을 하나의 Docerfile에서 관리하기 위해 멀티 스테이지 빌드가 등장했습니다. https://lynlab.co.kr/blog/89 Docker Multi Stage란? 컨테이너 이미지를 만들면서 빌드 등에는 필요하지만 최종 컨테이너 이미지에는 필요 없는 환경을 제거할 수 있도록 단계..

쿠버네티스 (1-2) | 도커 파일 명령어 정리

# Alpine 3.7 버전 golang 1.10.1 이미지를 사용 FROM golang:1.10.1-alpine3.7 # 8080 포트 오픈 EXPOSE 8080 # 빌드할 머신에 있는 main.go 파일을 컨테이너에 복사 COPY ./main.go ./ # 컨테이너 내부에서 명령어 실행 RUN go build -o ./go-app ./main.go # 실행 계정을 nobody로 변경 USER nobody # 컨테이너가 기동할 때 실행할 명령어 정의 ENTRYPOINT ["./go-app"]

쿠버네티스 (1) | 도커의 기본 개념

본 글은 쿠버네티스 완벽 가이드의 설명을 따라가며 공부한 기록입니다. 보다 자세히 공부하고자 하는 분은 해당 책을 구매해서 따라가보세요! 쿠버네티스를 본격적으로 공부하기 이전에, 도커의 기본 개념을 훑어보며 쿠버네티스에 보다 더 잘 적응할 수 있도록 해보자. 도커, Docker 도커(Docker)는 리눅스의 응용 프로그램들을 프로세스 격리 기술들을 사용해 컨테이너로 실행하고 관리하는 오픈 소스 프로젝트이다. 도커 웹 페이지의 기능을 인용하면 다음과 같다: 도커 컨테이너는 일종의 소프트웨어를 소프트웨어의 실행에 필요한 모든 것을 포함하는 완전한 파일 시스템 안에 감싼다. 여기에는 코드, 런타임, 시스템 도구, 시스템 라이브러리 등 서버에 설치되는 무엇이든 아우른다. 이는 실행 중인 환경에 관계 없이 언제나..