在本教程中,所使用的服务器采用Linux操作系统,将介绍在Minikube环境中安装和使用KubeVirt的方法,内容有:安装Minikube和kubectl的参考、安装首选的虚拟化平台、部署KubeVirt、使用KubeVirt。
简介 Minikube是本地的Kubernetes,它使您可以轻松地在本地计算机中学习和开发Kubernetes。 KubeVirt技术使您可以在Kubernetes上管理虚拟机。该解决方案满足了运行某些应用程序的需求,这些应用程序无法轻松地在Kubernetes Cluster之上的虚拟机中进行容器化。这对于已经采用或想要采用Kubernetes但仍具有依赖于虚拟机的应用程序组件的开发人员很有帮助。依靠现有基于虚拟机的工作负载的团队有权快速将应用程序容器化。 将虚拟化工作负载直接放置在开发工作流中后,团队可以随着时间的推移对其进行分解,同时仍然可以按需使用剩余的虚拟化组件。 KubeVirt为您提供了一个统一的开发平台,您可以在其中构建、修改和部署驻留在公共共享环境中的应用程序容器和虚拟机中的应用程序。
一、安装Minikube和kubectl的参考 请参考“使用KVM在CentOS 8/CentOS 7上安装Minikube Kubernetes”一文。
二、安装首选的虚拟化平台 根据您的系统,有多个选项,常用的管理程序是VirtualBox。 参考:在CentOS 8上安装VirtualBox及VirtualBox Extension Pack(扩展包)。 对于KVM,请参考:在KVM上运行Minikube的说明。 完成所有设置后,启动Minikube实例: $ minikube start 示例输出如下: minikube v1.19.0 on Darwin 11.2.3 Automatically selected the hyperkit driver. Other choices: vmware, parallels, virtualbox, ssh Downloading driver docker-machine-driver-hyperkit: > docker-machine-driver-hyper...: 65 B / 65 B [----------] 100.00% ? p/s 0s > docker-machine-driver-hyper...: 10.52 MiB / 10.52 MiB 100.00% 4.31 MiB p The 'hyperkit' driver requires elevated permissions. The following commands will be executed: $ sudo chown root:wheel /Users/jkmutai/.minikube/bin/docker-machine-driver-hyperkit $ sudo chmod u+s /Users/jkmutai/.minikube/bin/docker-machine-driver-hyperkit Password: Downloading VM boot image ... > minikube-v1.19.0.iso.sha256: 65 B / 65 B [-------------] 100.00% ? p/s 0s > minikube-v1.19.0.iso: 244.49 MiB / 244.49 MiB 100.00% 4.92 MiB p/s 49.90 Starting control plane node minikube in cluster minikube Downloading Kubernetes v1.20.2 preload ... > preloaded-images-k8s-v10-v1...: 491.71 MiB / 491.71 MiB 100.00% 4.86 MiB Creating hyperkit VM (CPUs=2, Memory=4000MB, Disk=20000MB) ... Preparing Kubernetes v1.20.2 on Docker 20.10.4 ... ▪ Generating certificates and keys ... ▪ Booting up control plane ... ▪ Configuring RBAC rules ... Verifying Kubernetes components... ▪ Using image gcr.io/k8s-minikube/storage-provisioner:v5 Enabled addons: default-storageclass, storage-provisioner Done! kubectl is now configured to use "minikube" cluster and "default" namespace by default
三、部署KubeVirt 可以使用KubeVirt运算符安装KubeVirt,该运算符管理所有KubeVirt核心组件的生命周期。最简单的安装方法是从minikube插件中获取: $ minikube addons enable kubevirt ▪ Using image bitnami/kubectl:1.17 The 'kubevirt' addon is enabled 检查kubevirt-install-manager pod的日志: $ kubectl logs pod/kubevirt-install-manager -n kube-system v0.40.0 namespace/kubevirt created customresourcedefinition.apiextensions.k8s.io/kubevirts.kubevirt.io created priorityclass.scheduling.k8s.io/kubevirt-cluster-critical created clusterrole.rbac.authorization.k8s.io/kubevirt.io:operator created serviceaccount/kubevirt-operator created role.rbac.authorization.k8s.io/kubevirt-operator created rolebinding.rbac.authorization.k8s.io/kubevirt-operator-rolebinding created clusterrole.rbac.authorization.k8s.io/kubevirt-operator created clusterrolebinding.rbac.authorization.k8s.io/kubevirt-operator created deployment.apps/virt-operator created use emulation configmap/kubevirt-config created kubevirt.kubevirt.io/kubevirt created 检查部署状态: $ kubectl get kubevirt.kubevirt.io/kubevirt -n kubevirt -o=jsonpath="{.status.phase}" Deployed% 默认情况下,KubeVirt将部署7个Pod,3个服务,1个守护程序,3个部署应用程序,3个副本集: $ kubectl get all -n kubevirt 请参见下面的屏幕截图,其中包含实际的命令输出:
安装KubeVirt,它提供了一个称为virtctl的附加二进制文件,用于快速访问VM的串行端口和图形端口,并处理启动/停止操作: VERSION=$(kubectl get kubevirt.kubevirt.io/kubevirt -n kubevirt -o=jsonpath="{.status.observedKubeVirtVersion}") ARCH=$(uname -s | tr A-Z a-z)-$(uname -m | sed 's/x86_64/amd64/') || windows-amd64.exe echo ${ARCH} curl -L -o virtctl https://github.com/kubevirt/kubevirt/releases/download/${VERSION}/virtctl-${VERSION}-${ARCH} chmod +x virtctl sudo install virtctl /usr/local/bin 验证安装: $ virtctl version Client Version: version.Info{GitVersion:"v0.40.0", GitCommit:"127736619519e6b914e75930fc467c672e766e42", GitTreeState:"clean", BuildDate:"2021-04-20T08:34:39Z", GoVersion:"go1.13.14", Compiler:"gc", Platform:"darwin/amd64"} Server Version: version.Info{GitVersion:"v0.40.0-dirty", GitCommit:"127736619519e6b914e75930fc467c672e766e42", GitTreeState:"dirty", BuildDate:"2021-04-20T08:57:15Z", GoVersion:"go1.13.14", Compiler:"gc", Platform:"linux/amd64"}
四、使用KubeVirt 现在,您已经在由Minikube支持的Kubernetes群集中安装了KubeVirt,现在您可以通过实验来帮助您熟悉KubeVirt,以及如何将其用于通过Kubernetes创建和部署VM。 部署测试虚拟机实例: wget https://raw.githubusercontent.com/kubevirt/kubevirt.github.io/master/labs/manifests/vm.yaml 应用清单文件: $ kubectl apply -f vm.yaml virtualmachine.kubevirt.io/testvm created 运行以下命令以获取现有虚拟机和状态的列表: $ kubectl get vms
以YAML格式输出: $ kubectl get vms -o yaml testvm 要启动虚拟机,您可以使用: $ virtctl start testvm VM testvm was scheduled to start 检查虚拟机状态: $ kubectl get vmis
$ kubectl get vmis -o yaml testvm 连接到Cirros VM的串行控制台,按回车键/输入几次,然后使用显示的用户名和密码登录: $ Virtctl console testvm Successfully connected to testvm console. The escape sequence is ^] login as 'cirros' user. default password: 'gocubsgo'. use 'sudo' for root. testvm login: 通过输入:ctrl+]与虚拟机控制台断开连接。 关闭虚拟机: $ virtctl stop testvm VM testvm was scheduled to stop 删除虚拟机: $ kubectl delete vm testvm virtualmachine.kubevirt.io "testvm" deleted
相关主题 |