$ podman login registry.redhat.io
您可以在 OpenShift Container Platform 4 上安装容器迁移工具包 (MTC)。
要在 OpenShift Container Platform 3 上安装 MTC,请参阅 在 OpenShift Container Platform 3 上安装旧版容器迁移工具包运算符。 |
默认情况下,MTC Web 控制台和Migration Controller
Pod 在目标集群上运行。您可以配置Migration Controller
自定义资源清单,以在远程集群上运行 MTC Web 控制台和Migration Controller
Pod。
安装 MTC 后,必须配置一个用作复制存储库的对象存储。
要卸载 MTC,请参阅 卸载 MTC 并删除资源。
您必须安装与 OpenShift Container Platform 版本兼容的容器迁移工具包 (MTC) 运算符。
OpenShift Container Platform 4.5 及更早版本。
OpenShift Container Platform 4.6 及更高版本。
为旧平台设计的 MTC 运算符。
为现代平台设计的 MTC 运算符。
运行 MTC 控制器和 GUI 的集群。
运行 Velero 的迁移的源集群或目标集群。控制集群通过 Velero API 与远程集群通信以驱动迁移。
您必须使用兼容的 MTC 版本来迁移 OpenShift Container Platform 集群。为了使迁移成功,您的源集群和目标集群必须使用相同版本的 MTC。
MTC 1.7 支持从 OpenShift Container Platform 3.11 迁移到 4.9。
MTC 1.8 只支持从 OpenShift Container Platform 4.10 及更高版本迁移。
详情 | OpenShift Container Platform 3.11 | OpenShift Container Platform 4.0 到 4.5 | OpenShift Container Platform 4.6 到 4.9 | OpenShift Container Platform 4.10 或更高版本 |
---|---|---|---|---|
稳定 MTC 版本 |
MTC v.1.7.z |
MTC v.1.7.z |
MTC v.1.7.z |
MTC v.1.8.z |
安装 |
旧版 MTC v.1.7.z 运算符:使用 `operator.yml` 文件手动安装。 [重要] 此集群不能作为控制集群。 |
使用 OLM 安装,发布渠道 `release-v1.7` |
使用 OLM 安装,发布渠道 `release-v1.8` |
某些极端情况下,网络限制会阻止新集群连接到迁移中涉及的其他集群。例如,当从本地部署的 OpenShift Container Platform 3.11 集群迁移到云中的新 OpenShift Container Platform 集群时,新集群可能无法连接到 OpenShift Container Platform 3.11 集群。
使用 MTC v.1.7.z,如果由于网络限制,其中一个远程集群无法与控制集群通信,请使用 `crane tunnel-api` 命令。
对于稳定版 MTC,虽然应始终将最新的集群指定为控制集群,但在这种特定情况下,可以将旧集群指定为控制集群并将工作负载推送到远程集群。
您可以在 OpenShift Container Platform 4.2 到 4.5 版本上手动安装旧版 Migration Toolkit for Containers 运算符。
您必须以所有集群上的 `cluster-admin` 权限的用户身份登录。
您必须能够访问 `registry.redhat.io`。
您必须安装 `podman`。
使用您的 Red Hat 客户门户凭据登录 `registry.redhat.io`
$ podman login registry.redhat.io
通过输入以下命令下载 `operator.yml` 文件
podman cp $(podman create registry.redhat.io/rhmtc/openshift-migration-legacy-rhel8-operator:v1.7):/operator.yml ./
通过输入以下命令下载 `controller.yml` 文件
podman cp $(podman create registry.redhat.io/rhmtc/openshift-migration-legacy-rhel8-operator:v1.7):/controller.yml ./
登录您的 OpenShift Container Platform 源集群。
验证集群是否可以与 `registry.redhat.io` 进行身份验证
$ oc run test --image registry.redhat.io/ubi9 --command sleep infinity
创建 Migration Toolkit for Containers 运算符对象
$ oc create -f operator.yml
namespace/openshift-migration created
rolebinding.rbac.authorization.k8s.io/system:deployers created
serviceaccount/migration-operator created
customresourcedefinition.apiextensions.k8s.io/migrationcontrollers.migration.openshift.io created
role.rbac.authorization.k8s.io/migration-operator created
rolebinding.rbac.authorization.k8s.io/migration-operator created
clusterrolebinding.rbac.authorization.k8s.io/migration-operator created
deployment.apps/migration-operator created
Error from server (AlreadyExists): error when creating "./operator.yml":
rolebindings.rbac.authorization.k8s.io "system:image-builders" already exists (1)
Error from server (AlreadyExists): error when creating "./operator.yml":
rolebindings.rbac.authorization.k8s.io "system:image-pullers" already exists
1 | 您可以忽略 `Error from server (AlreadyExists)` 消息。这些消息是由 Migration Toolkit for Containers 运算符为早期版本的 OpenShift Container Platform 4 创建但在后期版本中提供的资源引起的。 |
创建 `MigrationController` 对象
$ oc create -f controller.yml
验证 MTC Pod 是否正在运行
$ oc get pods -n openshift-migration
您可以使用 Operator Lifecycle Manager 在 OpenShift Container Platform 4.17 上安装 Migration Toolkit for Containers 运算符。
您必须以所有集群上的 `cluster-admin` 权限的用户身份登录。
在 OpenShift Container Platform Web 控制台中,单击运算符 → OperatorHub。
使用按关键字筛选字段查找Migration Toolkit for Containers 运算符。
选择Migration Toolkit for Containers 运算符并单击安装。
单击安装。
在已安装的运算符页面上,Migration Toolkit for Containers 运算符将显示在openshift-migration项目中,状态为成功。
单击Migration Toolkit for Containers 运算符。
在提供的 API下,找到迁移控制器磁贴,然后单击创建实例。
单击创建。
单击工作负载 → Pod 以验证 MTC Pod 是否正在运行。
对于 OpenShift Container Platform 4.1 及更早版本,您必须在安装 Migration Toolkit for Containers 运算符后在 `MigrationController` 自定义资源 (CR) 清单中配置代理,因为这些版本不支持集群范围的 `proxy` 对象。
对于 OpenShift Container Platform 4.2 到 4.17,MTC 继承集群范围的代理设置。如果要覆盖集群范围的代理设置,可以更改代理参数。
直接卷迁移 (DVM) 在 MTC 1.4.2 中引入。DVM 只支持一个代理。如果目标集群也在代理之后,则源集群无法访问目标集群的路由。
如果要从代理后面的源集群执行 DVM,则必须配置一个在传输层工作的 TCP 代理,并以透明的方式转发 SSL 连接,而无需使用其自己的 SSL 证书对其进行解密和重新加密。Stunnel 代理就是此类代理的一个示例。
您可以通过 TCP 代理在源集群和目标集群之间设置直接连接,并在 `MigrationController` CR 中配置 `stunnel_tcp_proxy` 变量以使用该代理。
apiVersion: migration.openshift.io/v1alpha1
kind: MigrationController
metadata:
name: migration-controller
namespace: openshift-migration
spec:
[...]
stunnel_tcp_proxy: http://username:password@ip:port
直接卷迁移 (DVM) 只支持代理的基本身份验证。此外,DVM 仅在可以透明地隧道 TCP 连接的代理后面运行。中间人模式下的 HTTP/HTTPS 代理不起作用。现有的集群范围代理可能不支持此行为。因此,DVM 的代理设置与 MTC 中通常的代理配置有意保持不同。
您可以通过在 OpenShift 路由上运行源集群和目标集群之间的 Rsync 来启用 DVM。流量使用 Stunnel(一个 TCP 代理)进行加密。在源集群上运行的 Stunnel 与目标 Stunnel 建立 TLS 连接,并通过加密通道传输数据。
OpenShift 中的集群范围 HTTP/HTTPS 代理通常在中间人模式下配置,在该模式下,它们与外部服务器协商自己的 TLS 会话。但是,这与 Stunnel 不兼容。Stunnel 要求其 TLS 会话不被代理触碰,实际上使代理成为一个透明的隧道,它只是按原样转发 TCP 连接。因此,您必须使用 TCP 代理。
迁移控制器使用 SPDY 协议在远程 Pod 中执行命令。如果远程集群位于不支持 SPDY 协议的代理或防火墙之后,则迁移控制器将无法执行远程命令。迁移将失败并出现错误消息 `Upgrade request required`。解决方法:使用支持 SPDY 协议的代理。
除了支持 SPDY 协议外,代理或防火墙还必须将 `Upgrade` HTTP 标头传递到 API 服务器。客户端使用此标头与 API 服务器打开 Websocket 连接。如果 `Upgrade` 标头被代理或防火墙阻止,则迁移将失败并出现错误消息 `Upgrade request required`。解决方法:确保代理转发 `Upgrade` 标头。
OpenShift 支持使用 *NetworkPolicy* 或 *EgressFirewalls*(基于集群使用的网络插件)来限制进出 Pod 的流量。如果迁移涉及的任何源命名空间使用此类机制来限制 Pod 的网络流量,则这些限制可能会无意中阻止迁移期间到 Rsync Pod 的流量。
在源集群和目标集群上运行的 Rsync Pod 必须通过 OpenShift Route 相互连接。可以配置现有的 *NetworkPolicy* 或 *EgressNetworkPolicy* 对象来自动将 Rsync Pod 从这些流量限制中豁免。
如果源或目标命名空间中的 NetworkPolicy
配置阻止此类流量,则可以使用 Rsync Pod 的唯一标签来允许出站流量通过。以下策略允许命名空间中 Rsync Pod 的**所有**出站流量
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: allow-all-egress-from-rsync-pods
spec:
podSelector:
matchLabels:
owner: directvolumemigration
app: directvolumemigration-rsync-transfer
egress:
- {}
policyTypes:
- Egress
EgressNetworkPolicy
对象或 *Egress Firewalls* 是 OpenShift 的构造,旨在阻止离开集群的出站流量。
与 NetworkPolicy
对象不同,Egress Firewall 在项目级别工作,因为它应用于命名空间中的所有 Pod。因此,Rsync Pod 的唯一标签不会仅将 Rsync Pod 从限制中豁免。但是,您可以将源或目标集群的 CIDR 范围添加到策略的 *允许* 规则中,以便可以在两个集群之间建立直接连接。
基于 Egress Firewall 所在的集群,您可以添加另一个集群的 CIDR 范围以允许两个集群之间的出站流量。
apiVersion: network.openshift.io/v1
kind: EgressNetworkPolicy
metadata:
name: test-egress-policy
namespace: <namespace>
spec:
egress:
- to:
cidrSelector: <cidr_of_source_or_target_cluster>
type: Deny
默认情况下,DVM 使用 OpenShift Container Platform 路由作为端点将 PV 数据传输到目标集群。如果集群拓扑允许,您可以选择另一种类型的受支持端点。
对于每个集群,您可以通过在 MigrationController
CR 中相应的**目标**集群上设置 rsync_endpoint_type
变量来配置端点。
apiVersion: migration.openshift.io/v1alpha1
kind: MigrationController
metadata:
name: migration-controller
namespace: openshift-migration
spec:
[...]
rsync_endpoint_type: [NodePort|ClusterIP|Route]
当您的 PVC 使用共享存储时,您可以通过向 Rsync Pod 定义中添加补充组来配置对该存储的访问,以便 Pod 允许访问。
变量 | 类型 | 默认值 | 描述 |
---|---|---|---|
|
字符串 |
未设置 |
源 Rsync Pod 的补充组的逗号分隔列表 |
|
字符串 |
未设置 |
目标 Rsync Pod 的补充组的逗号分隔列表 |
可以更新 MigrationController
CR 以设置这些补充组的值。
spec:
src_supplemental_groups: "1000,2000"
target_supplemental_groups: "2000,3000"
您必须以所有集群上的 `cluster-admin` 权限的用户身份登录。
获取 MigrationController
CR 清单
$ oc get migrationcontroller <migration_controller> -n openshift-migration
更新代理参数
apiVersion: migration.openshift.io/v1alpha1
kind: MigrationController
metadata:
name: <migration_controller>
namespace: openshift-migration
...
spec:
stunnel_tcp_proxy: http://<username>:<password>@<ip>:<port> (1)
noProxy: example.com (2)
1 | 用于直接卷迁移的 Stunnel 代理 URL。 |
2 | 要排除代理的目的地域名、域、IP 地址或其他网络 CIDR 的逗号分隔列表。 |
以.
为前缀的域仅匹配子域。例如,.y.com
匹配 x.y.com
,但不匹配 y.com
。使用 *
可绕过所有目的地的代理。如果您扩展了安装配置中 networking.machineNetwork[].cidr
字段定义的网络中未包含的工作程序,则必须将其添加到此列表中,以防止连接问题。
如果未设置 httpProxy
或 httpsProxy
字段,则忽略此字段。
将清单保存为 migration-controller.yaml
。
应用更新后的清单
$ oc replace -f migration-controller.yaml -n openshift-migration
更多信息,请参见 配置集群范围的代理。
{OCP} 环境默认情况下启用了 PodSecurityAdmission
控制器。此控制器要求集群管理员通过命名空间标签来执行 Pod 安全标准。集群中的所有工作负载都应运行以下 Pod 安全标准级别之一:Privileged
、Baseline
或 Restricted
。每个集群都有其自己的默认策略集。
为了保证在所有环境中都能成功进行数据传输,容器迁移工具包 (MTC) 1.7.5 对 Rsync Pod 进行了更改,包括默认情况下以非 root 用户身份运行 Rsync Pod。这确保即使对于不一定需要更高权限的工作负载,数据传输也是可能的。进行此更改是因为最好以最低权限级别运行工作负载。
虽然在大多数情况下以非 root 用户身份运行 Rsync Pod 都可以正常工作,但在源端以 root 用户身份运行工作负载时,数据传输可能会失败。MTC 提供两种方法来手动覆盖数据传输的默认非 root 操作。
配置所有迁移以在目标集群上以 root 用户身份运行 Rsync Pod。
在每次迁移中,在目标集群上以 root 用户身份运行 Rsync Pod。
在这两种情况下,您都必须在任何运行具有较高权限的工作负载的命名空间的源端设置以下标签:enforce
、audit
和 warn
。
要了解有关 Pod 安全准入和设置标签值的更多信息,请参见 控制 Pod 安全准入同步。
默认情况下,Rsync 以非 root 用户身份运行。
在目标集群上,您可以将 MigrationController
CR 配置为以 root 用户身份运行 Rsync。
按如下所示配置 MigrationController
CR
apiVersion: migration.openshift.io/v1alpha1
kind: MigrationController
metadata:
name: migration-controller
namespace: openshift-migration
spec:
[...]
migration_rsync_privileged: true
此配置将应用于所有未来的迁移。
在目标集群上,您可以使用以下非 root 选项将 MigMigration
CR 配置为以 root 或非 root 用户身份运行 Rsync。
作为特定用户 ID (UID)
作为特定组 ID (GID)
要以 root 用户身份运行 Rsync,请根据此示例配置 MigMigration
CR
apiVersion: migration.openshift.io/v1alpha1
kind: MigMigration
metadata:
name: migration-controller
namespace: openshift-migration
spec:
[...]
runAsRoot: true
要以特定用户 ID (UID) 或特定组 ID (GID) 身份运行 Rsync,请根据此示例配置 MigMigration
CR
apiVersion: migration.openshift.io/v1alpha1
kind: MigMigration
metadata:
name: migration-controller
namespace: openshift-migration
spec:
[...]
runAsUser: 10010001
runAsGroup: 3
您必须配置一个要用作复制存储库的对象存储。容器迁移工具包 (MTC) 将数据从源集群复制到复制存储库,然后从复制存储库复制到目标集群。
MTC 支持 文件系统和快照数据复制方法 用于将数据从源集群迁移到目标集群。选择适合您的环境并受您的存储提供商支持的方法。
MTC 支持以下存储提供商
通用 S3 对象存储,例如 Minio 或 Ceph S3
您必须检索多云对象网关 (MCG) 凭据和 S3 端点,您需要将 MCG 配置为容器迁移工具包 (MTC) 的复制存储库。
您必须检索多云对象网关 (MCG) 凭据,您需要使用这些凭据为 MTC 创建一个Secret
自定义资源 (CR)。
尽管 MCG 运算符已弃用,但 MCG 插件仍可用于 OpenShift Data Foundation。要下载插件,请浏览至下载 Red Hat OpenShift Data Foundation 并下载适合您操作系统的 MCG 插件。 |
您必须使用相应的Red Hat OpenShift Data Foundation 部署指南部署 OpenShift Data Foundation。
通过在NooBaa
自定义资源上运行describe
命令,获取 S3 端点、AWS_ACCESS_KEY_ID
和AWS_SECRET_ACCESS_KEY
。
您可以使用这些凭据将 MCG 添加为复制存储库。
您可以将 Amazon Web Services (AWS) S3 对象存储配置为容器迁移工具包 (MTC) 的复制存储库。
您必须安装AWS CLI。
AWS S3 存储桶必须可供源集群和目标集群访问。
如果您使用快照复制方法
您必须能够访问 EC2 Elastic Block Storage (EBS)。
源集群和目标集群必须位于同一区域。
源集群和目标集群必须具有相同的存储类。
存储类必须与快照兼容。
设置BUCKET
变量
$ BUCKET=<your_bucket>
设置REGION
变量
$ REGION=<your_region>
创建一个 AWS S3 存储桶
$ aws s3api create-bucket \
--bucket $BUCKET \
--region $REGION \
--create-bucket-configuration LocationConstraint=$REGION (1)
1 | us-east-1 不支持LocationConstraint 。如果您的区域是us-east-1 ,请省略--create-bucket-configuration LocationConstraint=$REGION 。 |
创建一个 IAM 用户
$ aws iam create-user --user-name velero (1)
1 | 如果您想使用 Velero 备份多个集群和多个 S3 存储桶,请为每个集群创建一个唯一的用户名。 |
创建一个velero-policy.json
文件
$ cat > velero-policy.json <<EOF
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ec2:DescribeVolumes",
"ec2:DescribeSnapshots",
"ec2:CreateTags",
"ec2:CreateVolume",
"ec2:CreateSnapshot",
"ec2:DeleteSnapshot"
],
"Resource": "*"
},
{
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:DeleteObject",
"s3:PutObject",
"s3:AbortMultipartUpload",
"s3:ListMultipartUploadParts"
],
"Resource": [
"arn:aws:s3:::${BUCKET}/*"
]
},
{
"Effect": "Allow",
"Action": [
"s3:ListBucket",
"s3:GetBucketLocation",
"s3:ListBucketMultipartUploads"
],
"Resource": [
"arn:aws:s3:::${BUCKET}"
]
}
]
}
EOF
附加策略以赋予velero
用户必要的最小权限
$ aws iam put-user-policy \
--user-name velero \
--policy-name velero \
--policy-document file://velero-policy.json
为velero
用户创建一个访问密钥
$ aws iam create-access-key --user-name velero
{
"AccessKey": {
"UserName": "velero",
"Status": "Active",
"CreateDate": "2017-07-31T22:24:41.576Z",
"SecretAccessKey": <AWS_SECRET_ACCESS_KEY>,
"AccessKeyId": <AWS_ACCESS_KEY_ID>
}
}
记录AWS_SECRET_ACCESS_KEY
和AWS_ACCESS_KEY_ID
。您可以使用这些凭据将 AWS 添加为复制存储库。
您可以将 Google Cloud Platform (GCP) 存储桶配置为容器迁移工具包 (MTC) 的复制存储库。
您必须安装gcloud
和gsutil
CLI 工具。详情请参见Google Cloud 文档。
GCP 存储桶必须可供源集群和目标集群访问。
如果您使用快照复制方法
源集群和目标集群必须位于同一区域。
源集群和目标集群必须具有相同的存储类。
存储类必须与快照兼容。
登录 GCP
$ gcloud auth login
设置BUCKET
变量
$ BUCKET=<bucket> (1)
1 | 指定您的存储桶名称。 |
创建存储桶
$ gsutil mb gs://$BUCKET/
将PROJECT_ID
变量设置为您的活动项目
$ PROJECT_ID=$(gcloud config get-value project)
创建一个服务帐号
$ gcloud iam service-accounts create velero \
--display-name "Velero service account"
列出您的服务帐号
$ gcloud iam service-accounts list
将SERVICE_ACCOUNT_EMAIL
变量设置为与它的email
值匹配
$ SERVICE_ACCOUNT_EMAIL=$(gcloud iam service-accounts list \
--filter="displayName:Velero service account" \
--format 'value(email)')
附加策略以赋予velero
用户必要的最小权限
$ ROLE_PERMISSIONS=(
compute.disks.get
compute.disks.create
compute.disks.createSnapshot
compute.snapshots.get
compute.snapshots.create
compute.snapshots.useReadOnly
compute.snapshots.delete
compute.zones.get
storage.objects.create
storage.objects.delete
storage.objects.get
storage.objects.list
iam.serviceAccounts.signBlob
)
创建velero.server
自定义角色
$ gcloud iam roles create velero.server \
--project $PROJECT_ID \
--title "Velero Server" \
--permissions "$(IFS=","; echo "${ROLE_PERMISSIONS[*]}")"
将 IAM 策略绑定添加到项目
$ gcloud projects add-iam-policy-binding $PROJECT_ID \
--member serviceAccount:$SERVICE_ACCOUNT_EMAIL \
--role projects/$PROJECT_ID/roles/velero.server
更新 IAM 服务帐号
$ gsutil iam ch serviceAccount:$SERVICE_ACCOUNT_EMAIL:objectAdmin gs://${BUCKET}
将 IAM 服务帐号密钥保存到当前目录中的credentials-velero
文件
$ gcloud iam service-accounts keys create credentials-velero \
--iam-account $SERVICE_ACCOUNT_EMAIL
您可以使用credentials-velero
文件将 GCP 添加为复制存储库。
您可以将 Microsoft Azure Blob 存储容器配置为容器迁移工具包 (MTC) 的复制存储库。
您必须安装Azure CLI。
Azure Blob 存储容器必须可供源集群和目标集群访问。
如果您使用快照复制方法
源集群和目标集群必须位于同一区域。
源集群和目标集群必须具有相同的存储类。
存储类必须与快照兼容。
登录 Azure
$ az login
设置AZURE_RESOURCE_GROUP
变量
$ AZURE_RESOURCE_GROUP=Velero_Backups
创建一个 Azure 资源组
$ az group create -n $AZURE_RESOURCE_GROUP --location CentralUS (1)
1 | 指定您的位置。 |
设置AZURE_STORAGE_ACCOUNT_ID
变量
$ AZURE_STORAGE_ACCOUNT_ID="velero$(uuidgen | cut -d '-' -f5 | tr '[A-Z]' '[a-z]')"
创建一个 Azure 存储帐户
$ az storage account create \
--name $AZURE_STORAGE_ACCOUNT_ID \
--resource-group $AZURE_RESOURCE_GROUP \
--sku Standard_GRS \
--encryption-services blob \
--https-only true \
--kind BlobStorage \
--access-tier Hot
设置BLOB_CONTAINER
变量
$ BLOB_CONTAINER=velero
创建一个 Azure Blob 存储容器
$ az storage container create \
-n $BLOB_CONTAINER \
--public-access off \
--account-name $AZURE_STORAGE_ACCOUNT_ID
为velero
创建服务主体和凭据
$ AZURE_SUBSCRIPTION_ID=`az account list --query '[?isDefault].id' -o tsv`
AZURE_TENANT_ID=`az account list --query '[?isDefault].tenantId' -o tsv`
使用Contributor
角色创建服务主体,分配特定的--role
和--scopes
$ AZURE_CLIENT_SECRET=`az ad sp create-for-rbac --name "velero" \
--role "Contributor" \
--query 'password' -o tsv \
--scopes /subscriptions/$AZURE_SUBSCRIPTION_ID/resourceGroups/$AZURE_RESOURCE_GROUP`
CLI 会为您生成密码。请确保捕获密码。
创建服务主体后,获取客户端 ID。
$ AZURE_CLIENT_ID=`az ad app credential list --id <your_app_id>`
要成功执行此操作,您必须知道您的 Azure 应用程序 ID。 |
将服务主体凭据保存到credentials-velero
文件
$ cat << EOF > ./credentials-velero
AZURE_SUBSCRIPTION_ID=${AZURE_SUBSCRIPTION_ID}
AZURE_TENANT_ID=${AZURE_TENANT_ID}
AZURE_CLIENT_ID=${AZURE_CLIENT_ID}
AZURE_CLIENT_SECRET=${AZURE_CLIENT_SECRET}
AZURE_RESOURCE_GROUP=${AZURE_RESOURCE_GROUP}
AZURE_CLOUD_NAME=AzurePublicCloud
EOF
您可以使用credentials-velero
文件将 Azure 添加为复制存储库。
您可以卸载容器迁移工具包 (MTC) 并删除其资源以清理集群。
删除 |
您必须以具有cluster-admin
权限的用户身份登录。
删除所有集群上的MigrationController
自定义资源 (CR)
$ oc delete migrationcontroller <migration_controller>
使用 Operator Lifecycle Manager 在 OpenShift Container Platform 4 上卸载容器迁移工具包运算符。
通过运行以下命令删除所有集群上的集群范围资源
migration
自定义资源定义 (CRD)
$ oc delete $(oc get crds -o name | grep 'migration.openshift.io')
velero
CRD
$ oc delete $(oc get crds -o name | grep 'velero')
migration
集群角色
$ oc delete $(oc get clusterroles -o name | grep 'migration.openshift.io')
migration-operator
集群角色
$ oc delete clusterrole migration-operator
velero
集群角色
$ oc delete $(oc get clusterroles -o name | grep 'velero')
migration
集群角色绑定
$ oc delete $(oc get clusterrolebindings -o name | grep 'migration.openshift.io')
migration-operator
集群角色绑定
$ oc delete clusterrolebindings migration-operator
velero
集群角色绑定
$ oc delete $(oc get clusterrolebindings -o name | grep 'velero')