문제 발생
젠킨스 파이프라인 테스트를 하며 빌드하던 도중 빌드가 제대로 진행되지 않는 상황이 발생했다.
젠킨스가 설정한 최소 필요 공간은 1GB인데 현재 남은 공간은 733MB밖에 되지 않아 발생하는 오류였다.
이전 빌드기록과 이미지들, 도커 컨테이너들을 지워도 실제로 몇번 빌드하니 용량은 금세 차올랐다.
/dev/root 용량이 꽤 많이 찼다
애초에 인스턴스 스토리지 볼륨을 적게 설정한것이다. 그동안은 가벼운 프로젝트만 몇번 테스트해서 문제가 없었던거 같다.
방법 고민
고민이였다.
1. 기존데이터 백업 후 인스턴스를 볼륨을 다시 생성해 마이그레이션
2. 새 인스턴스에 처음부터 시작
3. 볼륨 연결
이 세가지 정도를 생각했는데 현재 문제해결에는 볼륨 연결을 하는편이 가장 간단하면서 적합하다고 생각하여 적용했다.
시도
우선 AWS에서 해당 인스턴스에 EBS볼륨 50G 연결했다.
볼륨 초기화 및 파일생성
$ sudo mkfs.ext4 /dev/nvme1n1
$ sudo mount /dev/nvme1n1 /mnt/ebs

마운트 후 젠킨스를 백업한다.

기존 젠킨스 종료 후 새로 실행하면서 EBS 볼륨을 마운트
docker run -d \ --name jenkins \ -v /mnt/ebs:/var/jenkins_home \ -v /var/run/docker.sock:/var/run/docker.sock \ -p 8080:8080 -p 50000:50000 \ jenkins/jenkins:lts
새로운 Jenkins 컨테이너 내부에서 데이터가 제대로 마운트되었는지 확인
/var/jenkins_home가 /mnt/ebs로 마운트 되었다면 성공
인줄 알았으나
저 젠킨스 파이프라인 실행 시 overlay에도 데이터들이 담기고 있었다. 여전히 용량이 부족한 상황이다.
그래서 아래의 명령어들을 입력했다.
하나 문제가 있었는데 젠킨스 서버에 접속해 입력하면 안되고 도커 호스트 서버에서 입력을 해줘야했다.
lsblk
마운트할 볼륨을 찾고
sudo mkdir -p /mnt/data
sudo mount /dev/nvme1n1 /mnt/data
echo '{"data-root": "/mnt/data/docker"}' | sudo tee /etc/docker/daemon.json
sudo service docker restart
docker info | grep "Docker Root Dir"
명령어를 실행하고 다시 실행했다.
드디어 overlay 가 ebs 추가한 볼륨과 연결이 되었다.
저렇게 넉넉해 지니까 마음이 편안해졌다.
젠킨스 파이프라인도 복붙해서 다시 서버 구성했어도 됬지만 예전에 인스턴스 용량이슈로 인해 해결하지 못한 부분이 있어 시도했다.
좋은경험이었다.
인스턴스 구성할때 상황에 적절한 스토리지볼륨을 적용하자.
파이프라인 이슈
- 도커 빌드할때 젠킨스 서버 안에 도커설치를 해줘야한다.
docker exec -u root -it jenkins bash
groupadd docker
usermod -aG docker jenkins
-aws configure 설정
apt install -y unzip && curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" && unzip awscliv2.zip && ./aws/install && aws --version
위의 두설정은 계속해서 젠킨스 재시작할때마다 다시 설정 해야해서 꽤나 골치 아팠다.
'이슈' 카테고리의 다른 글
RDB vs Elasticsearch 검색 성능 비교 (0) | 2025.01.10 |
---|---|
Kafka, Redis를 활용한 이벤트 중복 처리 방지 (2) | 2024.12.19 |
AWS EC2 배포 작업 (0) | 2023.09.07 |
데이터 설계에 대한 고민 (0) | 2023.07.28 |
RedissonLock, JMeter 부하테스트 (0) | 2023.06.29 |