Kubevirt部署虚拟机
Architecture
KubeVirt is built using a service oriented architecture and a choreography pattern.
Stack
+---------------------+
| KubeVirt |
~~+---------------------+~~
| Orchestration (K8s) |
+---------------------+
| Scheduling (K8s) |
+---------------------+
| Container Runtime |
~~+---------------------+~~
| Operating System |
+---------------------+
| (Virtual) |
~~+---------------------+~~
| Physical |
+---------------------+
Users requiring virtualization services are speaking to the Virtualization API (see below) which in turn is speaking to the Kubernetes cluster to schedule requested VMIs. Scheduling, networking, and storage are all delegated to Kubernetes, while KubeVirt provides the virtualization functionality.
部署
部署k8s集群
kubeadm init --image-repository registry.aliyuncs.com/google_containers --kubernetes-version v1.13.0 --pod-network-cidr=192.168.0.0/16
kubectl taint nodes --all node-role.kubernetes.io/master-
kubectl apply -f weave-daemonset-k8s-1.7.yaml
部署Kubevirt基础组件
下载Kubevirt yaml文件:
[[email protected] kubevirt]# wget https://github.com/kubevirt/kubevirt/releases/download/v0.11.1/kubevirt.yaml
--2019-01-10 19:36:53-- https://github.com/kubevirt/kubevirt/releases/download/v0.11.1/kubevirt.yaml
Resolving github.com (github.com)... 13.250.177.223, 13.229.188.59, 52.74.223.119
Connecting to github.com (github.com)|13.250.177.223|:443... connected.
HTTP request sent, awaiting response... 302 Found
Location: https://github-production-release-asset-2e65be.s3.amazonaws.com/76686583/b0e77400-febe-11e8-97df-11a2baaa9902?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20190110%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20190110T113654Z&X-Amz-Expires=300&X-Amz-Signature=4ca7c40ab5140015fd5dc9974e0e40ce2a9d8b465bb566b0f626e57fb27f8b5e&X-Amz-SignedHeaders=host&actor_id=0&response-content-disposition=attachment%3B%20filename%3Dkubevirt.yaml&response-content-type=application%2Foctet-stream [following]
--2019-01-10 19:36:55-- https://github-production-release-asset-2e65be.s3.amazonaws.com/76686583/b0e77400-febe-11e8-97df-11a2baaa9902?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20190110%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20190110T113654Z&X-Amz-Expires=300&X-Amz-Signature=4ca7c40ab5140015fd5dc9974e0e40ce2a9d8b465bb566b0f626e57fb27f8b5e&X-Amz-SignedHeaders=host&actor_id=0&response-content-disposition=attachment%3B%20filename%3Dkubevirt.yaml&response-content-type=application%2Foctet-stream
Resolving github-production-release-asset-2e65be.s3.amazonaws.com (github-production-release-asset-2e65be.s3.amazonaws.com)... 52.216.163.3
Connecting to github-production-release-asset-2e65be.s3.amazonaws.com (github-production-release-asset-2e65be.s3.amazonaws.com)|52.216.163.3|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 16625 (16K) [application/octet-stream]
Saving to: ‘kubevirt.yaml’
100%[===================================================================================>] 16,625 65.2KB/s in 0.2s
2019-01-10 19:36:56 (65.2 KB/s) - ‘kubevirt.yaml’ saved [16625/16625]
[[email protected] kubevirt]# ls
kubevirt.yaml
[[email protected] kubevirt]#
创建kubevirt命名空间文件:
[[email protected] kubevirt]# cat kubevirt-namespaces.yaml
apiVersion: v1
kind: Namespace
metadata:
name: kubevirt
labels:
name: kubevirt
[[email protected] kubevirt]#
[[email protected] kubevirt]# kubectl create -f kubevirt-namespaces.yaml
namespace/kubevirt created
[[email protected] kubevirt]# kubectl get ns
NAME STATUS AGE
default Active 5m27s
kube-public Active 5m27s
kube-system Active 5m27s
kubevirt Active 3s
[[email protected] kubevirt]#
部署kubevirt:
[[email protected] kubevirt]# kubectl apply -f kubevirt.yaml
service/kubevirt-prometheus-metrics created
clusterrole.rbac.authorization.k8s.io/kubevirt.io:admin created
clusterrole.rbac.authorization.k8s.io/kubevirt.io:edit created
clusterrole.rbac.authorization.k8s.io/kubevirt.io:view created
serviceaccount/kubevirt-apiserver created
clusterrolebinding.rbac.authorization.k8s.io/kubevirt-apiserver created
clusterrolebinding.rbac.authorization.k8s.io/kubevirt-apiserver-auth-delegator created
rolebinding.rbac.authorization.k8s.io/kubevirt-apiserver created
role.rbac.authorization.k8s.io/kubevirt-apiserver created
clusterrole.rbac.authorization.k8s.io/kubevirt-apiserver created
clusterrole.rbac.authorization.k8s.io/kubevirt-controller created
serviceaccount/kubevirt-controller created
serviceaccount/kubevirt-privileged created
clusterrolebinding.rbac.authorization.k8s.io/kubevirt-controller created
clusterrolebinding.rbac.authorization.k8s.io/kubevirt-privileged-cluster-admin created
clusterrole.rbac.authorization.k8s.io/kubevirt.io:default created
clusterrolebinding.rbac.authorization.k8s.io/kubevirt.io:default created
service/virt-api created
deployment.extensions/virt-api created
deployment.extensions/virt-controller created
daemonset.extensions/virt-handler created
customresourcedefinition.apiextensions.k8s.io/virtualmachineinstances.kubevirt.io created
customresourcedefinition.apiextensions.k8s.io/virtualmachineinstancereplicasets.kubevirt.io created
customresourcedefinition.apiextensions.k8s.io/virtualmachineinstancepresets.kubevirt.io created
customresourcedefinition.apiextensions.k8s.io/virtualmachines.kubevirt.io created
customresourcedefinition.apiextensions.k8s.io/virtualmachineinstancemigrations.kubevirt.io created
[[email protected] kubevirt]#
[[email protected] kubevirt]# kubectl get pod --all-namespaces
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system coredns-78d4cf999f-jrrn9 1/1 Running 0 3h14m
kube-system coredns-78d4cf999f-mvjzw 1/1 Running 0 3h14m
kube-system etcd-master 1/1 Running 0 3h14m
kube-system kube-apiserver-master 1/1 Running 0 3h14m
kube-system kube-controller-manager-master 1/1 Running 0 3h13m
kube-system kube-proxy-m67ln 1/1 Running 0 3h14m
kube-system kube-scheduler-master 1/1 Running 0 3h14m
kube-system weave-net-cn8sh 2/2 Running 0 3h14m
kubevirt virt-api-b7cdfd6cd-48mzd 1/1 Running 0 73s
kubevirt virt-api-b7cdfd6cd-kpnqn 1/1 Running 0 73s
kubevirt virt-controller-dcbb76d59-6jg7j 1/1 Running 0 73s
kubevirt virt-controller-dcbb76d59-t2dlp 1/1 Running 0 73s
kubevirt virt-handler-sgbr2 1/1 Running 0 73s
[[email protected] kubevirt]#
创建Kubevirt虚拟机
[[email protected] vnf]# ls
Dockerfile vnf.qcow2
[[email protected] vnf]# cat Dockerfile
FROM kubevirt/container-disk-v1alpha
# Add vm
COPY vnf.qcow2 /disk/
RUN mkdir -p /custom-disk && cp /disk/vnf.qcow2 /custom-disk/vnf.qcow2
[[email protected] vnf]# docker build -t kubevirt:vnf .
Sending build context to Docker daemon 870.3 MB
Step 1/3 : FROM kubevirt/container-disk-v1alpha
---> 6c3f9c17f1cb
Step 2/3 : COPY vnf.qcow2 /disk/
---> 457800959812
Removing intermediate container bc285be0d5f8
Step 3/3 : RUN mkdir -p /custom-disk && cp /disk/vnf.qcow2 /custom-disk/vnf.qcow2
---> Running in 8ba431fd1942
---> e8e7f322cfc7
Removing intermediate container 8ba431fd1942
Successfully built e8e7f322cfc7
[[email protected] vnf]#
创建部署Kubevirt虚拟器yaml文件
[[email protected] kubevirt]# cat vm-vnf.yaml
apiVersion: kubevirt.io/v1alpha2
kind: VirtualMachine
metadata:
name: vnf
spec:
running: false
template:
metadata:
labels:
guest: vnf
kubevirt.io/size: small
spec:
domain:
resources:
requests:
memory: 2048M
devices:
disks:
- name: containerdisk
volumeName: registryvolume
disk: {}
volumes:
- name: registryvolume
containerDisk:
image: kubevirt:vnf
[[email protected] kubevirt]#
部署Kubevirt虚拟机
[[email protected] kubevirt]# kubectl apply -f vm-vnf.yaml
virtualmachine.kubevirt.io/vnf created
[[email protected] kubevirt]#
下载virtctl工具:
[[email protected] kubevirt]# curl -L -o virtctl https://github.com/kubevirt/kubevirt/releases/download/v0.11.1/virtctl-v0.11.1-linux-amd64
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 617 0 617 0 0 374 0 --:--:-- 0:00:01 --:--:-- 374
100 36.9M 100 36.9M 0 0 214k 0 0:02:56 0:02:56 --:--:-- 229k
[[email protected] kubevirt]#
[[email protected] kubevirt]# ./virtctl start vnf
VM vnf was scheduled to start
[[email protected] kubevirt]# kubectl get pod
NAME READY STATUS RESTARTS AGE
virt-launcher-vnf-2rkmd 2/2 Running 0 29s
[[email protected] kubevirt]#
登录vnf虚拟机:
[[email protected] kubevirt]# ./virtctl console vnf
Successfully connected to vnf console. The escape sequence is ^]
localhost login: develop
Serial:703B-12E5-4821-670B Status:788414
Password:
[[email protected] kubevirt]#
[[email protected] kubevirt]#