Follow official website
ovn-org/ovn-kubernetes: Kubernetes integration for OVN (github.com)
Make sure kubernetes has installed before deploy ovn-kubernetes
Even_Linux ➜ images git:(master) ✗ kc get pods -A
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system coredns-565d847f94-2mbd4 0/1 ContainerCreating 0 100m
kube-system coredns-565d847f94-mhk7q 0/1 ContainerCreating 0 100m
kube-system etcd-linux 1/1 Running 25 (10m ago) 100m
kube-system kube-apiserver-linux 1/1 Running 2186 (11m ago) 103m
kube-system kube-controller-manager-linux 1/1 Running 85 (2m18s ago) 103m
kube-system kube-scheduler-linux 1/1 Running 78 (11m ago) 103m
Run DaemonSet and Deployment
# Clone ovn-kubernetes repo
mkdir -p $HOME/work/src/github.com/ovn-org
cd $HOME/work/src/github.com/ovn-org
git clone https://github.com/ovn-org/ovn-kubernetes
cd $HOME/work/src/github.com/ovn-org/ovn-kubernetes/dist/images
./daemonset.sh --image=docker.io/ovnkube/ovn-daemonset-u:latest \
--net-cidr=192.168.0.0/16/24 --svc-cidr=172.16.1.0/24 \
--gateway-mode="local" \
--k8s-apiserver=https://$MASTER_IP:6443
Apply OVN DaemonSet and Deployment yamls.
#Create OVS node
kubectl create -f $HOME/work/src/github.com/ovn-org/ovn-kubernetes/dist/yaml/ovs-node.yaml# Create OVN namespace, service accounts, ovnkube-db headless service, configmap, and policies
kubectl create -f $HOME/work/src/github.com/ovn-org/ovn-kubernetes/dist/yaml/ovn-setup.yaml
# create egressips.k8s.ovn.org CRD
kubectl create -f $HOME/work/src/github.com/ovn-org/ovn-kubernetes/dist/yaml/k8s.ovn.org_egressips.yaml
# create egressfirewalls.k8s.ovn.org CRD
kubectl create -f $HOME/work/src/github.com/ovn-org/ovn-kubernetes/dist/yaml/k8s.ovn.org_egressfirewalls.yaml
# Run ovnkube-db deployment.
kubectl create -f $HOME/work/src/github.com/ovn-org/ovn-kubernetes/dist/yaml/ovnkube-db.yaml
# Run ovnkube-master deployment.
kubectl create -f $HOME/work/src/github.com/ovn-org/ovn-kubernetes/dist/yaml/ovnkube-master.yaml
# Run ovnkube daemonset for nodes
kubectl create -f $HOME/work/src/github.com/ovn-org/ovn-kubernetes/dist/yaml/ovnkube-node.yaml
I encounter a problem that ovn-master cannot bring up.
ovnkube-master cannot running issue. · Issue #3239 · ovn-org/ovn-kubernetes (github.com)
This error message means OVN db schema is not correct. Obviously should be OVN DB version problem.
Message: o:133] error when trying to initialize libovsdb NB client: failed to connect to tcp:192.168.2.5:6641: database OVN_Northbound validation error (14): Mapper Error. Object type nbdb.ACL contains field Label (int) ovs tag label: Column does not exist in schema. Mapper Error. Object type nbdb.LoadBalancer contains field Options (map[string]string) ovs tag options: Column does not exist in schema. database model contains a model for table Copp that does not exist in schema. database model contains a model for table Load_Balancer_Group that does not exist in schema. database model contains a model for table BFD that does not exist in schema. Mapper Error. Object type nbdb.Meter contains field Fair (*bool) ovs tag fair: Column does not exist in schema. Mapper Error. Object type nbdb.LogicalSwitch contains field Copp (*string) ovs tag copp: Column does not exist in schema. Mapper Error. Object type nbdb.LogicalRouterStaticRoute contains field BFD (*string) ovs tag bfd: Column does not exist in schema. Mapper Error. Object type nbdb.LogicalRouterPort contains field Ipv6Prefix ([]string) ovs tag ipv6_prefix: Column does not exist in schema. Mapper Error. Object type nbdb.NAT contains field AllowedExtIPs (*string) ovs tag allowed_ext_ips: Column does not exist in schema. Mapper Error. Object type nbdb.NBGlobal contains field HvCfgTimestamp (int) ovs tag hv_cfg_timestamp: Column does not exist in schema. Mapper Error. Object type nbdb.LogicalRouter contains field Copp (*string) ovs tag copp: Column does not exist in schema. Mapper Error. Object type nbdb.ForwardingGroup contains field ExternalIDs (map[string]string) ovs tag external_ids: Column does not exist in schema. Mapper Error. Object type nbdb.LogicalRouterPolicy contains field ExternalIDs (map[string]string) ovs tag external_ids: Column does not exist in schema
So, we need to build correct version of image.
Let’s dig into Dockerfile.ubuntu file for building docker image.($HOME/ovn-kubernetes/dist/images)
We found ovn-central ovn-common ovn-host install version was 20.03, it’s out of date If we compare with go-controller Makefile version. Makefile OVN version is 22.03.
ovn-kubernetes/Makefile at master · ovn-org/ovn-kubernetes (github.com)
Therefore, that’s modify Dockerfile.ubuntu file to correct ovn version.
I found this website has ovn 22.03 version library, then download it and install by dpkg -i in Dockerfile.ubuntu.
Index of /mirror/pool/main/o/ovn (cure.edu.uy)
Install ovn 22.03 deb instead of using apt-get to install it.
# Install OVS and OVN packages.
-RUN apt-get update && apt-get install -y openvswitch-switch openvswitch-common ovn-central ovn-common ovn-host kubectl
+RUN apt-get update && apt-get install -y openvswitch-switch openvswitch-common kubectl
+
+COPY ./ovn-lib /root/
+RUN dpkg -i /root/ovn-common_22.03.0-0ubuntu1_amd64.deb &&\
+ dpkg -i /root/ovn-central_22.03.0-0ubuntu1_amd64.deb &&\
+ dpkg -i /root/ovn-host_22.03.0-0ubuntu1_amd64.deb
re-Apply OVN DaemonSet and Deployment yamls.
kubectl create -f $HOME/work/src/github.com/ovn-org/ovn-kubernetes/dist/yaml/ovnkube-db.yaml
kubectl create -f $HOME/work/src/github.com/ovn-org/ovn-kubernetes/dist/yaml/ovnkube-master.yaml
kubectl create -f $HOME/work/src/github.com/ovn-org/ovn-kubernetes/dist/yaml/ovnkube-node.yaml
all pods should be running normally.