热迁移的流程非常复杂,本篇仅设计热迁移的数据走的网络相关部分。
操作 - 热迁移的网络
虚拟机热迁移过程中很占用带宽,对网络稳定性要求也较高。为和可以原有的Kubernetes网络互不影响,生产环境最好有一套独立的网络给虚拟机热迁移使用。
这就意味着,每个Kubernetes工作节点至少要有两张网卡,所有用于热迁移的网口需要通过交换机实现互通。下面的例子将热迁移的网卡命名为eth1。
首先需要Kubernetes CNI multus 和 ipam whereabouts已经安装好。创建一个NetworkAttachmentDefinition。
代码语言:javascript复制apiVersion: "k8s.cni.cncf.io/v1"
kind: NetworkAttachmentDefinition
metadata:
name: migration-network
namespace: kubevirt
spec:
config: '{
"cniVersion": "0.3.1",
"name": "migration-bridge",
"type": "macvlan",
"master": "eth1",
"mode": "bridge",
"ipam": {
"type": "whereabouts",
"range": "10.1.1.0/24"
}
}'language-yaml复制代码
配置KubeVirt虚拟机热迁移流量走上面定义的独立网口。
代码语言:javascript复制apiVersion: kubevirt.io/v1
kind: Kubevirt
metadata:
name: kubevirt
namespace: kubevirt
spec:
configuration:
developerConfiguration:
featureGates:
- LiveMigration
migrations:
network: migration-networklanguage-yaml复制代码
代码语言:javascript复制build@jed:~/kubevirt$ kubectl get vmis
NAME AGE PHASE IP NODENAME READY
vmi-migratable 38s Running 10.244.196.145 node01 True
build@jed:~/kubevirt$ kubectl get vmis
NAME AGE PHASE IP NODENAME READY
vmi-migratable 41s Running 10.244.140.88 node02 False
build@jed:~/kubevirt$ kubectl get vmis -o yamllanguage-bash复制代码
代码语言:javascript复制 targetDirectMigrationNodePorts:
"32899": 0
"39497": 49153
"42691": 49152
targetNode: node02
targetNodeAddress: 10.1.1.1
targetNodeDomainDetected: true
targetPod: virt-launcher-vmi-migratable-llcq5
migrationTransport: Unix
nodeName: node02
phase: Running language-yaml复制代码
libvirt remote url
libvirt remote url格式如下:
代码语言:javascript复制driver[ transport]://[username@][hostname][:port]/[path][?extraparameters]
复制代码
KubeVirt 源码分析 - 热迁移的网络
virt-handler 会判断当前的virt-hander所在node是热迁移的源节点还是目的节点,若是源节点,就开启源节点的proxy,若是目的节点,就开启目的节点的proxy。
代码语言:javascript复制if d.isPreMigrationTarget(vmi) {
return d.vmUpdateHelperMigrationTarget(vmi)
} else if d.isMigrationSource(vmi) {
return d.vmUpdateHelperMigrationSource(vmi)
} else {
return d.vmUpdateHelperDefault(vmi, domainExists)
}language-go复制代码
该文章为付费文章,要查看全文,可在公众号查看全文。 https://mp.weixin.qq.com/s/-QnZxl9gARm7w9s5TKiAjQ