前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >IT外包之(KOK)kubevirt--Installing KubeVirt on Kubernetes

IT外包之(KOK)kubevirt--Installing KubeVirt on Kubernetes

原创
作者头像
Godev
修改2023-10-17 13:51:28
7530
修改2023-10-17 13:51:28
举报
文章被收录于专栏:GodevGodev

[官网地址:] https://kubevirt.io/user-guide/operations/installation/

Architecture

Architecture
Architecture

A simplified version

a simplified version
a simplified version

libvirt

环境检查

代码语言:javascript
复制
[root@k8s-master ~]#  virt-host-validate qemu
-bash: virt-host-validate: command not found
[root@k8s-master ~]#

安装virt-host-validate

代码语言:javascript
复制
yum -y install libvirt

环境检查

代码语言:javascript
复制
[root@k8s-master ~]# virt-host-validate qemu
  QEMU: Checking for hardware virtualization                                 : PASS
  QEMU: Checking if device /dev/kvm exists                                   : PASS
  QEMU: Checking if device /dev/kvm is accessible                            : PASS
  QEMU: Checking if device /dev/vhost-net exists                             : PASS
  QEMU: Checking if device /dev/net/tun exists                               : PASS
  QEMU: Checking for cgroup 'cpu' controller support                         : PASS
  QEMU: Checking for cgroup 'cpuacct' controller support                     : PASS
  QEMU: Checking for cgroup 'cpuset' controller support                      : PASS
  QEMU: Checking for cgroup 'memory' controller support                      : PASS
  QEMU: Checking for cgroup 'devices' controller support                     : PASS
  QEMU: Checking for cgroup 'blkio' controller support                       : PASS
  QEMU: Checking for device assignment IOMMU support                         : WARN (No ACPI DMAR table found, IOMMU either disabled in BIOS or not supported by this hardware platform)
  QEMU: Checking for secure guest support                                    : WARN (Unknown if this platform has Secure Guest support)
[root@k8s-master ~]#

部署KubeVirt

  1. 下载yaml文件,并新增useEmulation: true
  2. 部署yaml文件,并等待Running状态。

配置kubevirt-cr

useEmulation: true新增参数

代码语言:javascript
复制
[root@k8s-master ~]# cat kubevirt-cr.yaml
---
apiVersion: kubevirt.io/v1
kind: KubeVirt
metadata:
  name: kubevirt
  namespace: kubevirt
spec:
  certificateRotateStrategy: {}
  configuration:
    developerConfiguration:
      useEmulation: true
      featureGates: []
  customizeComponents: {}
  imagePullPolicy: IfNotPresent
  infra:
  workloadUpdateStrategy: {}
[root@k8s-master ~]#
​

部署KubeVirt

  1. export RELEASE=$(curl https://storage.googleapis.com/kubevirt-prow/release/kubevirt/kubevirt/stable.txt)
  2. kubectl apply -f kubevirt-operator.yaml
  3. kubectl apply -f kubevirt-cr.yaml
代码语言:javascript
复制
[root@k8s-master ~]# export RELEASE=$(curl https://storage.googleapis.com/kubevirt-prow/release/kubevirt/kubevirt/stable.txt)
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100     8  100     8    0     0     10      0 --:--:-- --:--:-- --:--:--    10
[root@k8s-master ~]# kubectl apply -f kubevirt-operator.yaml
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
[root@k8s-master ~]#
[root@k8s-master ~]# kubectl apply -f kubevirt-cr.yaml
kubevirt.kubevirt.io/kubevirt created
[root@k8s-master ~]# kubectl -n kubevirt wait kv kubevirt --for condition=Available
error: timed out waiting for the condition on kubevirts/kubevirt
[root@k8s-master ~]# kubectl edit -n kubevirt kubevirt kubevirt
error: kubevirts.kubevirt.io "kubevirt" could not be patched: Internal error occurred: failed calling webhook "kubevirt-update-validator.kubevirt.io": failed to call webhook: Post "https://kubevirt-operator-webhook.kubevirt.svc:443/kubevirt-validate-update?timeout=10s": dial tcp 10.106.166.169:443: i/o timeout
You can run `kubectl replace -f /tmp/kubectl-edit-3704516472.yaml` to try this update again.
[root@k8s-master ~]#

KubeVirt确认Running

代码语言:javascript
复制
[root@k8s-master ~]# kubectl get pods -n kubevirt -o wide
NAME                              READY   STATUS    RESTARTS   AGE     IP            NODE         NOMINATED NODE   READINESS GATES
virt-api-68d4b788f7-5zl86         1/1     Running   0          41s     10.244.1.19   k8s-node01   <none>           <none>
virt-api-68d4b788f7-cpngk         1/1     Running   0          41s     10.244.2.19   k8s-node02   <none>           <none>
virt-controller-887fd7878-6f9z9   1/1     Running   0          2m32s   10.244.2.16   k8s-node02   <none>           <none>
virt-controller-887fd7878-wfd5q   1/1     Running   0          2m58s   10.244.1.18   k8s-node01   <none>           <none>
virt-handler-6mghg                1/1     Running   0          3m14s   10.244.1.17   k8s-node01   <none>           <none>
virt-handler-8wv2b                1/1     Running   0          2m31s   10.244.2.17   k8s-node02   <none>           <none>
virt-operator-64675bb658-4vw8n    1/1     Running   0          41s     10.244.2.18   k8s-node02   <none>           <none>
virt-operator-64675bb658-zxvgf    1/1     Running   0          4m19s   10.244.1.16   k8s-node01   <none>           <none>
[root@k8s-master ~]# 

等待可用Available

代码语言:javascript
复制
[root@k8s-master ~]# kubectl -n kubevirt wait kv kubevirt --for condition=Available
kubevirt.kubevirt.io/kubevirt condition met
[root@k8s-master ~]#
[root@k8s-master ~]#

部署STS

代码语言:javascript
复制
apiVersion: v1
kind: Service
metadata:
  name: nginx
  labels:
    app: nginx
spec:
  ports:
  - port: 80
    name: web
  clusterIP: None
  selector:
    app: nginx
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: web
spec:
  selector:
    matchLabels:
      app: nginx # has to match .spec.template.metadata.labels
  serviceName: "nginx"
  replicas: 1 # by default is 1
  minReadySeconds: 10 # by default is 0
  template:
    metadata:
      labels:
        app: nginx # has to match .spec.selector.matchLabels
    spec:
      terminationGracePeriodSeconds: 10
      containers:
      - name: nginx
        image: registry.k8s.io/nginx-slim:0.8
        ports:
        - containerPort: 80
          name: web
        volumeMounts:
        - name: www
          mountPath: /usr/share/nginx/html
  volumeClaimTemplates:
  - metadata:
      name: www
    spec:
      accessModes: [ "ReadWriteOnce" ]
      storageClassName: "my-storage-class"
      resources:
        requests:
          storage: 1Gi
代码语言:javascript
复制
[root@k8s-master ~]# kubectl apply -f vm.yaml 
Error from server (InternalError): error when creating "vm.yaml": Internal error occurred: failed calling webhook "virtualmachines-mutator.kubevirt.io": failed to call webhook: Post "https://virt-api.kubevirt.svc:443/virtualmachines-mutate?timeout=10s": context deadline exceeded
[root@k8s-master ~]# 
代码语言:javascript
复制
apiVersion: kubevirt.io/v1alpha3
kind: VirtualMachine
metadata:
  labels:
    kubevirt.io/vm: vm-cirros
  name: vm-cirros
spec:
  runStrategy: Always
  template:
    metadata:
      labels:
        kubevirt.io/vm: vm-cirros
    spec:
      domain:
        devices:
          disks:
          - disk:
              bus: virtio
            name: containerdisk
      terminationGracePeriodSeconds: 0
      volumes:
      - containerDisk:
          image: kubevirt/cirros-container-disk-demo:latest
        name: containerdisk

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Architecture
  • A simplified version
  • 环境检查
    • 安装virt-host-validate
    • 部署KubeVirt
      • 配置kubevirt-cr
        • 部署KubeVirt
          • KubeVirt确认Running
            • 等待可用Available
              • 部署STS
              相关产品与服务
              容器服务
              腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档