YWS 문서
YWS 콘솔로 이동
컴퓨팅/EC2 (컴퓨팅 인스턴스)

EC2 (컴퓨팅 인스턴스)

골든 이미지 클론 방식 프로비저닝

EC2를 새로 만들 때마다 OS를 새로 설치하지 않습니다. 미리 만들어둔 "골든 이미지" PVC를 Ceph RBD의 copy-on-write 클론 기능으로 복제해서 새 EC2의 디스크로 씁니다 — 그래서 생성이 몇 초 안에 끝납니다.

왜 컨테이너 이미지가 아니라 PVC에 OS가 있는가

/etc, /var, /usr, /opt, /root, /home/ubuntu는 컨테이너 이미지가 아니라 PVC의 subPath로 마운트됩니다 (PERSISTENT_SUBPATHS). 이렇게 해둔 이유는 두 가지입니다:

  • EC2를 정지했다 켜도 apt install한 패키지, 설정 파일이 그대로 살아있음 (컨테이너를 다시 만드는 게 아니라 그냥 Deployment를 0→1로 스케일만 바꾸는 거라 원래도 유지되지만, subPath 방식 덕분에 컨테이너 이미지 자체를 나중에 바꿔도 사용자가 설치한 게 안 사라짐)
  • 실제로 이걸로 득을 봤음 — chat-test EC2가 구버전 이미지(v1)로 만들어진 상태에서 사용자가 apt install nginx로 nginx를 깔았는데, 나중에 v2 이미지로 교체해도 nginx가 그대로 남아있음 (교체는 아직 실제로 하진 않음, 가능하다는 것만 확인)

이미지 버전: v1 vs v2

v1 (yws-ec2-base) v2 (yws-ec2-base-v2)
상태 frozen, 신규 생성 시 더는 안 씀 모든 신규 EC2가 이걸로 생성됨
cron 없음 있음 (@reboot 등록 가능)
자동시작 스크립트 없음 /etc/yws-startup.d/*.sh 지원
디스크에 남는 경로 /home/ubuntu만 (apt로 설치한 것은 파드가 다시 뜨면 사라짐) /etc /var /usr /opt /root /home/ubuntu

마지막 v1 EC2(chat-test)는 2026-09-28 v2로 전환했습니다 — 저장소 마이그레이션으로 파드가 다시 뜨면서 apt로 설치한 nginx가 사라진 것이 계기. 전환 방법: 파드 정지 → 보조 파드로 디스크 최상위의 홈 파일을 home/ubuntu/로 복사하고 v2 골든 이미지의 etc var usr opt root를 복사 → Deployment의 이미지와 마운트를 v2 구조로 교체 → 시작 후 필요한 패키지 재설치. 원래 파일은 디스크 최상위에 백업으로 남겨 둠. SSH 호스트 키는 v2 이미지 것으로 바뀌므로 접속하는 PC의 known_hosts를 정리해야 함

systemd는 시도했다가 롤백했습니다 — /sys/fs/cgroup이 기본적으로 읽기 전용이라 privileged: true가 필요했고, 그렇게 해도 systemd가 컨테이너 런타임과 cgroup 관리 권한을 두고 충돌해서 kubectl exec(터미널/파일탐색/코드 편집기가 전부 이걸 씀)가 아예 깨졌습니다. 그래서 cron으로 대체 — PID 1은 그대로 sshd, cron은 그냥 백그라운드 프로세스 하나로 얹혀있습니다.

정지/시작

EC2 목록의 상태는 1초마다 실시간으로 바뀝니다 (시작 중 → 실행 중, 정지 중 → 정지됨, 오류 — 오류는 마우스를 올리면 이유 표시). 목록 화면이 /dashboard/ec2/live에 1초마다 실제 쿠버네티스 상태(Deployment replicas + 파드 준비 여부)를 묻고, 서버는 이 조회를 1초 캐시해서 탭이 여러 개 열려 있어도 쿠버네티스에는 1초에 한 번만 묻습니다. 상태가 바뀌어 자리를 잡으면 그 행을 새로 받아와 접속/시작/정지 메뉴도 맞춥니다 (열린 메뉴·창이 있으면 닫힌 뒤에). 탭이 백그라운드에 있으면 멈춥니다.

EC2가 실행 중 / 정지됨 / 오류 / 다시 시작됨 상태가 되면 폰으로 알림을 받을 수 있습니다 — 알림 참고.

"정지"는 Deployment를 replicas 0으로 스케일하는 것뿐입니다 — PVC/Secret/Service/NetworkPolicy는 그대로 살아있어서, 디스크·SSH 키·할당된 IP·방화벽 규칙이 전부 유지된 채로 다시 시작할 수 있습니다.

설정 변경 (CPU/메모리)

생성 후에도 CPU/메모리를 나중에 바꿀 수 있습니다 (EC2 목록의 "작업" 메뉴 → "사양 변경"). 디스크 용량과 GPU 여부는 생성 후 변경 불가 — 온라인 PVC 리사이즈나 GPU 재할당은 리스크가 커서 범위 밖으로 뒀습니다. 설정을 바꾸면 Pod가 재시작됩니다 (새 리소스 제한을 적용하려면 어차피 새 컨테이너가 필요해서 피할 수 없음).

시작/정지 기록

EC2는 공유(EC2Share)된 상대도 정지/시작을 할 수 있어서, "누가 켰는지"를 나중에 확인할 수 있도록 모든 시작/정지 액션을 기록합니다 (EC2 목록의 "작업" 메뉴 → "시작/정지 기록").