Red Hat Training

A Red Hat training course is available for OpenShift Container Platform

2.12. Docker 스토리지 재설정

컨테이너 이미지를 다운로드하고 컨테이너를 실행하고 삭제할 때 Docker에서 매핑된 디스크 공간을 항상 확보하지는 않습니다. 결과적으로 시간이 지남에 따라 노드에서 공간이 부족하여 OpenShift Container Platform에서 새 Pod를 생성하거나 Pod를 생성하는 데 몇 분이 걸릴 수 있습니다.

예를 들어 다음은 6분 후에도 ContainerCreating 상태에 있는 Pod를 표시하고 이벤트 로그에 FailedSync 이벤트가 표시됩니다.

$ oc get pod

출력 예

NAME                               READY     STATUS              RESTARTS   AGE
cakephp-mysql-persistent-1-build   0/1       ContainerCreating   0          6m
mysql-1-9767d                      0/1       ContainerCreating   0          2m
mysql-1-deploy                     0/1       ContainerCreating   0          6m

$ oc get events

출력 예

LASTSEEN   FIRSTSEEN   COUNT     NAME                               KIND                    SUBOBJECT                     TYPE      REASON                         SOURCE                                                 MESSAGE
6m         6m          1         cakephp-mysql-persistent-1-build   Pod                                                   Normal    Scheduled                      default-scheduler                                      Successfully assigned cakephp-mysql-persistent-1-build to ip-172-31-71-195.us-east-2.compute.internal
2m         5m          4         cakephp-mysql-persistent-1-build   Pod                                                   Warning   FailedSync                     kubelet, ip-172-31-71-195.us-east-2.compute.internal   Error syncing pod
2m         4m          4         cakephp-mysql-persistent-1-build   Pod                                                   Normal    SandboxChanged                 kubelet, ip-172-31-71-195.us-east-2.compute.internal   Pod sandbox changed, it will be killed and re-created.

이 문제에 대한 한 가지 해결책은 Docker에서 필요하지 않은 아티팩트를 제거하도록 Docker 스토리지를 재설정하는 것입니다.

Docker 스토리지를 다시 시작하려는 노드에서 다음을 수행합니다.

  1. 다음 명령을 실행하여 노드를 예약할 수 없음으로 표시합니다.

    $ oc adm manage-node <node> --schedulable=false
  2. 다음 명령을 실행하여 Docker 및 atomic-openshift-node 서비스를 종료합니다.

    $ systemctl stop docker atomic-openshift-node
  3. 다음 명령을 실행하여 로컬 볼륨 디렉터리를 제거합니다.

    $ rm -rf /var/lib/origin/openshift.local.volumes

    이 명령은 로컬 이미지 캐시를 지웁니다. 결과적으로 이미지( ose-* 이미지 포함)를 다시 가져와야 합니다. 이렇게 하면 이미지 저장소가 복구되는 동안 Pod 시작 시간이 느려질 수 있습니다.

  4. /var/lib/docker 디렉토리를 제거합니다.

    $ rm -rf /var/lib/docker
  5. 다음 명령을 실행하여 Docker 스토리지를 재설정합니다.

    $ docker-storage-setup --reset
  6. 다음 명령을 실행하여 Docker 스토리지를 다시 생성합니다.

    $ docker-storage-setup
  7. /var/lib/docker 디렉터리를 다시 생성합니다.

    $ mkdir /var/lib/docker
  8. 다음 명령을 실행하여 Docker 및 atomic-openshift-node 서비스를 다시 시작합니다.

    $ systemctl start docker atomic-openshift-node
  9. 호스트를 재부팅하여 노드 서비스를 다시 시작하십시오.

    # systemctl restart atomic-openshift-node.service
  10. 다음 명령을 실행하여 노드를 예약 가능으로 표시합니다.

    $ oc adm manage-node <node> --schedulable=true