云网牛站
所在位置:首页 > Linux云服务器 > 在Minikube上安装部署和使用KubeVirt的方法

在Minikube上安装部署和使用KubeVirt的方法

2021-04-28 16:05:30作者:戴进稿源:云网牛站

在本教程中,所使用的服务器采用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

请参见下面的屏幕截图,其中包含实际的命令输出:

在Minikube上安装部署和使用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

在Minikube上安装部署和使用KubeVirt的方法

以YAML格式输出:

$ kubectl get vms -o yaml testvm

要启动虚拟机,您可以使用:

$ virtctl start testvm

VM testvm was scheduled to start

检查虚拟机状态:

$ kubectl get vmis

在Minikube上安装部署和使用KubeVirt的方法

$ 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

 

相关主题

安装及使用kubectl、kubectx和kubens轻松管理多个Kubernetes集群

精选文章
热门文章