Improve Pod launch time

Registered by Alexey Perevalov on 2019-07-18

I would like to extend the topic of
https://blueprints.launchpad.net/kuryr-kubernetes/+spec/port-creation-control-plane-perf.
Also it related to
https://blueprints.launchpad.net/kuryr-kubernetes/+spec/neutron-push-notifications

Since pod launch is a complex process it consists of many stages when many components are involved.

There are could be following direction in pod launch time optimization:
1. rework kuryr/k8s interconnection and extend it by direct RPC (kuryr-daemon <-> kuryr-controller),
 also keep k8s api to store state in it.
2. rework kuryr/neutron interconnection.
   We already tried to receive neutron port status immediately
(https://review.opendev.org/#/c/669642/). But it's not enough, because neutron-openvswitch agent
is doing a lot of jobs to give port an active status.
  a. Skip that time, just return cni output as soon as binding process was Succeed. But, probably, it requires
special tweakable mode, because some of users expect connectivity inside container as soos as it launches.
              Cons:
                 - Neutron-openvswitch can fail to configure ovs port, in this case we'll get
inconsistent pod (with broken connectivity)
                 - Port could have SG (in case of openvswitch agent), but if pod will be launched before SG applied for additional VIF,
it could be a security breach, because for a while pod will be not ander security rules.
        b. Do not wait for all VIFs in pod, just wait for the main VIF.
              Cons:
                 - disadvantages here is the same as above, but is additional VIF is SR-IOV
security groups doesn't make sense now, due to SR-IOV NIC agent still doesn't support non noop firewall driver (Stein release).
        c. Profile and improve neutron-openvswitch, reduce neutron-openvswitch - neutron-server interconnection.

Blueprint information

Status:
Not started
Approver:
None
Priority:
Undefined
Drafter:
Alexey Perevalov
Direction:
Needs approval
Assignee:
Alexey Perevalov
Definition:
New
Series goal:
None
Implementation:
Unknown
Milestone target:
None

Related branches

Sprints

Whiteboard

(?)

Work Items

This blueprint contains Public information 
Everyone can see this information.