7장. Docker 작업
OpenShift Container Platform에서는 컨테이너 엔진(CRI-O 또는 Docker)을 사용하여 여러 컨테이너로 구성된 포드에서 애플리케이션을 실행합니다.
클러스터 관리자가 OpenShift Container Platform 설치 요소를 효율적으로 실행하기 위해 때때로 컨테이너 엔진을 추가로 구성해야 할 수도 있습니다.
7.1. 컨테이너 스토리지 증가 링크 복사링크가 클립보드에 복사되었습니다!
사용 가능한 스토리지 양을 늘리면 중단 없이 계속 배포할 수 있습니다. 이렇게 하려면 적절한 양의 여유 용량이 포함된 여유 파티션을 사용할 수 있어야 합니다.
7.1.1. 노드 비우기 링크 복사링크가 클립보드에 복사되었습니다!
프로시저
마스터 인스턴스에서 또는 클러스터 관리자로서 노드에서 포드를 비우고 해당 노드에서 다른 포드의 스케줄링을 비활성화하십시오.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 참고마이그레이션하지 않는 로컬 볼륨에서 실행 중인 컨테이너가 있으면
oc adm drain $ {NODE} --ignore-daemonsets --delete-local-data
명령을 실행하십시오.노드의 포드를 나열하여 포드가 제거되었는지 확인하십시오.
oc adm manage-node ${NODE} --list-pods
$ oc adm manage-node ${NODE} --list-pods Listing matched pods on node: ose-app-node01.example.com NAME READY STATUS RESTARTS AGE
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 각 노드에 대해 이전 두 단계를 반복하십시오.
포드 또는 노드 비우기 및 유출에 대한 자세한 내용은 노드 유지보수를 참조하십시오.
7.1.2. 스토리지 증가 링크 복사링크가 클립보드에 복사되었습니다!
Docker 스토리지는 두 가지 방법, 즉 새 디스크 연결 또는 기존 디스크 확장을 통해 늘릴 수 있습니다.
새로운 디스크로 스토리지 증가
전제 조건
스토리지가 더 필요한 기존 인스턴스에 새 디스크를 사용할 수 있어야 합니다. 다음 단계에서는 /etc/sysconfig/docker-storage-setup 파일에 표시된 것처럼 원본 디스크에
/dev/xvdb
레이블을, 새 디스크에는/dev/xvdd
레이블을 지정합니다.vi /etc/sysconfig/docker-storage-setup
# vi /etc/sysconfig/docker-storage-setup DEVS="/dev/xvdb /dev/xvdd"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 참고이 프로세스는 기본 OpenShift Container Platform 인프라에 따라 다를 수 있습니다.
프로시저
docker
를 중지하십시오.systemctl stop docker
# systemctl stop docker
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 포드 정의를 제거하고 호스트를 재부팅하여 노드 서비스를 중지하십시오.
mkdir -p /etc/origin/node/pods-stopped mv /etc/origin/node/pods/* /etc/origin/node/pods-stopped/
# mkdir -p /etc/origin/node/pods-stopped # mv /etc/origin/node/pods/* /etc/origin/node/pods-stopped/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow docker-storage-setup
명령을 실행하여 컨테이너 스토리지와 연관된 볼륨 그룹 및 논리 볼륨을 확장하십시오.docker-storage-setup
# docker-storage-setup
Copy to Clipboard Copied! Toggle word wrap Toggle overflow thin pool 설정의 경우 다음 출력이 표시되고 다음 단계로 진행할 수 있습니다.
INFO: Volume group backing root filesystem could not be determined INFO: Device /dev/xvdb is already partitioned and is part of volume group docker_vol INFO: Device node /dev/xvdd1 exists. Physical volume "/dev/xvdd1" successfully created. Volume group "docker_vol" successfully extended
INFO: Volume group backing root filesystem could not be determined INFO: Device /dev/xvdb is already partitioned and is part of volume group docker_vol INFO: Device node /dev/xvdd1 exists. Physical volume "/dev/xvdd1" successfully created. Volume group "docker_vol" successfully extended
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Overlay2 파일 시스템을 사용하는 XFS 설정의 경우 이전 출력에 표시되었던 증가를 볼 수 없습니다.
XFS 스토리지를 확장하려면 다음 단계를 수행해야 합니다.
lvextend
명령을 실행하여 볼륨 그룹에서 사용 가능한 모든 공간을 사용하도록 논리 볼륨을 늘리십시오.lvextend -r -l +100%FREE /dev/mapper/docker_vol-dockerlv
# lvextend -r -l +100%FREE /dev/mapper/docker_vol-dockerlv
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 참고더 적은 공간을 사용해야 하는 경우 그에 따라
FREE
백분율을 선택하십시오.사용 가능한 공간을 사용하도록 파일 시스템을 늘리려면
xfs_growfs
명령을 실행하십시오.xfs_growfs /dev/mapper/docker_vol-dockerlv
# xfs_growfs /dev/mapper/docker_vol-dockerlv
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 참고XFS 파일 시스템은 축소할 수 없습니다.
docker-storage-setup
명령을 다시 실행하십시오.docker-storage-setup
# docker-storage-setup
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이제 출력에 확장 볼륨 그룹과 논리 볼륨이 표시됩니다.
INFO: Device /dev/vdb is already partitioned and is part of volume group docker_vg INFO: Found an already configured thin pool /dev/mapper/docker_vg-docker--pool in /etc/sysconfig/docker-storage INFO: Device node /dev/mapper/docker_vg-docker--pool exists. Logical volume docker_vg/docker-pool changed.
INFO: Device /dev/vdb is already partitioned and is part of volume group docker_vg INFO: Found an already configured thin pool /dev/mapper/docker_vg-docker--pool in /etc/sysconfig/docker-storage INFO: Device node /dev/mapper/docker_vg-docker--pool exists. Logical volume docker_vg/docker-pool changed.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Docker 서비스를 시작하십시오.
systemctl start docker vgs
# systemctl start docker # vgs VG #PV #LV #SN Attr VSize VFree docker_vol 2 1 0 wz--n- 64.99g <55.00g
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Pod 정의를 복원합니다.
mv /etc/origin/node/pods-stopped/* /etc/origin/node/pods/
# mv /etc/origin/node/pods-stopped/* /etc/origin/node/pods/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 호스트를 재부팅하여 노드 서비스를 다시 시작하십시오.
systemctl restart atomic-openshift-node.service
# systemctl restart atomic-openshift-node.service
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 새 볼륨 그룹을 생성하고
docker-storage-setup
을 다시 실행하는 방법과 비교할 때, 디스크를 추가하면 새 스토리지를 추가한 후에도 시스템에서 사용한 이미지가 여전히 존재한다는 이점이 있습니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 스토리지 용량이 증가함에 따라 새로 들어오는 포드를 허용하도록 노드를 스케줄링할 수 있게 설정하십시오.
클러스터 관리자로 마스터 인스턴스에서 다음을 실행하십시오.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
기존 디스크의 스토리지 확장
- 이전 단계에 따라 노드를 비우십시오.
docker
를 중지하십시오.systemctl stop docker
# systemctl stop docker
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 포드 정의를 제거하여 노드 서비스를 중지하십시오.
mkdir -p /etc/origin/node/pods-stopped mv /etc/origin/node/pods/* /etc/origin/node/pods-stopped/
# mkdir -p /etc/origin/node/pods-stopped # mv /etc/origin/node/pods/* /etc/origin/node/pods-stopped/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 기존 디스크의 크기를 원하는 대로 조정하십시오. 이 크기는 환경에 따라 달라질 수 있습니다.
LVM(Logical Volume Manager)을 사용하는 경우 다음을 수행하십시오.
lvremove /dev/docker_vg/docker/lv
# lvremove /dev/docker_vg/docker/lv
Copy to Clipboard Copied! Toggle word wrap Toggle overflow vgremove docker_vg
# vgremove docker_vg
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pvremove /dev/<my_previous_disk_device>
# pvremove /dev/<my_previous_disk_device>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
- 클라우드 공급자를 사용하는 경우 디스크를 삭제한 다음 더 큰 새 디스크를 생성하고 인스턴스에 연결할 수 있습니다.
비클라우드 환경의 경우 디스크 및 파일 시스템의 크기를 조정할 수 있습니다. 자세한 내용은 다음 솔루션을 참조하십시오.
- 장치 이름, 크기 등을 점검하여 새 디스크에 맞게 /etc/sysconfig/container-storage-setup 파일이 올바르게 구성되었는지 확인하십시오.
docker-storage-setup
을 실행하여 새 디스크를 재구성하십시오.Copy to Clipboard Copied! Toggle word wrap Toggle overflow Docker 서비스를 시작하십시오.
systemctl start docker vgs
# systemctl start docker # vgs VG #PV #LV #SN Attr VSize VFree docker_vol 2 1 0 wz--n- 64.99g <55.00g
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Pod 정의를 복원합니다.
mv /etc/origin/node/pods-stopped/* /etc/origin/node/pods/
# mv /etc/origin/node/pods-stopped/* /etc/origin/node/pods/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 호스트를 재부팅하여 노드 서비스를 다시 시작하십시오.
systemctl restart atomic-openshift-node.service
# systemctl restart atomic-openshift-node.service
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
7.1.3. 스토리지 백엔드 변경 링크 복사링크가 클립보드에 복사되었습니다!
서비스 및 파일 시스템이 개선됨에 따라 새로운 기능을 활용하기 위해 스토리지 백엔드를 변경해야 할 수 있습니다. 다음 단계에서는 장치 매퍼 백엔드를 overlay2
스토리지 백엔드로 변경하는 예를 보여줍니다. overlay2
는 기존 장치 매퍼보다 속도와 밀도가 향상되었습니다.
7.1.3.1. 노드 비우기 링크 복사링크가 클립보드에 복사되었습니다!
마스터 인스턴스에서 또는 클러스터 관리자로서 노드에서 포드를 비우고 해당 노드에서 다른 포드의 스케줄링을 비활성화하십시오.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 참고마이그레이션하지 않는 로컬 볼륨에서 실행 중인 컨테이너가 있으면
oc adm drain $ {NODE} --ignore-daemonsets --delete-local-data
명령을 실행하십시오.노드의 포드를 나열하여 포드가 제거되었는지 확인하십시오.
oc adm manage-node ${NODE} --list-pods
$ oc adm manage-node ${NODE} --list-pods Listing matched pods on node: ose-app-node01.example.com NAME READY STATUS RESTARTS AGE
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 포드 또는 노드 비우기 및 유출에 대한 자세한 내용은 노드 유지보수를 참조하십시오.
현재 인스턴스에서 실행 중인 컨테이너가 없으면
docker
서비스를 중지하십시오.systemctl stop docker
# systemctl stop docker
Copy to Clipboard Copied! Toggle word wrap Toggle overflow atomic-openshift-node
서비스를 중지합니다.systemctl stop atomic-openshift-node
# systemctl stop atomic-openshift-node
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 볼륨 그룹 이름, 논리 볼륨 이름 및 물리 볼륨 이름을 확인하십시오.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow docker-storage-setup
파일을 수정하여STORAGE_DRIVER
를 지정하십시오.참고시스템이 Red Hat Enterprise Linux 버전 7.3에서 7.4로 업그레이드되면,
docker
서비스에서 extfs의STORAGE_DRIVER
와 함께/var
을 사용하려고 시도합니다. extfs를STORAGE_DRIVER
로 사용하면 오류가 발생합니다. 오류에 대한 자세한 내용은 다음 버그를 참조하십시오.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 스토리지를 설정하십시오.
docker-storage-setup
# docker-storage-setup
Copy to Clipboard Copied! Toggle word wrap Toggle overflow docker
를 시작하십시오.systemctl start docker
# systemctl start docker
Copy to Clipboard Copied! Toggle word wrap Toggle overflow atomic-openshift-node
서비스를 다시 시작합니다.systemctl restart atomic-openshift-node.service
# systemctl restart atomic-openshift-node.service
Copy to Clipboard Copied! Toggle word wrap Toggle overflow overlay2
를 사용하도록 스토리지를 수정한 상태에서 들어오는 새 포드를 허용하도록 노드를 스케줄링 가능하게 설정하십시오.마스터 인스턴스에서 또는 클러스터 관리자로 다음을 수행하십시오.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow