2023~/쿠버네티스 인 액션7 Ch07 컨피그맵과 시크릿: 애플리케이션 설정 7.1 컨테이너화된 애플리케이션 설정컨테이너 내 애플리케이션에 설정 사항을 전달하는 방법* 컨테이너에 명령줄 인수 전달* 각 컨테이너를 위한 환경 변수 설정* 볼륨을 컨테이너에 마운트하여 설정7.2 컨테이너에 명령줄 인자 전달1) 도커 파일로 이미지를 띄울 때 인자 전달fortuneloop.sh: INTERNAL 변수 간격으로 /var/htdocs/index.html 에 fortune 문구를 저장#!/bin/bashtrap "exit" SIGINTINTERVAL=$1echo Configured to generate new fortune every $INTERVAL secondsmkdir -p /var/htdocswhile :do echo $(date) Writing fortune to /var/htdo.. 2024. 11. 21. Ch 06 볼륨: 컨테이너에 디스크 스토리지 연결 6.1 볼륨 소개컨테이너의 파일 시스템은 컨테이너끼리 독립적이며 컨테이너가 재시작할 때마다 초기화볼륨은 파드가 생성되고 삭제될 때 같이 생성, 삭제되며 컨테이너의 파일시스템 경로에 마운트하여 데이터 저장 가능- WebServer 컨테이너: 생성된 html을 서빙하는 서버- ContentAgent 컨테이너: html 생성하는 서버- LogRotator 컨테이너: 사용자와 상호작용시 로그를 남기는 서버 를 운용할 때, 컨테이너 내 파일시스템만 이용하면 각각의 컨테이너에서 다른 컨테이너의 파일시스템에 접근 불가(ContentAgent 컨테이너 내 파일 경로에 html 을 저장했다고 하더라도 WebServer 컨테이너에서 접근 불가)대안으로 WebServer 컨테이너, ContentAgent 컨테이너 사이에 .. 2024. 11. 17. Ch05 서비스: 클라이언트가 파드를 검색하고 통신을 가능하게 함 5.1 서비스 소개 서비스가 필요한 이유파드는 노드에 스케줄링 된 뒤 고유의 IP 주소를 할당 받기 때문에 클라이언트는 파드의 정확한 IP 주소를 미리 알 수 없을 뿐더러, 미리 안다고 하더라도 노드 장애, 스케일링 때마다 달라지는 파드들의 개별 IP 목록을 계속 신경 쓸 수 없음✅ 동일한 서비스를 제공하는 파드에 대해 고정 IP 를 할당하여 클라이언트가 해당 IP::포트 에 연결할 수 있도록 함 (서비스 리소스)서비스 생성 0) 특정 라벨 셀렉터를 가지는 서비스 yaml 작성 서비스 IP: 80 번 포트를 app=kubia 라벨을 갖는 파드의 8080 포트에 연결하겠다는 의미 apiVersion: v1kind: Servicemetadata: name: kubiaspec: ports: - port:.. 2024. 10. 13. Ch04 레플리케이션과 그 밖의 컨트롤러: 관리되는 파드 배포 4.1 파드를 안정적으로 유지하기 라이브니스 프로브1) 파드 내 컨테이너에 크래시가 발생하면 Kubelet 이 자동으로 컨테이너를 재시작2) 크래시가 발생하여 종료된 것이 아니더라도 무한 루프, 교착 상태에 빠져있거나 OutofMemoryErrors 를 뱉어내는 등 오류가 있을 수 있기 때문에 애플리케이션 외부에서 해당 컨테이너 상태를 지속적으로 체크하는 시스템 필요 (라이브니스 프로브) 라이브니스 프로브 종류1) HTTP GET 프로브: 특정 ip, 포트, 경로로 HTTP 요청 후 응답 결과가 실패(4xx, 5xx) 혹은 응답 없음일 경우 컨테이너 재시작2) TCP 소켓 프로브: 컨테이너의 지정 포트에 TCP 연결 시도하여 연결 실패할 경우 컨테이너 재시작3) Exec 프로브: 컨테이너 내에서 임의의.. 2024. 10. 10. Ch03 파드: 쿠버네티스에서 컨테이너 실행 3.1 파드 소개 파드 한 개 혹은 두 개 이상의 컨테이너를 포함하는 컨테이너 그룹 배포가 이루어지는 단위 하나의 컨테이너 내 다중 프로세스 vs 다중 컨테이너 비교 컨테이너 내 다중 프로세스를 실행한다면 프로세스의 실행과 로깅이 모두 개발자 책임이 되어버리는 문제가 있기 때문에 하나의 프로세스 당 하나의 컨테이너로 분리해서 관리하는 것이 좋음 파드 내 컨테이너들이 동일하게 공유하는 부분 네트워크 네임스페이스, UTS 네임스페이스 (동일한 호스트 이름, ip 주소, 포트 공간) IPC 네임스페이스 파드 내 컨테이너들에게 분리되어있는 부분 PID 네임스페이스 (ps aux를 통해 컨테이너 안에서 실행되는 프로세스만 보기) 파일 시스템 (볼륨 개념을 통해 공유 가능) 하나의 파드에 여러 개의 컨테이너를 모두.. 2024. 9. 30. Ch02 도커와 쿠버네티스 첫 걸음 2.1 도커를 사용한 컨테이너 이미지 생성, 실행, 공유하기1) Docker File 작성 및 컨테이너 안에서 실행시킬 애플리케이션 준비 2) 컨테이너 이미지 생성 도커 데몬에 Docker file 및 필요한 애플리케이션 파일을 업로드 + 빌드 수행이 때, 로컬에 필요한 이미지 레이어가 존재하지 않는다면 도커 허브에서 기반 이미지 레이어를 pull 하여 빌드 docker build -t kubia . // 현재 디렉토리(.)에 있는 도커파일을 기반으로 이름이 kubia 인 이미지 생성 3) 컨테이너 이미지 실행 docker run --name kubia-container -p 8080:8080 -d kubia// kubia 이미지를 이용해서 kubia-container 를 생성 + 실행// -d: 백그.. 2024. 9. 26. Ch 01 쿠버네티스 소개 1.1 쿠버네티스와 같은 기술이 필요한 이유 monolith(모놀리스) 하나의 프로세스 프로그램을 만들어서 패키징하고 이를 운영팀한테 넘기면 운영팀이 배포하고 모니터링 하는 방식서버에 문제가 생기면 운영팀이 사용가능한 다른 서버로 직접 마이그레이션 MSA(마이크로 서비스)서비스가 작은 단위로 분리하여 구성하는 방식, 각각의 요소들을 개별적으로 개발/배포 가능각각의 작은 애플리케이션을 모두 수동으로 관리하는 것은 어려운일이 되었기 때문에 쿠버네티스 환경을 통해 자동으로 서비스들을 관리/장애 대비 필요 1.2 컨테이너 기술 소개 1) 가상 머신 가상머신마다 게스트 OS 를 할당하여 환경을 분리하는 방식가상 머신에 있는 애플리케이션은 게스트 OS 커널에 시스템 콜 요청시스템 콜을 요청 받으면 하이퍼 바이저를.. 2024. 9. 24. 이전 1 다음