On 06/07/2020 21:10, aginwala wrote:


On Mon, Jul 6, 2020 at 4:33 AM Brendan Doyle <[email protected] <mailto:[email protected]>> wrote:

    Hi,

    So I'm really confused by what you have pointed me to here. As
    stated I do NOT
    want to use OVN as a CNI. I have a k8s cluster that use flannel as
    the CNI. I simply
    want to create an OVN "central" cluster as a Stateful set in my
    *existing* K8
    config.

    This repo:
    
https://github.com/ovn-org/ovn-kubernetes/commit/a07b1a01af7e37b15c2e5f179ffad2b9f25a083d

    Seems to be for setting up a K8s cluster to use OVN as the CNI??


Still wondering about this? the above repo seems to be for creating an OVN CNI for kubernetes
Is this correct ???

But it also seems to include yamls for creating an OVN cluster as a k8s service via a StatefulSet

Is it necessary to create the OVN CNI in order to use ovnkube-db-raft.yam ???

As I have said I have an existing k8s cluster using a flannel CNI, I just want to deploy an OVN
central as a StatefulSet to that.

    Have you tried this?
    What IP do the ovn-controllers use to reach the OVN "central cluster?
    It seems to use an OVN docker image from docker.io
    <http://docker.io>, I want to use my own OVN src
    Do I use/modify the dist/images/Dockerfile in this repo? that has
    loads of references to CNI
    like I said I don't want to use OVN as the CNI??

A pre-req for running ovn central as a k8s app is containerize ovn central components. Hence, you need to start your own containers using docker. Either you follow the approach from ovn-k8s repo as to how to build ovn images or refer to the docker instructions in ovn repo. Since this app (ovn central) will run behind a k8s service, ovn-controller should point to the service ip of ovn central k8s app. k8s folks can comment on how to build image that is in k8s pod specs e.g http://docker.io/ovnkube/ovn-daemonset:latest

Yes the Docker image claims to be built using dist/images/Dockerfile, which installs more than just the OVN ovn central components


    The instructions here
    
https://github.com/ovn-org/ovn/blob/d6b56b1629d5984ef91864510f918e232efb89de/Documentation/intro/install/general.rst
    seem more promising, if not a little confusing:


    1)

    Start OVN containers using below command:

    $ docker run -itd --net=host --name=ovn-nb \
       <docker_repo>:<tag> ovn-nb-tcp

    $ docker run -itd --net=host --name=ovn-sb \
       <docker_repo>:<tag> ovn-sb-tcp

    $ docker run -itd --net=host --name=ovn-northd \
       <docker_repo>:<tag> ovn-northd-tcp
    followed by

    2)
    $ docker run -e "host_ip=<host_ip>" -e "nb_db_port=<port>" -itd \
       --name=ovn-nb-raft --net=host --privileged <docker_repo>:<tag> \
       ovn-nb-cluster-create

    $ docker run -e "host_ip=<host_ip>" -e "sb_db_port=<port>" -itd \
       --name=ovn-sb-raft --net=host --privileged <docker_repo>:<tag> \
       ovn-sb-cluster-create

    $ docker run -e "OVN_NB_DB=tcp:<node1>:6641,tcp:<node2>:6641,\
       tcp:<node3>:6641" -e "OVN_SB_DB=tcp:<node1>:6642,tcp:<node2>:6642,\
       tcp:<node3>:6642" -itd --name=ovn-northd-raft <docker_repo>:<tag> \
       ovn-northd-cluster
    Does it mean do 1), then 2) or does it mean do 1) for non HA OVN
    central *OR* 2)
    for HA/clustered OVN Central?

Doc says Start OVN containers in cluster mode using below command on node2 and node3 to make them join the peer using below command:. Hence, you can even play with just docker on 3 nodes where you run step1 on node1 that creates cluster
Ok, is that the 1) above, surely 2) above creates the cluster "ovn-nb-cluster-create" ???

and do the join-cluster on rest two nodes to give you a clear idea before moving to pod in k8s. Not sure if you need more details to update doc. We can always improvise. Upstream ovn-k8s does the same for pods where e.g. ovn-kube0 pod creates a cluster and rest two pods joins

    It's not clear

The docs are not clear, it seems to me the docs intend to say..

"
OVN containers can then be started either as a Stand Alone Database or as a
Clustered Database.


To start OVN containers as a Stand Alone Database use the commands below

$ docker run -itd --net=host --name=ovn-nb \ <docker_repo>:<tag> ovn-nb-tcp

etc..

To start OVN containers in cluster mode for a 3 node cluster using below command on node1: $ docker run -e "host_ip=<host_ip>" -e "nb_db_port=<port>" -itd \ --name=ovn-nb-raft --net=host --privileged <docker_repo>:<tag> \ ovn-nb-cluster-create Then Start OVN containers in cluster mode using below command on node2 and node3 to make them join the peer using below command:

$ docker run -e "host_ip=<host_ip>" -e "remote_host=<remote_host_ip>" \ -e "nb_db_port=<port>" -itd --name=ovn-nb-raft --net=host \ --privileged <docker_repo>:<tag> ovn-nb-cluster-join etc..


Brendan.

    Thanks






    On 25/06/2020 17:36, aginwala wrote:
    Hi:

    There are a couple of options as I have been exploring this too:

    1. Upstream ovn-k8s patches
    
(https://github.com/ovn-org/ovn-kubernetes/commit/a07b1a01af7e37b15c2e5f179ffad2b9f25a083d)
    uses statefulset and headless service for starting ovn central
    raft cluster with 3 replicas. Cluster startup code and pod specs
    are pretty neat that addresses most of the doubts.

    OVN components have been containerized too to start them in pods.
    You can also refer to
    
https://github.com/ovn-org/ovn/blob/d6b56b1629d5984ef91864510f918e232efb89de/Documentation/intro/install/general.rst
     for the same and use them to make it work in pod specs too.


    2. Write a new ovn operator similar to etcd operator
    https://github.com/coreos/etcd-operator which just takes the
    count of raft replicas and does the job in the background.

    I also added ovn-k8s group so they can comment on any other ideas
    too. Hope it helps.



    On Thu, Jun 25, 2020 at 7:15 AM Brendan Doyle
    <[email protected] <mailto:[email protected]>> wrote:

        Hi,

        So I'm trying to find information on setting up an OVN
        "Central/Master"
        high availability (HA)
        Not as Active-Backup with Pacemaker, but as a cluster. But I
        want to
        deploy and manage that
        cluster as a Kubernetes service .

        I can find lots of stuff on "ovn-kube" but this seems to be
        using OVN as
        a  kubernetes CNI instead of
        Flannel etc.  But this is not what I want to do, I have a
        kubernetes
        cluster using Flannel as the CNI,
        now  I want to deploy a HA OVN "Central" as a kubernetes
        service. Kind
        of like how you can deploy
        a MySQL cluster in kubernetes using a SatefulSet deployment.

        I have found this:
        https://github.com/ovn-org/ovn-kubernetes#readme

        But it is not clear to me if this is how to setup OVN as a
        kubernetes
        CNI or it's how to setup a HA
        OVN central as kubernetes service.

        Can anybody comment, has anyone done this?


        I guess I could run an OVN central as standalone and use a
        kubernetes
        deployment with 3
          replica sets and "export" as a NodePort service. And have a
        floating/VIP on my kubernetes
        nodes. And direct ovn-controllers to the VIP. So only the pod
        that holds
        the VIP would service
        requests. This would work and give HA, but you don't get the
        performance
        of an OVN
        clustered Database Model, where each OVN central could
        service requests.




        Thanks


        Rdgs
        Brendan

        _______________________________________________
        discuss mailing list
        [email protected] <mailto:[email protected]>
        https://mail.openvswitch.org/mailman/listinfo/ovs-discuss



_______________________________________________
discuss mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-discuss

Reply via email to