1. Docker에서의 Commands와 Arguments1) 기본 개념 - Docker 컨테이너는 특정 프로세스를 실행하기 위해 설계- 컨테이너 내부에서 실행되는 프로세스는 Docker이미지의 CMD 또는 ENTRYPOINT 지시어에 의해 정의- 컨테이너가 시작되면 이 지시어에 정의된 명령어가 실행 2) CMD(1) 정의 - CMD: 컨테이너가 시작될 때 실행할 기본 명령어(default)를 정의- 커맨드 라인 인수로 대체 가능 - ex) Ubuntu 이미지를 기본적으로 bash를 실행하도록 설정 CMD ["bash"]3) ENTRYPOINT(1) 정의- 컨테이너가 시작될때 반드시 실행해야 하는 명령어를 정의- CMD와 달리 ENTRYPOINT는 명령어를 고정하며, 추가적인 인수를 커맨드라인에서 전달..
1. Rolling Updates1) 개념- 쿠버네티스의 기본 배포 전략으로 어플리케이션의 가용성을 유지하면서 점진적으로 새로운 버전을 배포- 어플리케이션의 가용성을 유지하면서 점진적으로 새로운 버전을 배포2) 특징(1) 점진적 업데이트- 기존 Pod를 하나씩 종료하고, 동시에 새로운 Pod를 하나씩 생성 - 이 과정을 통해 어플리케이션의 다운타임 없이 업데이트가 가능(2) 자동 ReplilcaSet생성 - 새로운 버전이 배포되면 쿠버네티스는 자동으로 새로운 ReplicaSet을 생성하여 새로운 Pod를 관리- 이전 ReplicaSet은 점진적으로 축소 3) 예시(1) 현 상황 기존 Nginx 1.7.1 버전을 사용하는 어플리케이션이 3개의 복제본으로 실행중임을 가정 (2) 이를 Nginx 1.9.1로 ..
1. 모니터링 구성요소1) 노드 수준 메트릭- 노드 상태 메트릭: 클러스트 내 노드의 수와 각 노드의 상태- 리소스 사용량: CPU, 메모리, 디스크 I/O, 네트워크 대역폭 등의 사용량2) 파드 수준 메트릭- 파드 수 : 실행 중인 파드의 수- 리소스 사용량: 각 파드의 CPU 및 메모리 사용량, 재시작 횟수, 상태(실행 중, 대기 중 등)3) 컨트롤 플레인 매트릭- API 서버나 스케줄러와 같은 컨트롤 플레인 구성요소에는 발생하는 메트릭은 시스템 작동 상태를 보여줌 - 스케줄링 지연 시간이나 대기중 인 파드 수 등을 확인 4) 주요 모니터링 도구(1) Metrics Server : 경령화된 실시간 모니터링 솔루션- 노드와 파드의 CPU 및 메모리 사용량 데이터를 수집- kubectl top node..
1. DaemonSet 1) 개념- 클러스터의 모든 노드에서 특정 파드를 실행하도록 보장하는 리소스- ReplicaSet과 유사하지만, ReplicaSet이 지정된 수의 파들르 여러 노드에 분산 배치하는 반면, DaemonSet은 각 노드마다 하나의 파드를 실행하도록 설계2) 주요 특징(1) 노드별 파드 실행:- DaemonSet은 모든 노드에서 하나의 파드를 실행- 새로운 노드가 클러스터에 추가되면, DaemonSet은 자동으로 해당 노드에 파드를 생성 - 노드가 제거되도 해당 노드의 파드는 자동으로 삭제 (2) 자동 관리- DaemonSet은 클러스터 상태를 지속적으로 모니터링하며, 노드 추가/삭제 시 이를 자동으로 처리(3) 주요 사용 사례- 모니터링 및 로깅 에이전트: 각 노드에서 로그르 수집하거..
1. 수동 스케줄링1) 개념- 클러스터의 기본 스케줄러를 사용하지 않고 사용자가 직접 파드를 특정 노드에 할당하는 방식- 스케줄러가 비활성화되어 있거나, 특정 요구사항에 따라 파드를 수동으로 배치해야 하는 경우에 유용 2) 스케줄링의 기본 원리- 쿠버네티스의 기본 스케줄러는 새로 생성된 파드 중 nodeName필드가 설정되지 않은 파드를 대상으로 적절한 노드를 선택- 스케줄러는 노드의 리소스 상태와 정책(affinity, taints/tolerations 등)을 고려하여 가장 적합한 노드를 선택하고, 선택된 노드의 이름을 파드의 nodeName필드에 설정- 그러나 스케줄러가 없으면 파드는 Pending 상태로 남아있으며 실행되지 않습니다. 3) 수동스케줄링 방법(1) nodeName 필드를 설정하여 파..
##deployment 생성kubectl create -f deployment-definition.yaml##deployment 목록 확인 kubectl get deployments##출력 예시NAME READY UP-TO-DATE AVAILABLE AGEmyapp-deployment 3 3 3 1m1. Pod 1) 정의- 쿠버네티스에서 배포 가능한 가장 작은 단위로, 어플리케이션의 단일 인스턴스를 나타냄. - Pod는 하나 이상의 컨테이너를 캡슐화하며, 네트워크와 스토리지 리소스를 공유 2) Pod와 컨테이너(1) Pod와 컨테이너의 관계- 일반적으로 Pod는 하나의 컨테이너를 포함하지만, 필요에 따라 여러 컨테..
1. 쿠버네티스 아키텍처쿠버네티스의 주요 아키텍처는 컨트롤 플레인과 워크노드로 나뉜다.1) 컨트롤 플레인(Control Plane)- 클러스터의 상태를 관리, 워크로드 조정, 클러스터가 원하는 상태를 유지하도록 보장 (1) kube-apiserver- 쿠버네티스 API를 제공하는 중심 관리 컴포넌트- 외부 사용자, 관리자, 내부 구성요스가 클러스터와 상호작용- 모든 요청은 이 API 서버를 통해 처리(2) etcd: - 클러스터 데이터를 저장하는 일관적, 고가용성의 키- 값 저장소 - 노드, 포드, 설정 정보 등 클러스터 상태와 관련된 모든 데이터 저장 (3) kube-scheduler:- 새로 생성된 pod를 적절한 워커노드에 할당- 리소스 요구사항, 제약조건(taints/tolerations, 노드 ..
3. AWS로 워드프레스 구축하기(3) 워드프레스 배포웹서버에 워드프레스 서비스를 기동하기 위한 환경을 마련했습니다. 그럼 외부에서 웹서버로 접근하기 위한 요소들을 설정할 겁니다.앞에 글에서 언급한 바와 같이, 로드밸랜서를 통해 HTTP request를 받아 web server를 전달할 겁니다.그 해당 로드밸런서를 어떻게 구성하는지를 확인해볼 예정입니다.로드밸런서의 경우, 오토 스케일링이라는 서비스를 통해 같이 만들겁니다.오토스케일링 설정하면, 로드밸런스를 같이 생성할 수 있습니다.Auto Scailing : 시스템 자원들을 모니터링하여 필요에 따라 서비스를 확, 축소하는 서비스. 웹서비스 필요에 따라서 웹서버를 필요만큼 확장할 수 있습니다. 이를 통해 운영의 탄력성을 확보할 수 있습니다. 우선 오토스케..
2. AWS로 워드프레스 구축하기(2) 웹서버, DB 구축하기네트환경을 설정하였으니 이젠 웹서비스를 배포할 서버를 구축해봅시다!웹서버 구축1) 우선 웹서버 설정은 아래와 같이 진행할 겁니다중요한점은 기존 default 리눅스 ami 버전인 amazon linux 3 이 아닌 2로 진행할 겁니다.왜냐하면 이후 워드프레스 배포할 때 php 8.x 버전하고 계속 충돌이 일어납니다.※ 워드프레스가 php 8.x 버전을 사용할 때, mysqli(php 모듈)을 찾을 수 없다는 오류가 계속 발생합니다. 관련 설정을 바꾸어도 자체적으로 모듈 경로를 아예 못찾더라고요. 하지만, aws linux 3 는 php 8.x만 지원합니다. 그래서 php7.x버전을 지원하는 aws linux 2를 사용해서 진행하셔야 워드프레스가..
AWS로 워드프레스 구축하기(1) VPC,서브넷 등 네트워크 환경 구축하기예전에 AWS로 웹서버 배포환경을 구축하였지만, 실제 서비스를 배포하지 않아 아쉬웠던(?) 경험이 있었습니다. 그래서 이번 기회에 한번 나만의 서비스를 배포하고 싶어서, AWS로 워드프레스를 구축하기로 했습니다!! 저는 lightsail을 활용하지 않을 겁니다.구축한 블로그 주소 : https://blog.jwitstudy.life (현재 비용문제로 운영 X)※ Lightsail : 보다 간단한 AWS 버전.※ 부족한 부분은 지속적으로 추가할 예정.참조 블로그 AWS | AWS 클라우드를 이용한 고가용성 WordPress 서비스 배포 (tistory.com)VPC 환경 구성(1) VPC: 논리적으로 격리된 네트워크 공간으로 자신이 ..