8.3. 直接迁移的已知问题
8.3.1. 使用 spc_t
在 OpenShift Container Platform 上运行的工作负载自动应用 Skip SELinux 重新标记临时解决方案
当尝试使用 Migration Toolkit for Containers (MTC)迁移命名空间以及与之关联的大量卷时,rsync-server
可能会冻结,且没有提供用于进一步排除此问题的信息。
8.3.1.1. 诊断 Skip SELinux 重新标记临时解决方案
在 kubelet 日志中搜索 Unable to attach or mount volumes for pod…timed out waiting for the condition
错误,它来自为 Direct Volume Migration (DVM) 运行 rsync-server
的节点。
kubelet 日志示例
kubenswrapper[3879]: W0326 16:30:36.749224 3879 volume_linux.go:49] Setting volume ownership for /var/lib/kubelet/pods/8905d88e-6531-4d65-9c2a-eff11dc7eb29/volumes/kubernetes.io~csi/pvc-287d1988-3fd9-4517-a0c7-22539acd31e6/mount and fsGroup set. If the volume has a lot of files then setting volume ownership could be slow, see https://github.com/kubernetes/kubernetes/issues/69699 kubenswrapper[3879]: E0326 16:32:02.706363 3879 kubelet.go:1841] "Unable to attach or mount volumes for pod; skipping pod" err="unmounted volumes=[8db9d5b032dab17d4ea9495af12e085a], unattached volumes=[crane2-rsync-server-secret 8db9d5b032dab17d4ea9495af12e085a kube-api-access-dlbd2 crane2-stunnel-server-config crane2-stunnel-server-secret crane2-rsync-server-config]: timed out waiting for the condition" pod="caboodle-preprod/rsync-server" kubenswrapper[3879]: E0326 16:32:02.706496 3879 pod_workers.go:965] "Error syncing pod, skipping" err="unmounted volumes=[8db9d5b032dab17d4ea9495af12e085a], unattached volumes=[crane2-rsync-server-secret 8db9d5b032dab17d4ea9495af12e085a kube-api-access-dlbd2 crane2-stunnel-server-config crane2-stunnel-server-secret crane2-rsync-server-config]: timed out waiting for the condition" pod="caboodle-preprod/rsync-server" podUID=8905d88e-6531-4d65-9c2a-eff11dc7eb29
8.3.1.2. 使用 Skip SELinux 重新标记临时解决方案解决
要解决这个问题,使用 MigrationController
自定义资源(CR)在源和目标 MigClusters
中将 migration_rsync_super_privileged
参数设置为 true
。
MigrationController CR 示例
apiVersion: migration.openshift.io/v1alpha1
kind: MigrationController
metadata:
name: migration-controller
namespace: openshift-migration
spec:
migration_rsync_super_privileged: true 1
azure_resource_group: ""
cluster_name: host
mig_namespace_limit: "10"
mig_pod_limit: "100"
mig_pv_limit: "100"
migration_controller: true
migration_log_reader: true
migration_ui: true
migration_velero: true
olm_managed: true
restic_timeout: 1h
version: 1.8.3
- 1
migration_rsync_super_privileged
参数的值指示是否将 Rsync Pod 作为 超级特权容器 运行 (spc_t selinux context
)。有效设置为true
或false
。