### Download Installation Script Source: https://github.com/kubeovn/docs/blob/master/docs/reference/document-convention.en.md Use this command to download the installation script. Ensure the environment configuration is correct before installation. ```bash wget 127.0.0.1 ``` -------------------------------- ### Start qperf Server and Client Source: https://github.com/kubeovn/docs/blob/master/docs/advance/accelerate-intra-node-tcp-with-ebpf.en.md Enter one Pod to start the qperf server and another to start the qperf client for initial performance testing. ```bash # kubectl exec -it perf-7697bc6ddf-b2cpv sh / # qperf # kubectl exec -it perf-7697bc6ddf-p2xpt sh / # qperf -t 60 100.64.0.3 -ub -oo msg_size:1:16K:*4 -vu tcp_lat tcp_bw ``` -------------------------------- ### Initialize KIND Cluster and Install for Underlay E2E Source: https://github.com/kubeovn/docs/blob/master/docs/reference/dev-env.md Initialize a KIND cluster and install Kube-OVN with configurations specific to Underlay E2E testing. This setup is for testing underlay network scenarios. ```bash make kind-init make kind-install-underlay make e2e-underlay-single-nic ``` -------------------------------- ### Build Documentation Locally Source: https://github.com/kubeovn/docs/blob/master/README.md Install dependencies and serve the documentation site locally. Ensure you have Python and pip installed. ```bash pip install -r docs/requirements.txt ``` ```bash mkdocs serve ``` -------------------------------- ### Install Kube-OVN with DPDK Support Source: https://github.com/kubeovn/docs/blob/master/docs/advance/dpdk.md Install Kube-OVN using the downloaded script, enabling the hybrid DPDK installation option. ```bash bash install.sh --with-hybrid-dpdk ``` -------------------------------- ### Start OVN-IC DB Leader (Docker) Source: https://github.com/kubeovn/docs/blob/master/docs/advance/with-ovn-ic.md Use this command to start the OVN-IC database leader in a Docker environment. Ensure `ENABLE_OVN_LEADER_CHECK` is set to `false` for initial setup. ```bash docker run --name=ovn-ic-db -d --env "ENABLE_OVN_LEADER_CHECK="false"" --network=host --privileged -v /etc/ovn/:/etc/ovn -v /var/run/ovn:/var/run/ovn -v /var/log/ovn:/var/log/ovn -e LOCAL_IP="192.168.65.3" -e NODE_IPS="192.168.65.3,192.168.65.2,192.168.65.1" kubeovn/kube-ovn:{{ variables.version }} bash start-ic-db.sh ``` -------------------------------- ### Install Kube-OVN Source: https://github.com/kubeovn/docs/blob/master/docs/advance/offload-yusur.en.md Execute the install.sh script to install Kube-OVN with the configured options, including hardware offload. ```bash bash install.sh ``` -------------------------------- ### Start qperf Server in a Pod Source: https://github.com/kubeovn/docs/blob/master/docs/advance/accelerate-intra-node-tcp-with-ebpf.md Enter one of the performance test Pods and start the qperf server to listen for connections. ```bash # kubectl exec -it perf-7697bc6ddf-b2cpv sh / # qperf ``` -------------------------------- ### Install Dependencies Source: https://github.com/kubeovn/docs/blob/master/CLAUDE.md Installs the necessary Python packages for local development and building the documentation. ```bash pip install -r docs/requirements.txt ``` -------------------------------- ### Initialize KIND Cluster and Install Kube-OVN Source: https://github.com/kubeovn/docs/blob/master/docs/reference/dev-env.md Initialize a local Kubernetes cluster using KIND and install Kube-OVN. This is a prerequisite for running E2E tests. ```bash make kind-init make kind-install make e2e ``` -------------------------------- ### Initialize KIND Cluster and Install Kube-OVN Source: https://github.com/kubeovn/docs/blob/master/docs/reference/dev-env.en.md Initializes a local Kubernetes cluster using KIND and installs Kube-OVN. This is a prerequisite for running local end-to-end tests. ```bash make kind-init make kind-install ``` -------------------------------- ### Download Kube-OVN Install Script Source: https://github.com/kubeovn/docs/blob/master/docs/advance/dpdk.md Download the installation script for Kube-OVN. The branch can be specified using a variable. ```bash wget https://raw.githubusercontent.com/kube-ovn/kube-ovn/{{ variables.branch }}/dist/images/install.sh ``` -------------------------------- ### Start iperf3 Server in a Pod Source: https://github.com/kubeovn/docs/blob/master/docs/guide/qos.en.md Exec into a Pod and start an iperf3 server to listen for incoming connections. This is a prerequisite for running iperf3 client tests. ```bash # kubectl exec -it perf-4n4gt -n ls1 sh # iperf3 -s ``` -------------------------------- ### Download Kube-OVN Installation Script Source: https://github.com/kubeovn/docs/blob/master/docs/advance/offload-corigine.en.md Download the necessary installation script for Kube-OVN. Ensure you use the correct branch variable. ```bash wget https://raw.githubusercontent.com/kubeovn/kube-ovn/{{ variables.branch }}/dist/images/install.sh ``` -------------------------------- ### Install Kube-OVN with Helm Source: https://github.com/kubeovn/docs/blob/master/docs/start/talos-install.en.md Basic Helm installation command for Kube-OVN on Talos Linux. Ensure the version is correctly specified. ```shell helm install kube-ovn kubeovn/kube-ovn --wait \ -n kube-system \ --version {{ variables.version }} \ --set OVN_DIR=/var/lib/ovn \ --set OPENVSWITCH_DIR=/var/lib/openvswitch \ --set DISABLE_MODULES_MANAGEMENT=true \ --set cni_conf.MOUNT_LOCAL_BIN_DIR=false ``` -------------------------------- ### Configure Kube-OVN Installation Options Source: https://github.com/kubeovn/docs/blob/master/docs/advance/offload-corigine.en.md Set environment variables to configure Kube-OVN installation. `IFACE` must be a physical NIC with an IP address. ```bash ENABLE_MIRROR=${ENABLE_MIRROR:-false} HW_OFFLOAD=${HW_OFFLOAD:-true} ENABLE_LB=${ENABLE_LB:-false} IFACE="ensp01" ``` -------------------------------- ### Compile and Install OVS Kernel Module on Ubuntu Source: https://github.com/kubeovn/docs/blob/master/docs/advance/performance-tuning.md Install build dependencies and kernel headers on Ubuntu, then compile and install the OVS kernel module. This process includes applying a patch, configuring with specific flags, and setting up module dependencies. ```bash apt install -y autoconf automake libtool gcc build-essential libssl-dev ``` ```bash apt install -y autoconf automake libtool gcc build-essential libssl-dev git clone -b branch-3.5 --depth=1 https://github.com/openvswitch/ovs.git cd ovs curl -s https://github.com/kubeovn/ovs/commit/2d2c83c26d4217446918f39d5cd5838e9ac27b32.patch | git apply ./boot.sh ./configure --prefix=/usr/ --localstatedir=/var --enable-ssl --with-linux=/lib/modules/$(uname -r)/build make -j `nproc` make install make modules_install cat > /etc/depmod.d/openvswitch.conf << EOF override openvswitch * extra override vport-* * extra EOF depmod -a cp debian/openvswitch-switch.init /etc/init.d/openvswitch-switch /etc/init.d/openvswitch-switch force-reload-kmod ``` -------------------------------- ### Configure Kube-OVN Installation Options Source: https://github.com/kubeovn/docs/blob/master/docs/advance/offload-mellanox.en.md Set environment variables to configure Kube-OVN installation. `HW_OFFLOAD` should be set to `true` for underlay offload. `IFACE` should be set to the physical NIC interface name. ```bash ENABLE_MIRROR=${ENABLE_MIRROR:-false} HW_OFFLOAD=${HW_OFFLOAD:-true} ENABLE_LB=${ENABLE_LB:-false} IFACE="" # If Underlay uninstallation is required, IFACE needs to be set to other non-PF network cards. (When IFACE is empty, the K8s cluster communication network card will be used by default. Note that this network card cannot be a PF network card) ``` -------------------------------- ### View Allowed Traffic Log Example Source: https://github.com/kubeovn/docs/blob/master/docs/guide/networkpolicy.md This example shows the format of a log entry for allowed traffic, including details like protocol, source/destination IPs, and ICMP type/code. ```bash # tail -f /var/log/ovn/ovn-controller.log 2024-08-14T09:27:49.590Z|00004|acl_log(ovn_pinctrl0)|INFO|name="np/allow-from-client.default/ingress/IPv4/0", verdict=allow, severity=info, direction=to-lport: icmp,vlan_tci=0x0000,dl_src=96:7b:b0:2f:a0:1a,dl_dst=a6:e5:1b:c2:1b:f8,nw_src=10.16.0.7,nw_dst=10.16.0.12,nw_tos=0,nw_ecn=0,nw_ttl=64,nw_frag=no,icmp_type=8,icmp_code=0 ``` -------------------------------- ### Install Multus Dynamic Networks Controller Source: https://github.com/kubeovn/docs/blob/master/docs/kubevirt/hotplug.en.md Installs the Multus Dynamic Networks Controller, which works with Kube-OVN for hotplug functionality. ```bash kubectl apply -f https://raw.githubusercontent.com/k8snetworkplumbingwg/multus-dynamic-networks-controller/refs/heads/main/manifests/dynamic-networks-controller.yaml ``` -------------------------------- ### Install Kube-OVN Webhook Source: https://github.com/kubeovn/docs/blob/master/docs/guide/webhook.en.md Apply the Webhook deployment YAML. This command installs the Webhook service, its validating webhook configuration, and associated certificates. ```bash # kubectl apply -f https://raw.githubusercontent.com/kubeovn/kube-ovn/{{ variables.branch }}/yamls/webhook.yaml deployment.apps/kube-ovn-webhook created service/kube-ovn-webhook created validatingwebhookconfiguration.admissionregistration.k8s.io/kube-ovn-webhook created certificate.cert-manager.io/kube-ovn-webhook-serving-cert created issuer.cert-manager.io/kube-ovn-webhook-selfsigned-issuer created ``` -------------------------------- ### Install Kube-OVN using Helm Chart Source: https://github.com/kubeovn/docs/blob/master/docs/start/one-step-install.md Install Kube-OVN by deploying its Helm chart to the kube-system namespace. The --wait flag ensures the command waits for resources to be ready. ```bash # helm install kube-ovn kubeovn/kube-ovn --wait -n kube-system --version {{ variables.version }} NAME: kube-ovn LAST DEPLOYED: Thu Apr 24 08:30:13 2025 NAMESPACE: kube-system STATUS: deployed REVISION: 1 TEST SUITE: None ``` -------------------------------- ### Start Local Development Server Source: https://github.com/kubeovn/docs/blob/master/CLAUDE.md Launches a local web server to preview the documentation site at http://localhost:8000. ```bash mkdocs serve ``` -------------------------------- ### Download Kube-OVN Installation Script Source: https://github.com/kubeovn/docs/blob/master/docs/advance/offload-yunsilicon.md Download the installation script for Kube-OVN. This script is used to install Kube-OVN in hw-offload mode. ```bash wget https://raw.githubusercontent.com/yunsilicon/kube-ovn/release-1.11/dist/images/install.sh ``` -------------------------------- ### Download Kube-OVN Install Script Source: https://github.com/kubeovn/docs/blob/master/docs/advance/offload-yusur.en.md Download the Kube-OVN installation script. This script is used to install Kube-OVN with hardware offload enabled. ```bash wget https://raw.githubusercontent.com/kubeovn/kube-ovn/release-1.12/dist/images/install.sh ``` -------------------------------- ### Create VM ConfigMap Source: https://github.com/kubeovn/docs/blob/master/docs/advance/dpdk.md This ConfigMap contains the startup script and VM definition XML. The start.sh script configures libvirt for hugepages and starts the VM, while vm.xml defines the VM's hardware and network configuration. ```yaml apiVersion: v1 kind: ConfigMap metadata: name: vm-config data: start.sh: | chmod u+w /etc/libvirt/qemu.conf echo "hugetlbfs_mount = \"/dev/hugepages\"" >> /etc/libvirt/qemu.conf virtlogd & libvirtd & mkdir /var/lock sleep 5 virsh define /root/vm/vm.xml virsh start vm tail -f /dev/null vm.xml: | vm 4a9b3f53-fa2a-47f3-a757-dd87720d9d1d 2097152 2097152 2 4096 hvm restart /usr/libexec/qemu-kvm
``` -------------------------------- ### Configure CNI Installation Paths Source: https://github.com/kubeovn/docs/blob/master/docs/reference/setup-options.md Adjust the installation directories for CNI binaries and configuration files. This can be configured during installation via script parameters. ```bash CNI_CONF_DIR="/etc/cni/net.d" CNI_BIN_DIR="/opt/cni/bin" CNI_CONFIG_PRIORITY="01" ``` -------------------------------- ### Download Kube-OVN Install Script Source: https://github.com/kubeovn/docs/blob/master/docs/advance/offload-yusur.md Download the Kube-OVN installation script. This script will be used to install Kube-OVN with the necessary configurations for offload mode. ```bash wget https://raw.githubusercontent.com/kube-ovn/kube-ovn/release-1.12/dist/images/install.sh ``` -------------------------------- ### Install Hubble with Helm Source: https://github.com/kubeovn/docs/blob/master/docs/advance/cilium-hubble-observe.md Use Helm to install Hubble components, including relay and UI, into the kube-system namespace. Ensure the version matches your Cilium installation. ```bash helm upgrade cilium cilium/cilium --version 1.11.6 \ --namespace kube-system \ --reuse-values \ --set hubble.relay.enabled=true \ --set hubble.ui.enabled=true ``` -------------------------------- ### Display kubectl-ko Help Source: https://github.com/kubeovn/docs/blob/master/docs/ops/kubectl-ko.md Run `kubectl ko` to display all available subcommands and their usage descriptions. ```bash # kubectl ko kubectl ko {subcommand} [option...] Available Subcommands: [nb|sb] [status|kick|backup|dbstatus|restore] ovn-db operations show cluster status, kick stale server, backup database, get db consistency status or restore ovn nb db when met 'inconsistent data' error nbctl [ovn-nbctl options ...] invoke ovn-nbctl sbctl [ovn-sbctl options ...] invoke ovn-sbctl vsctl {nodeName} [ovs-vsctl options ...] invoke ovs-vsctl on the specified node ofctl {nodeName} [ovs-ofctl options ...] invoke ovs-ofctl on the specified node dpctl {nodeName} [ovs-dpctl options ...] invoke ovs-dpctl on the specified node appctl {nodeName} [ovs-appctl options ...] invoke ovs-appctl on the specified node tcpdump {namespace/podname} [tcpdump options ...] capture pod traffic {trace|ovn-trace} ... trace ovn microflow of specific packet {trace|ovn-trace} {namespace/podname} {target ip address} [target mac address] {icmp|tcp|udp} [target tcp/udp port] trace ICMP/TCP/UDP {trace|ovn-trace} {namespace/podname} {target ip address} [target mac address] arp {request|reply} trace ARP request/reply {trace|ovn-trace} {node//nodename} {target ip address} [target mac address] {icmp|tcp|udp} [target tcp/udp port] trace ICMP/TCP/UDP {trace|ovn-trace} {node//nodename} {target ip address} [target mac address] arp {request|reply} trace ARP request/reply diagnose {all|node|subnet|IPPorts} [nodename|subnetName|{proto1}-{IP1}-{Port1},{proto2}-{IP2}-{Port2}] diagnose connectivity of all nodes or a specific node or specify subnet's ds pod or IPPorts like 'tcp-172.18.0.2-53,udp-172.18.0.3-53' env-check check the environment configuration reload restart all kube-ovn components log {kube-ovn|ovn|ovs|linux|all} save log to ./kubectl-ko-log/ perf [image] performance test default image is docker.io/kubeovn/test:v1.13.0 icnbctl [ovn-nbctl options ...] invoke ovn-ic-nbctl icsbctl [ovn-sbctl options ...] invoke ovn-ic-sbctl ``` -------------------------------- ### Perform Live Migration Source: https://github.com/kubeovn/docs/blob/master/docs/kubevirt/live-migration.en.md Initiate the live migration of the virtual machine using `virtctl migrate`. Observe network connectivity during this process. ```bash virtctl migrate testvm ``` -------------------------------- ### Check Cilium Installation Status Source: https://github.com/kubeovn/docs/blob/master/docs/advance/with-cilium.md Verify that Cilium and its operator are running correctly after installation. ```bash # cilium status /¯¯\ /¯¯\__/¯¯\ Cilium: OK \__/¯¯\__/ Operator: OK /¯¯\__/¯¯\ Hubble: disabled \__/¯¯\__/ ClusterMesh: disabled \__/ DaemonSet cilium Desired: 2, Ready: 2/2, Available: 2/2 Deployment cilium-operator Desired: 2, Ready: 2/2, Available: 2/2 Containers: cilium Running: 2 cilium-operator Running: 2 Cluster Pods: 8/11 managed by Cilium Image versions cilium quay.io/cilium/cilium:v1.11.6: 2 cilium-operator quay.io/cilium/operator-generic:v1.11.6: 2 ``` -------------------------------- ### Example Architecture Directory Structure Source: https://github.com/kubeovn/docs/blob/master/CLAUDE.md Illustrates the directory structure of the Kube-OVN documentation project. ```text docs/ # All documentation content advance/ # Advanced features guide/ # User guide kubevirt/ # KubeVirt integration ops/ # Operations & maintenance reference/ # Technical reference start/ # Getting started vpc/ # VPC networking static/ # Images and assets overrides/ # MkDocs Material theme overrides (main.html, contact.md) scripts/ # CI scripts (Chinese punctuation checker) hack/ # Utility scripts (cherry-pick, gh-pages squash) mkdocs.yml # Main site configuration (nav, plugins, i18n, theme) ``` -------------------------------- ### Get VIP and DNAT Rule Status Source: https://github.com/kubeovn/docs/blob/master/docs/vpc/ovn-eip-fip-snat.en.md Verify VIP and DNAT configurations using `kubectl get vip` and `kubectl get odnat`. This confirms the VIP details, EIP status, and the successful binding of the DNAT rule to the VIP. ```bash # kubectl get vip test-dnat-vip NAME V4IP PV4IP MAC PMAC V6IP PV6IP SUBNET READY test-dnat-vip 192.168.0.4 00:00:00:D0:C0:B5 vpc1-subnet1 true # kubectl get oeip eip-dnat NAME V4IP V6IP MAC TYPE READY eip-dnat 10.5.49.4 00:00:00:4D:CE:49 dnat true # kubectl get odnat eip-dnat NAME EIP PROTOCOL V4EIP V4IP INTERNALPORT EXTERNALPORT IPNAME READY eip-dnat eip-dnat tcp 10.5.49.4 192.168.0.4 22 22 test-dnat-vip true ``` -------------------------------- ### SwitchLBRule Example with Selector Source: https://github.com/kubeovn/docs/blob/master/docs/vpc/vpc-internal-lb.en.md This example demonstrates how to create a SwitchLBRule to automatically generate load balancing rules targeting pods with the label 'app: nginx'. It configures a VIP, session affinity, and specifies the target port and protocol. ```yaml apiVersion: kubeovn.io/v1 kind: SwitchLBRule metadata: name: cjh-slr-nginx spec: vip: 1.1.1.1 sessionAffinity: ClientIP namespace: default selector: - app: nginx ports: - name: dns port: 8888 targetPort: 80 protocol: TCP ``` -------------------------------- ### Download Kube-OVN Install Script Source: https://github.com/kubeovn/docs/blob/master/docs/advance/dpdk.en.md Download the Kube-OVN installation script. The branch variable should be replaced with the desired version. ```bash wget https://raw.githubusercontent.com/kubeovn/kube-ovn/{{ variables.branch }}/dist/images/install.sh ``` -------------------------------- ### Internal Link Example Source: https://github.com/kubeovn/docs/blob/master/docs/reference/document-convention.en.md Example of an internal link within the documentation, using a relative markdown file path. ```markdown Please refer to [Preparation](./prepare.md) before installation. ``` -------------------------------- ### Start OVN-IC DB Leader (containerd) Source: https://github.com/kubeovn/docs/blob/master/docs/advance/with-ovn-ic.md Initiates the OVN-IC database leader using `ctr` for containerd environments. Mounts necessary volumes and sets environment variables for IP addresses. ```bash ctr -n k8s.io run -d --env "ENABLE_OVN_LEADER_CHECK="false"" --net-host --privileged --mount="type=bind,src=/etc/ovn/,dst=/etc/ovn,options=rbind:rw" --mount="type=bind,src=/var/run/ovn,dst=/var/run/ovn,options=rbind:rw" --mount="type=bind,src=/var/log/ovn,dst=/var/log/ovn,options=rbind:rw" --env="NODE_IPS="192.168.65.3,192.168.65.2,192.168.65.1"" --env="LOCAL_IP="192.168.65.3"" docker.io/kubeovn/kube-ovn:{{ variables.version }} ovn-ic-db bash start-ic-db.sh ``` -------------------------------- ### Create Namespace, VPC, Subnet, and Pod Source: https://github.com/kubeovn/docs/blob/master/docs/advance/with-openstack.en.md This YAML configuration demonstrates creating a new namespace, binding it to an existing VPC, defining a new subnet within that VPC, and deploying a Pod. Ensure the VPC name in the subnet spec matches an existing VPC. ```yaml apiVersion: v1 kind: Namespace metadata: name: net2 --- apiVersion: kubeovn.io/v1 kind: Vpc metadata: creationTimestamp: "2021-06-20T13:34:11Z" generation: 2 labels: ovn.kubernetes.io/vpc_external: "true" name: neutron-22040ed5-0598-4f77-bffd-e7fd4db47e93 resourceVersion: "583728" uid: 18d4c654-f511-4def-a3a0-a6434d237c1e spec: namespaces: - net2 --- kind: Subnet apiVersion: kubeovn.io/v1 metadata: name: net2 spec: vpc: neutron-22040ed5-0598-4f77-bffd-e7fd4db47e93 namespaces: - net2 cidrBlock: 12.0.1.0/24 natOutgoing: false --- apiVersion: v1 kind: Pod metadata: name: ubuntu namespace: net2 spec: containers: - image: docker.io/kubeovn/kube-ovn:v1.8.0 command: - "sleep" - "604800" imagePullPolicy: IfNotPresent name: ubuntu restartPolicy: Always ``` -------------------------------- ### Configure GREtap Interface for Mirroring Source: https://github.com/kubeovn/docs/blob/master/docs/advance/ovn-remote-port-mirroring.en.md Execute these commands within the pod to create and activate a GREtap interface for mirroring traffic. Ensure the local IP address and network device name are correct for your setup. ```bash ip link add mirror1 type gretap local 172.19.0.21 key 99 dev net1 ``` ```bash ip link set mirror1 up ``` -------------------------------- ### Install Multus CNI (Thick Mode) Source: https://github.com/kubeovn/docs/blob/master/docs/kubevirt/hotplug.en.md Installs Multus CNI in thick mode, a prerequisite for network interface hotplug. ```bash kubectl apply -f https://raw.githubusercontent.com/k8snetworkplumbingwg/multus-cni/refs/heads/master/deployments/multus-daemonset-thick.yml ``` -------------------------------- ### Create SR-IOV Virtual Functions Source: https://github.com/kubeovn/docs/blob/master/docs/advance/offload-yunsilicon.md Create a specified number of VFs for the network interface. This example creates 10 VFs. ```bash echo '10' > /sys/class/net/p3p1/device/sriov_numvfs ``` -------------------------------- ### Create Underlay Network Resources Source: https://github.com/kubeovn/docs/blob/master/docs/advance/ovn-remote-port-mirroring.en.md Sets up an underlay network with a default interface, a VLAN configuration, and a subnet. The subnet's `provider` must match the `provider` in the NetworkAttachmentDefinition. ```yaml apiVersion: kubeovn.io/v1 kind: ProviderNetwork metadata: name: net1 spec: defaultInterface: eth1 --- apiVersion: kubeovn.io/v1 kind: Vlan metadata: name: vlan1 spec: id: 0 provider: net1 --- apiVersion: kubeovn.io/v1 kind: Subnet metadata: name: subnet1 spec: protocol: IPv4 cidrBlock: 172.19.0.0/16 excludeIps: - 172.19.0.2..172.19.0.20 gateway: 172.19.0.1 vlan: vlan1 provider: attachnet.default.ovn ``` -------------------------------- ### Install Netem Modules on RHEL Source: https://github.com/kubeovn/docs/blob/master/docs/guide/qos.en.md Install necessary kernel modules for netem on RHEL-based systems. This is a prerequisite for using netem QoS. ```bash yum install -y kernel-modules-extra && modprobe sch_netem ``` -------------------------------- ### Disable Load Balancing (Installation) Source: https://github.com/kubeovn/docs/blob/master/docs/reference/setup-options.en.md Disable Kube-OVN's built-in L2 load balancing capability during installation by setting ENABLE_LB to false. ```bash ENABLE_LB=false ``` -------------------------------- ### Create Virtual Functions (VFs) Source: https://github.com/kubeovn/docs/blob/master/docs/advance/offload-mellanox.en.md Enable SR-IOV by creating a specified number of VFs on the network interface. Ensure not to exceed `sriov_totalvfs`. ```bash # echo '4' > /sys/class/net/enp132s0f0np0/device/sriov_numvfs # echo '4' > /sys/class/net/enp132s1f0np1/device/sriov_numvfs ``` -------------------------------- ### Enable Global Traffic Mirroring (Installation) Source: https://github.com/kubeovn/docs/blob/master/docs/reference/setup-options.en.md Enable global traffic mirroring during Kube-OVN installation by setting the ENABLE_MIRROR environment variable to true. ```bash ENABLE_MIRROR=true ``` -------------------------------- ### Create Virtual Machine with Default Network Source: https://github.com/kubeovn/docs/blob/master/docs/kubevirt/hotplug.en.md Example YAML for creating a KubeVirt VirtualMachine with a default network interface. ```yaml apiVersion: kubevirt.io/v1 kind: VirtualMachine metadata: name: vm-fedora spec: runStrategy: Always template: spec: domain: devices: disks: - disk: bus: virtio name: containerdisk interfaces: - masquerade: {} name: defaultnetwork rng: {} resources: requests: memory: 1024M networks: - name: defaultnetwork pod: {} terminationGracePeriodSeconds: 0 volumes: - containerDisk: image: quay.io/kubevirt/fedora-with-test-tooling-container-disk:devel name: containerdisk ``` -------------------------------- ### Set Service CIDR in Installation Script Source: https://github.com/kubeovn/docs/blob/master/docs/reference/setup-options.en.md Configure the service cluster IP range by modifying the SVC_CIDR variable in the Kube-OVN installation script. ```bash SVC_CIDR="10.96.0.0/12" ``` -------------------------------- ### Download Stable Kube-OVN Install Script Source: https://github.com/kubeovn/docs/blob/master/docs/start/one-step-install.md Use this command to download the stable release version of the Kube-OVN installation script for production environments. ```bash wget https://raw.githubusercontent.com/kubeovn/kube-ovn/refs/tags/{{ variables.version }}/dist/images/install.sh ``` -------------------------------- ### Configure Kube-OVN Install Script Source: https://github.com/kubeovn/docs/blob/master/docs/advance/offload-yusur.en.md Modify the install.sh script to enable hardware offload and specify the network interface. Set HW_OFFLOAD to true and IFACE to your physical NIC. ```bash ENABLE_MIRROR=${ENABLE_MIRROR:-false} HW_OFFLOAD=${HW_OFFLOAD:-true} ENABLE_LB=${ENABLE_LB:-false} IFACE="p0" ``` -------------------------------- ### Download Development Kube-OVN Install Script Source: https://github.com/kubeovn/docs/blob/master/docs/start/one-step-install.md Use this command to download the development version of the installation script, which includes the latest features from the master branch. ```bash wget https://raw.githubusercontent.com/kubeovn/kube-ovn/master/dist/images/install.sh ``` -------------------------------- ### Deploy OVN-IC DB Source: https://github.com/kubeovn/docs/blob/master/docs/advance/with-openstack.en.md Start the OVN-IC database using Docker. Ensure the version variable is correctly substituted. ```bash docker run --name=ovn-ic-db -d --network=host -v /etc/ovn/:/etc/ovn -v /var/run/ovn:/var/run/ovn -v /var/log/ovn:/var/log/ovn kubeovn/kube-ovn:{{ variables.version }} bash start-ic-db.sh ``` -------------------------------- ### Run qperf Client for Performance Test Source: https://github.com/kubeovn/docs/blob/master/docs/advance/accelerate-intra-node-tcp-with-ebpf.md In another Pod, start the qperf client to test TCP latency and bandwidth against the server's IP address. This test is performed before applying the eBPF bypass. ```bash # kubectl exec -it perf-7697bc6ddf-p2xpt sh / # qperf -t 60 100.64.0.3 -ub -oo msg_size:1:16K:*4 -vu tcp_lat tcp_bw ``` -------------------------------- ### Install Hubble CLI Source: https://github.com/kubeovn/docs/blob/master/docs/advance/cilium-hubble-observe.md Download and install the Hubble command-line interface for Linux AMD64 architecture. This tool is necessary for observing traffic information directly from the environment. ```bash curl -L --fail --remote-name-all https://github.com/cilium/hubble/releases/download/v0.10.0/hubble-linux-amd64.tar.gz sudo tar xzvfC hubble-linux-amd64.tar.gz /usr/local/bin ```