본문 바로가기

개발하자

장치에 공간이 남아 있지 않습니다. 예상치 못한 일입니다. 볼륨 마운트.kubernetes 클러스터의 볼륨에 대한 설정 실패

반응형

장치에 공간이 남아 있지 않습니다. 예상치 못한 일입니다. 볼륨 마운트.kubernetes 클러스터의 볼륨에 대한 설정 실패

오늘날 내 쿠버네티스 클러스터(v1.15.2) 노드 디스크가 가득 차 있고 포드를 야기하는 이유는 다음과 같은 팁을 제공한다:

Update plugin resources failed due to failed to write checkpoint file "kubelet_internal_checkpoint": write /var/lib/kubelet/device-plugins/.261578065: no space left on device, which is unexpected.
MountVolume.SetUp failed for volume "default-token-xnrwt" : mkdir /opt/k8s/k8s/kubelet/pods/67eaa71b-adf4-4365-a1c7-42045d5e9426: no space left on device

서버에 로그인하면 디스크 사용량이 100%이므로 로그 파일을 일부 제거하고 10GB + 디스크 공간을 해제하지만 지금은 포드가 자동으로 복구되지 않고 여전히 다음과 같은 오류 팁이 있습니다:

enter image description here

이 문제를 해결하려면 어떻게 해야 할까요? 나는 모든 포드를 다시 시작하려고 노력하고, 모든 포드는 정상적으로 작동한다. 그러나 마침내 나는 오류 팁 메시지가 여전히 나에게 공간이 남지 않고 자동으로 사라지지 않는다는 것을 발견했다. 노드 상태를 확인해보니 노드에 디스크 압력이 없습니다. 오류 팁을 없애는 방법은?




이것을 해결책으로 올리는 것은 댓글란에 언급되었다.

오류는 응용프로그램이 사용 가능한 공간을 100% 사용할 때 발생합니다. 명령어를 사용하여 확인할 수 있습니다.

해결책

이런 문제를 해결하기 위해서는 에서 "공간을 좀 만들어야 한다. 파일을 수동으로 제거하면 된다(이 시나리오에서는 OP가 했다). 공간을 확보한 후에는 사용을 다시 시작해야 합니다.

위 단계를 통해 OPs 문제가 해결되었습니다.

또한 일부 특정 시나리오에서는 또는 특정 리소스를 사용하여 도커 서비스를 다시 시작할 수도 있습니다.




다른 가능성은 리소스 요청/제한에 대한 단위 값이 올바르지 않을 수 있습니다(ex, 대신 사용).

예를 들어 다음과 같습니다:

apiVersion: v1
kind: Pod
spec:
  containers:
    - name: {container_name}
      resources:
        limits:
          memory: "512mi" # incorrect; should be "512Mi"
          cpu: "200m"



다른 대답들은 맞지만 왜 이런 일이 일어나는지 설명하지 못한다. Kube는 /tmp 및 /run에 대해 tempfs/memory-based/wich-is-resource.limits.memory-based 마운트를 사용합니다.

tmpfs는 사용 가능한 메모리 자원에 의해 제한된다

접미사를 메모리 제한을 벗어난 상태로 두는 것은 메모리의 바이트 수(Mi 또는 Gi를 참조했다고 생각한 숫자)가 할당된 포드를 시작하려는 것을 의미합니다. 각 파일 시스템 노드는 4k를 차지한다.

이러한 inode는 tmpfs 볼륨의 수명 동안 지속되어야 합니다. 쿠버네티스는 그런 종류의 실수들을 거품을 내는 데 끔찍한 일을 한다. 그것들은 실제이고 실제 상태를 묘사하지만 쿠브 이벤트는 당신의 노드가 폭발하거나 포드의 무언가가 끔찍한 것을 하는 것처럼 보이게 만든다.




제 경우에는 도커 이미지가 크고(>7GB), EKS 노드의 스토리지 용량은 20GB에 불과했습니다. 저는 이 문제에 직면해 있었습니다:

Failed to pull image "XXXX.dkr.ecr.us-east-1.amazonaws.com/image-name:xxxxxxxx": rpc error: code = Unknown desc = failed to pull and unpack image "XXXXX.dkr.ecr.us-east-1.amazonaws.com/content-intel-xxxxxx:xxxxxxxx": failed to copy: write /var/lib/containerd/io.containerd.content.v1.content/ingest/xxxxxxxxxxxxxx/data: no space left on device

이를 해결하기 위해 디스크 스토리지 크기(50GB)를 늘린 새 노드 그룹을 만들었습니다.


반응형