아파치 홈 디렉토리의 기본 설정은 /usr/local/apache
| 디렉토리 | . |
|---|---|
| bin | 아파치 실행파일 |
| build | 아파치 개발과 관련된 라이브러리 및 도구 |
| cgi-bin | CGI파일 |
| conf | 설정 파일 |
| error | 에러코드에 관한 문서 |
| htdocs | 웹문서 |
| icons | 아이콘 이미지파일 |
| include | C 헤드파일 |
| lib | 라이브러리 |
| logs | 웹 로그 |
| man | man 페이지 파일 |
| manual | 매뉴얼 파일 |
| modules | DSO 방식의 아파치에서 로드할 모듈 파일 |
여러 개의 컨테이너로 이루어진 서비스의 구축, 실행을 자동으로 하여 관리를 간단히 하는 기능
docker-compose.yml을 작성하여 각 컨테이너의 실행 정의를 한다.
docker-compose up
// 종료는 up이 아닌 down
을 통해 docker-compose.yml로 정의한 컨테이너를 실행한다.
version: '3.8'
services:
nginx:
image: sebcontents/client
restart: 'always'
ports:
- "8080:80"
container_name: client
spring:
image: 0xnsky/server-spring
restart: 'always'
ports:
- "4999:3000"
container_name: server-spring
컨테이너 오케스트레이션 도구
수십, 수백 개의 컨테이너를 관리하기 위한 툴이다
대규모 분산 애플리케이션의 배포, 관리, 확장을 자동화한다.
도커와 마찬가지로 컨테이너 런타임 기반
컨테이너화된 애플리케이션을 관리해주고, 각기 다른 환경에 대응할 수 있다.
모놀리식 아키텍처, 몇 개 되지 않는 컨테이너, 단순한 아키텍처에 스케일링이 필요하지 않은 경우에는 쿠버네티스는 적합하지 않다
클러스터 내에서 컨테이너를 적절히 분배하고 스케줄링하여 자원을 효율적으로 활용한다.
노드 간의 부하 분산, 자동 복구 및 확장 기능을 제공한다
애플리케이션의 업데이트나 패치를 배포, 관리한다.
사용자에게 중단없는 업데이트를 제공할 수 있다
애플리케이션의 수평 스케일링을 지원하여 자동으로 애플리케이션 인스턴스의 개수를 조정한다.
부하에 따라 자원을 동적으로 조절할 수 있다.
내부와 외부의 트래픽을 적절히 분배할 수 있다.
애플리케이션과 노드의 상태를 모니터링하여 장애를 탐지하고 복구한다
쿠버네티스 클러스터를 구성하는 개별 서버 혹은 가상 머신을 나타내는 리소스
애플리케이션 컨테이너를 실행하고 관리한다
각 노드는 CPU, 메모리, 스토리지 등의 자원을 갖고, Pod는 노드 상에서 실행된다.
가장 작은 배포 단위. 하나 이상의 컨테이너를 포함한다.
관련 컨테이너를 함께 실행하고 네트워크와 스토리지 리소스를 공유할 수 있다.
Pot의 복제본 집합을 정의하는 리소스
파드의 개수를 지정하고, 파드의 가용성을 보장하고 스케일링과 롤링 업데이트를 관리한다
지정된 개수의 파드가 항상 실행되도록 유지한다
파드가 실패, 삭제된 경우 자동으로 복구한다
애플리케이션의 버전 관리 및 롤링 업데이트를 지원하는 리소스
파드를 관리하고 수를 조정하여 애플리케이션의 가용성과 확장성을 유지한다
여러 파드에 대한 로드 밸런싱, 서비스 디스커버리 및 네트워크 연결을 제공하는 리소스
애플리케이션에 대한 단일 진입점을 만들어서 외부에서 접근할 수 있게 한다
외부에서 클러스터 내부로의 HTTP, HTTPS 트래픽을 관리하는 리소스
로드 밸런싱, 경로 기반 라우팅, SSL 인증서 관리 등을 제공하여 애플리케이션에 대한 인바운드 트래픽을 제어한다
설정 데이터를 저장하고 파드에서 사용할 수 있도록 제공하는 리소스
환경 변수, 설정 파일 등을 저장하고 애플리케이션의 동적인 구성 변경을 지원한다
일회성 작업을 실행하는 리소스
특정 작업이 성공적으로 완료될 때까지 파드를 실행하고 관리한다.
배치 작업, 데이터 처리, 크론 작업 등 한 번에 실행되고 종료되는 작업에 적합하다
작업이 성공적으로 완료될 때까지 파드를 유지하고, 실패한 경우에도 재시작하여 안정성을 제공한다
쿠버네티스 클래스터 내에서 리소스를 그룹화하고 격리하는 논리적인 공관
리소스의 이름 충돌을 방지하고, 다른 팀이나 애플리케이션 간의 리소스를 분리하여 관리한다
클러스터 관리를 단순화하고 보인 및 리소스 관리를 용이하게 한다.
클러스터는 최소 하나 이상의 제어판ControlPlane 컴포넌트와 이와 연결된 몇 개의 워커 노드로 구성된다
워커 노드에서는 kubelet이라는 프로세스가 돌아간다
kubelet은 다른 노드와 서로 통신하거나 태스크를 실행할 수 있게 한다
워커 노드 안에는 한 개 이상의 컨테이너가 있다. >> 애플리케이션이 실행되고 있는 곳
관리를 위해 필요한 프로세스는 전부 제어판 컴포넌트에 있다.
제어판 컴포넌트의 프로세스 중 하나
클러스터 관리의 입구로, 명령을 내릴 수 있는 관문
클러스터에서 발생하는 일을 추적한다
프로세스 중 하나
서버 리소스를 바탕으로 파드가 노드에 배치되게 만드는 역할을 담당한다
새로 생성된 컨테이너를 찾아 노드에 할당한다
클러스터 관리에 필요한 모든 데이터를 저장하는 공간
모든 파드를 조회하는 명령어. 제어판 컴포넌트의 프로세스들이 파드로 존재함
minikube를 이용해 클러스터 생성
이미지를 사용해 디플로이먼트 생성
서비스를 8080 포트로 설정해 노출
로컬 클러스트를 호스트 컴퓨터에서 접속하도록 포트 포워딩
접속 가능하능한 포트를 변경
파드는 제거되지만, 레플리카세트에 의해 복구되어 다른 파드가 실행된다.
디플로이먼트의 정보를 확인할 수 있다
레플리카세트의 정보를 확인할 수 있다
이 명령을 통해 레플리카 세트를 제거할 수 있지만 파드와 마찬가지로 레플리카 세트는 계속 존재한다
디플로이먼트가 레플리카 세트를 만들어주기 때문이다.
이 명령을 통해 리소스(디플로이먼트)의 정보를 수정할 수 있다
레플리카 세트의 갯수도 바꿀 수 있다
유익한 글 잘 봤습니다, 감사합니다.