# 자주 겪는 문제

Cluma를 쓰다가 자주 만나는 상황과 해결 방법을 정리했습니다.

---

## 컨테이너

### Pending 상태에서 안 넘어가요

**클러스터에 남은 GPU가 없을 때**

다른 컨테이너가 정리되면 자동으로 풀립니다. 관리자 대시보드에서 GPU 사용 현황을 함께 확인하세요.

**우리 그룹 한도를 넘었을 때**

화면 위쪽 헤더에서 우리 그룹의 남은 자원을 확인하고, 안 쓰는 컨테이너는 정리합니다.

**노드가 작업 배치 제외 상태일 때**

관리자에게 그 노드 상태를 확인해 달라고 요청합니다.

**Pod 진단으로 정확한 원인 보기**

컨테이너 상세 화면의 **Pod 진단 조회** 버튼을 누르면 진행 상태(Phase) · 상태 조건 · 이벤트가 보입니다. 가장 정확합니다.

---

### GPU 노드에 CPU만 쓰는 인스턴스를 못 만들어요

v1.1부터 GPU가 달린 노드에는 GPU를 1개 이상 할당해야 합니다.

```
GPU 노드에 CPU 전용 인스턴스는 만들 수 없습니다.
GPU가 1개 이상 들어간 인스턴스를 골라 주세요.
```

CPU만 쓰고 싶다면 CPU 전용 노드를 쓰거나, GPU 인스턴스를 받아 그 안에서 CPU만 써도 됩니다.

---

### 일부 옵션을 쓴 Pod가 거부돼요

그룹별 작업 공간에는 기본 보안 정책이 자동으로 씌워집니다. 아래 옵션을 쓰는 Pod는 받아들여지지 않습니다.

- `hostNetwork`
- `hostPort`
- `hostPID` / `hostIPC`
- 특권 모드 (`privileged`)

Cluma가 만드는 보통 컨테이너에는 영향이 없고, 외부에서 임의로 매니페스트를 직접 들이밀 때만 막힙니다. 보안 정책으로 의도된 동작입니다.

---

### 컨테이너가 갑자기 멈췄어요

**메모리를 초과해서**

컨테이너에 할당된 메모리를 넘으면 강제로 종료됩니다. 로그를 보고 더 큰 인스턴스로 다시 만듭니다.

**Pod 진단 활용**

Pod 진단의 이벤트 영역에 OOMKilled, Evicted 같은 단서가 남아 있습니다.

---

### VS Code · SSH · Jupyter 카드가 안 열려요

포트는 자동으로 열리지만, **그 안에서 서비스가 실제로 돌고 있어야** 카드가 동작합니다.

- VS Code: code-server (포트 8443)
- SSH: sshd (포트 22)
- JupyterLab: jupyter (포트 8888)

base 이미지 안에 세 서비스가 모두 들어 있는지 확인합니다. 빈 base 이미지를 쓰셨다면, 컨테이너 안에서 직접 설치하거나 [base image 빌드 안내](https://github.com/bricksum/cluma/blob/main/docs/container-base-image-420.md) 를 참고합니다.

차례로 확인:

1. 컨테이너 상태가 `Running` 인지
2. Pod 진단에서 컨테이너 준비(ready) 가 켜져 있는지
3. 컨테이너 안에서 `ss -ltnp` 또는 `netstat -ltnp` 로 그 포트가 열려 있는지
4. 카드의 **복사** 버튼으로 주소를 받아 직접 들어가 보기

---

### SSH · VS Code · Jupyter 비밀번호는 어디 있나요?

컨테이너를 만들 때 자동으로 발급되는 비밀번호입니다. 세 가지 접속 모두 이 한 비밀번호를 씁니다.

- 컨테이너 상세 화면의 **SSH 접속 정보** 영역에서 복사하면 됩니다.
- 이 비밀번호는 그 컨테이너 안에서만 통합니다. Cluma 웹 로그인용 비밀번호와는 다릅니다.

!!!note SSH 공개키 등록(SSH Key)은 현재 비활성
v1.1에서 SSH 공개키 등록 화면은 잠시 숨겨져 있습니다. 그 동안에는 자동 발급된 비밀번호로 들어갑니다.
!!!

---

### 컨테이너가 만료돼서 사라졌어요

컨테이너에는 만료 시간이 있습니다 (1시간 / 4시간 / 1일 / 7일 / 30일 / 제한 없음). 만료 시각이 지나면 자동으로 정리됩니다.

- 자료를 잃지 않으려면 미리 스토리지에 옮겨 두세요.
- 다음 만들 때는 더 긴 사용 시간을 고르거나 **제한 없음** 으로 만듭니다.

---

### 템플릿으로 컨테이너 만들기가 실패해요

템플릿이 기억하던 스토리지 중 하나라도 사라진 경우입니다.

```
템플릿에 기록된 스토리지가 없어졌습니다: my-old-dataset
```

푸는 법:

- 없어진 스토리지를 같은 이름으로 다시 만듭니다.
- 또는 같은 설정으로 컨테이너를 직접 새로 만들고, 지금 쓰는 스토리지로 템플릿을 다시 저장합니다.

---

## 스토리지

### 스토리지가 컨테이너에 안 붙어요

- 스토리지 상태가 `활성` 인지 확인
- 마운트 경로를 제대로 적었는지 확인
- 우리 그룹의 스토리지 한도를 넘지 않았는지 확인

### 용량이 모자라요

이미 만들어 둔 스토리지 용량을 늘리려면 클러스터의 스토리지 유형이 확장을 허용해야 합니다. 우리 그룹의 스토리지 총 한도 안에서만 늘릴 수 있고, 한도 자체를 넘어야 한다면 관리자에게 요청합니다.

---

## 이미지

### 이미지를 못 가져와요

- 저장소가 관리자에 의해 잘 등록되어 있는지
- 이미지 이름과 태그가 정확한지
- 외부 공개 이미지 주소를 직접 적었다면 클러스터에서 외부 인터넷에 나갈 수 있는지

---

## 클러스터 모니터링

### 모니터링 탭에서 Grafana가 안 열려요

사용자 화면 빌드의 `NEXT_PUBLIC_GRAFANA_URL` 환경변수가 비어 있는 상태입니다.

- 배포 담당자에게 환경변수를 설정해 달라고 요청합니다.
- 기본 주소 `http://grafana.internal` 을 쓰는 경우, 작업 PC의 `/etc/hosts` 에 노드 IP 매핑을 추가합니다.

---

## 그래도 안 풀린다면

관리자에게 아래 정보를 함께 전달합니다.

- 어떤 일이 언제 일어났는지
- 컨테이너 이름과 상태
- 컨테이너 로그 (상세 화면 → 로그 보기)
- Pod 진단 결과 (상세 화면 → Pod 진단 조회)
- 감사 로그의 요청 ID (관리자만 볼 수 있음)
