1. 程式人生 > >Openshift的網路之二:SDN master程式碼分析

Openshift的網路之二:SDN master程式碼分析

一、前言

Openshift基於OVS SDN的CNI網路方案具有一個以etcd key-value store為中心master節點和若干worker節點,Openshift SDN master在etcd維護一個worker節點和SDN網路相關的資料庫。

master主要的責任如下:

  1. 當Openshift加入或者刪除一個worker節點,master會監聽到這個事件,為這個節點分配或者收回子網段,將子網資訊儲存到etcd該node對應的entry下面。
  2. ovs-multitenant模式下,master還會監聽project的建立和刪除事件,為project分配VxLAN VNID,並且儲存到etcd裡面。

載自https://blog.csdn.net/cloudvtech

二、程式碼分析(Openshift origin v1.5)

1. Openshift master啟動SDN master

  1. Start() @ origin/pkg/cmd/server/start/start_master.go
  2. startControllers() @ origin/pkg/cmd/server/start/start_master.go
  3. oc.RunSDNController() @ origin/pkg/cmd/server/start/start_master.go
  4. RunSDNController @ origin/pkg/cmd/server/origin/run_components.go
  5. StartMaster @ /Users/hairchen/Desktop/origin/pkg/sdn/plugin/master.go 

2.SDN master啟動流程

2.1 parse network info to get clusterNetwork and serviceNetwork2.2 create clusterNetwork

cn, err := master.osClient.ClusterNetwork().Create(cn)

2.3 start subnet manager    2.3.1 get host subnet from Openshift    2.3.2 initialize a SubnetAllocator    2.3.3 start node change handling loop         2.3.3.1         2.3.3.2 handling node add event from K8S            2.3.3.2.1 Validate node IP before proceeding            2.3.3.2.2 Check if subnet needs to be created or updated            2.3.3.2.3 Create new subnet in K8S
        2.3.3.3 handling node delete event from K8S    2.3.4 start subnet change handling loop

        2.3.4.1         2.3.4.2 handling host subnet add event from K8S            2.3.4.2.1 delete old subnet first            2.3.4.2.2 go through add node action as (3.3.2.1~3.3.2.3)        2.3.4.2 handling host subnet delete event from K8S 載自https://blog.csdn.net/cloudvtech