第 7 章 Docker 任务
OpenShift Container Platform 使用容器引擎(CRI-O 或 Docker)来运行由任意数量的容器组成的 pod 中的应用程序。
作为集群管理员,有时容器引擎需要一些额外的配置,才能高效地运行 OpenShift Container Platform 安装元素。
7.1. 增加容器存储
增加可用存储量可确保继续部署,而不会造成任何中断。为此,必须提供一个包含相应可用容量的空闲容量的空闲分区。
7.1.1. 清空节点
流程
- 从 master 实例或集群管理员,允许从该节点驱除任何 pod,并禁用该节点上调度其他 pod: - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 注意- 如果存在运行没有迁移的本地卷的容器,请运行以下命令: - oc adm drain ${NODE} --ignore-daemonsets --delete-local-data。
- 列出节点上的 pod,以验证是否已移除它们: - 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 
- 对每个节点重复前面的两个步骤。
如需有关撤离和排空 pod 或节点的更多信息,请参阅节点维护。
7.1.2. 增加存储
您可以通过两种方式来增加 Docker 存储:附加新磁盘或扩展现有磁盘。
使用新磁盘增加存储
先决条件
- 需要更多存储的现有实例都必须有新磁盘。在以下步骤中,原始磁盘被标记为 - /dev/xvdb,新磁盘被标记为- /dev/xvdd,如 /etc/sysconfig/docker-storage-setup 文件所示:- 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 
- 通过删除 pod 定义并重启主机来停止节点服务: - 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 - 有关 精简池 设置,您应该看到以下输出并继续下一步: - 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 
- 随着存储容量增加,使节点可以调度,以接受新的传入的 pod。 - 作为集群管理员,从 master 实例运行以下 : - 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 
- 通过删除 pod 定义来停止节点服务: - 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(逻辑卷管理器): - 删除逻辑卷 : - 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. 清空节点
- 从 master 实例或集群管理员,允许从该节点驱除任何 pod,并禁用该节点上调度其他 pod: - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 注意- 如果存在运行没有迁移的本地卷的容器,请运行以下命令: - oc adm drain ${NODE} --ignore-daemonsets --delete-local-data
- 列出节点上的 pod,以验证是否已移除它们: - 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 - 如需有关撤离和排空 pod 或节点的更多信息,请参阅节点维护。 
- 如果没有容器目前在实例上运行的容器,停止 - 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服务会尝试使用带有 STORAGE_DRIVER 的- 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,使该节点可以调度来接受新的传入的 pod。- 从 master 实例或集群管理员: - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow