【云原生 · Kubernetes】KubeVirt热迁移
【云原生 · Kubernetes】KubeVirt热迁移
热迁移是KubeVirt支持的一个常见虚拟化特性,在这个特性中,运行在一个集群节点上的虚拟机可以移动到另一个集群节点上,而不需要关闭来宾操作系统或其应用程序。
要在Kubernetes测试环境中试验KubeVirt实时迁移,需要进行一些设置。
启动Kubernetes集群,要求如下:
- 两个或多个节点
- CNI插件:Flannel是概念环境证明的好选择。
- 嵌套或模拟虚拟化
- KubeVirt
关于使用Minikube的简单测试环境,请参考本网站的Minikube快速入门。
检查节点和kubevirt状态
查询节点及其IP范围。
kubectl get nodes -o wide
这将返回一个类似于
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
minikube Ready control-plane,master 2m43s v1.20.7 192.168.39.240 <none> Buildroot 2020.02.12 4.19.182 docker://20.10.6
minikube-m02 Ready <none> 118s v1.20.7 192.168.39.245 <none> Buildroot 2020.02.12 4.19.182 docker://20.10.6
检查kubevirt是否已完全部署:
kubectl -n kubevirt get kubevirt
NAME AGE PHASE
kubevirt 3m20s Deployed
启用热迁移
在撰写本文时,动态迁移还不是KubeVirt的标准特性。要启用该特性,请在“kubevirt”命名空间中创建一个名为“kubevirt-config”的ConfigMap。
kubectl apply -f - <<EOF
apiVersion: v1
kind: ConfigMap
metadata:
name: kubevirt-config
namespace: kubevirt
labels:
kubevirt.io: ""
data:
feature-gates: "LiveMigration"
EOF
创建虚拟机
接下来,创建虚拟机。请参考创建虚拟机章节。
kubectl apply -f https://kubevirt.io/labs/manifests/vm.yaml
virtctl start testvm
在多节点环境中,了解在哪个节点上运行pod是很有帮助的。使用-o wide查看其节点:
kubectl get pod -o wide
注意在这个例子中,pod显示为运行在NODE " minikube-m02 "上:
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
virt-launcher-testvm-c8nzz 2/2 Running 0 32s 10.244.1.12 minikube-m02 <none> <none>
在虚拟机上启动一个服务
使用virtctl,公开两个端口进行测试,ssh/22和http/8080:
virtctl expose vmi testvm --name=testvm-ssh --port=22 --type=NodePort
virtctl expose vmi testvm --name=testvm-http --port=8080 --type=NodePort
首先登录控制台,使用netcat运行一个简单的web服务器:
virtctl console testvm
在控制台登录提示符中提到了默认用户“cirros”及其密码,请使用它们登录。接下来,运行下面的while循环,连续响应任何http连接尝试,并发送测试消息:
while true; do ( echo "HTTP/1.0 200 Ok"; echo; echo "Migration test" ) | nc -l -p 8080; done
在控制台登录提示符中提到了默认用户“cirros”及其密码,请使用它们登录。接下来,运行下面的while循环,连续响应任何http连接尝试,并发送测试消息:
IP=$(minikube ip)
PORT=$(kubectl get svc testvm-http -o jsonpath='{.spec.ports[0].nodePort}')
现在使用curl从简单的web服务中读取数据:
curl ${IP}:${PORT}
这将输出Migration test。如果一切正常,就应该将虚拟机迁移到另一个节点。
迁移虚拟机
将testvm vmi从一个节点迁移到另一个节点,执行以下命令:
virtctl migrate testvm
为了确保迁移发生,在“宽”视图下观察豆荚:
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
virt-launcher-testvm-8src7 0/2 Completed 0 5m 10.244.1.14 minikube-m02 <none> <none>
virt-launcher-testvm-zxlts 2/2 Running 0 21s 10.244.0.7 minikube <none> <none>
注意,原始的virt启动器吊舱已经进入Completed状态,虚拟机现在正在minikube节点上运行。测试之前启动的服务是否仍在运行:
curl ${IP}:${PORT}
同样,这应该输出迁移测试。
总结
这个示例现在结束了。这个练习演示了KubeVirt Live Migration将正在运行的虚拟机从一个节点移动到另一个节点的能力,而不需要重新启动正在运行的应用程序。
【云原生 · Kubernetes】KubeVirt热迁移的更多相关文章
- 系列文章:云原生Kubernetes日志落地方案
在Logging这块做了几年,最近1年来越来越多的同学来咨询如何为Kubernetes构建一个日志系统或者是来求助在这过程中遇到一系列问题如何解决,授人以鱼不如授人以渔,于是想把我们这些年积累的经验以 ...
- [云原生]Kubernetes - 集群搭建(第2章)
目录 一.前置知识点 二.kubeadm部署方式介绍 三.安装要求 四.最终目标 五.准备环境 六.环境初始化 6.1 设置系统主机名以及Hosts文件的相互解析 6.2 安装依赖文件(所有节点) 6 ...
- 干货 | 京东云原生容器—SpringCloud实践(一)
"云原生"成为近年热词并不是一种偶然,它不是一个软件,也不是一种框架,而是一堆理念集合,以及围绕这些理念所产生的一些最佳实践的工具.云原生天然就是作用于服务架构的,可以视作一个服务 ...
- Kubernetes 入门必备云原生发展简史
作者|张磊 阿里云容器平台高级技术专家,CNCF 官方大使 "未来的软件一定是生长于云上的"这是云原生理念的最核心假设.而所谓"云原生",实际上就是在定义一条能 ...
- Kubernetes v1.17 版本解读 | 云原生生态周报 Vol. 31
作者 | 徐迪.李传云.黄珂.汪萌海.张晓宇.何淋波 .陈有坤.李鹏审核 | 陈俊 上游重要进展 1. Kubernetes v1.17 版本发布 功能稳定性是第一要务.v1.17 包含 22 个增强 ...
- 云原生时代, Kubernetes 多集群架构初探
为什么我们需要多集群? 近年来,多集群架构已经成为“老生常谈”.我们喜欢高可用,喜欢异地多可用区,而多集群架构天生就具备了这样的能力.另一方面我们也希望通过多集群混合云来降低成本,利用到不同集群各自的 ...
- [转帖]Kubernetes v1.17 版本解读 | 云原生生态周报 Vol. 31
Kubernetes v1.17 版本解读 | 云原生生态周报 Vol. 31 https://www.kubernetes.org.cn/6252.html 2019-12-13 11:59 ali ...
- 使用Velero Restic快速完成云原生应用迁移至ACK集群
本文记录使用Velero Restic快速完成云原生应用迁移至ACK集群的实践过程. 0. 实践步骤概览 (1)创建GKE集群(或自建Kubernetes集群)(2)在GKE集群上部署示例应用Jenk ...
- 使用 Iceberg on Kubernetes 打造新一代云原生数据湖
背景 大数据发展至今,按照 Google 2003年发布的<The Google File System>第一篇论文算起,已走过17个年头.可惜的是 Google 当时并没有开源其技术,& ...
- VMware vSphere 7.0 Update 2 发布 - 数据中心虚拟化和 Kubernetes 云原生应用引擎
2021 年 3 月 9 日,VMware 发布了 vSphere 7 Update 2.它可以通过 VMware Customer Connect 和 vSphere Lifecycle Manag ...
随机推荐
- KingbaseES R6 集群通过备库clone在线添加新节点
案例说明: KingbaseES R6集群可以通过图形化方式在线添加新节点,但是在添加新节点clone环节时,是从主库copy数据到新的节点,这样在生产环境,如果数据量大,将会对主库的网络I/O造成压 ...
- 对表白墙wxss的解释
一.index.wxss 1 /* 信息 */ 2 .Xinxi{ 3 display: flex; 4 flex-wrap: wrap; 5 margin: 0rpx 1%; 6 } 7 8 9 / ...
- 阿色全息脑图,及制作软件AHMM
阿色全息脑图 AHMM 全息脑图是按照大系统观原理开发的新型思维工具,用于升维思考. 让您以系统的观点看待世界,专注系统的结构信息--全息,抓住事物的本质,透过表象和数据发现规律. 世间每项事物都是一 ...
- 《Java基础——继承》
Java基础--继承 一.类的继承: 规则: 1.一个子类只能有一个父类,但一个父类可以有多个子类,每个子类都可以作为父类使用. 2.若一个类没有声明父类,则默认其父类为Object. 3.父 ...
- .NET 反向代理 YARP 通过编码方式配置域名转发
前面介绍了 YARP 通过配置文件的方式配置代理转发(传送门),而众所周知,微软的一贯作风就是能通过配置文件做的事情,通过编码的方式也能实现!YARP 也不例外,废话不多说,直接上代码! 首先,参照官 ...
- TLS安全策略等级
TLS安全策略包含HTTPS可选的TLS协议版本和配套的加密算法套件.TLS协议版本越高,HTTPS通信的安全性越高,但是相较于低版本TLS协议,高版本TLS协议对浏览器的兼容性较差. ssl_cip ...
- vivo 公司 Kubernetes 集群 Ingress 网关实践
文章转载自:https://mp.weixin.qq.com/s/qPqrJ3un1peeWgG9xO2m-Q 背景 vivo 人工智能计算平台小组从 2018 年底开始建设 AI 计算平台至今,已经 ...
- Bert不完全手册9. 长文本建模 BigBird & Longformer & Reformer & Performer
这一章我们来唠唠如何优化BERT对文本长度的限制.BERT使用的Transformer结构核心在于注意力机制强大的交互和记忆能力.不过Attention本身O(n^2)的计算和内存复杂度,也限制了Tr ...
- python今日分享(内置方法)
目录 一.习题详解 二.数据类型的内置方法理论 三.整型相关操作 四.浮点型相关操作 五.字符串相关操作 六.列表相关操作 今日详解 一.习题详解 1.计算1-100所有数据之和 all_num = ...
- Java 集合简介 一
什么是集合? 集合就是由若干个确定的元素所构成的整体.例如,5只小兔构成的集合: 在数学中,我们经常遇到集合的概念.例如: ● 有限集合 ○ 一个班所有的同学构成的集合: ○ 一个网站所有的商品构成的 ...