KubeVirt使用Kube-OVN

一、kube-ovn安装

注意:
CentOS 7.5/7.6/7.7, 内核版本需要大于 3.10.0-898
Ubuntu 16.04,需要升级内核至 4.13 以上或者自行编译 ovs 2.12.0 内核模块
参考 https://www.bookstack.cn/read/Kube-OVN-1.2-zh/b2104afdf87eeb6e.md
方式1:脚本部署:

wget https://raw.githubusercontent.com/kubeovn/kube-ovn/release-1.10/dist/images/install.sh

查看POD Service cidr

kubectl cluster-info dump|grep -m 1 cluster-cidr
kubectl cluster-info dump|grep -m 1 service-cluster-ip-range  

修改配置参数

REGISTRY="kubeovn"                     # 镜像仓库地址
VERSION="v1.10.7"                      # 镜像版本/Tag
POD_CIDR="10.16.0.0/16"                # 默认子网 CIDR 不要和 SVC/NODE/JOIN CIDR 重叠
SVC_CIDR="10.96.0.0/12"                # 需要和 apiserver 的 service-cluster-ip-range 保持一致
JOIN_CIDR="100.64.0.0/16"              # Pod 和主机通信网络 CIDR,不要和 SVC/NODE/POD CIDR 重叠 
LABEL="node-role.kubernetes.io/master" # 部署 OVN DB 节点的标签
IFACE=""                               # 容器网络所使用的的宿主机网卡名,如果为空则使用 Kubernetes 中的 Node IP 所在网卡
TUNNEL_TYPE="geneve"                   # 隧道封装协议,可选 geneve, vxlan 或 stt,stt 需要单独编译 ovs 内核模块

chmod o+x install.sh
bash install.sh

方式2 yaml部署:
node 节点打标签

kubectl label no -lbeta.kubernetes.io/os=linux kubernetes.io/os=linux --overwrite
kubectl label node <Node on which to deploy OVN DB (部署节点IP)>  kube-ovn/role=master  --overwrite

安装 kube-ovn CRD,包括 ips subnet vlans provider-networks vpcs vpc-nat-gateways

kubectl apply -f https://raw.githubusercontent.com/alauda/kube-ovn/release-1.7/yamls/crd.yaml

下载 ovn.yaml 修改地址,包括组件 ovn-central ovs-ovn

curl -O https://raw.githubusercontent.com/alauda/kube-ovn/release-1.7/yamls/ovn.yaml

sed -i 's/\$addresses/<Node IP>/g' ovn.yml

kubectl apply -f ovn.yaml

安装 kube-ovn controller以及 cni 插件,包括组件 kube-ovn-controller kube-ovn-cni kube-ovn-pinger kube-ovn-monitor

kubectl apply -f https://raw.githubusercontent.com/alauda/kube-ovn/release-1.7/yamls/kube-ovn.yaml

查看部署状态

kubectl get pods -n kube-system | grep ovn

确定都runnin后开始下一阶段

二、KubeVirt虚拟机使用物理机网段

创建ProviderNetwork
指定物理服务器上访问物理网络的网卡

apiVersion: kubeovn.io/v1
kind: ProviderNetwork
metadata:
 name: office
spec:
 defaultInterface: eno1   # 这里填写物理机IP对应网卡

创建VLAN
建在指定服务网络上创建一个VLAN,这里VLAN ID为0表示不属于任何VLAN。

apiVersion: kubeovn.io/v1
kind: Vlan
metadata:
 name: defaultvlan  # vlan名称
spec:
 id: 0
 provider: office # 与上面的ProviderNetwork名称对应

创建子网
在defaultvlan上,创建一个子网,这个子网作用的namespace为mail263,指定子网分配的物理网络地址段,物理网络网关地址。

apiVersion: kubeovn.io/v1
kind: Subnet
metadata:
 name: mail263
spec:
 protocol: IPv4
 cidrBlock: 172.16.3.0/24  # cidrBlock: 子网 CIDR 范围,这里填写物理机网段的CIDR即可 
 gateway: 172.16.3.2  # 底层物理网关地址
 excludeIps:   # 分配的IP不包含的IP地址
 - 172.16.3.1..172.16.3.200
 vlan: defaultvlan
 #  natOutgoing: false
 #private: false
 namespaces:   # 绑定该子网的 Namespace 列表,绑定后 Namespace 下的 Pod 将会从当前子网分配地址。
 - mail263

查看kube-ovn信息

kubectl get vlan -o wide
kubectl get subnet
kubectl ko nbctl show
ifconfig   #路由的网卡从eth0变成的br-office

创建虚拟机

apiVersion: kubevirt.io/v1
kind: VirtualMachineInstance
metadata:
  name: myvmi
spec:
  domain:
    cpu:
      cores: 2  
    resources:
      requests:
        memory: 2G
    devices:
      disks:
      - name: containerdisk
        disk:
          bus: virtio
      - name: cloudinitdisk
        disk:
          bus: virtio
  volumes:
    - name: containerdisk
      containerDisk:
        image: centos:1805
    - name: cloudinitdisk
      cloudInitNoCloud:
        networkData: |
          network:
            version: 1
            config:
            - type: physical
            name: eth0
            subnets:
              - type: dhcp
kubectl apply -f vm.yaml
kubectl get po -n vlan -o wide   #POD的IP与物理机IP处于同一网段
  • 9
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值