Openshift的網路之二:SDN master程式碼分析
阿新 • • 發佈:2019-01-31
一、前言
Openshift基於OVS SDN的CNI網路方案具有一個以etcd key-value store為中心master節點和若干worker節點,Openshift SDN master在etcd維護一個worker節點和SDN網路相關的資料庫。
master主要的責任如下:
- 當Openshift加入或者刪除一個worker節點,master會監聽到這個事件,為這個節點分配或者收回子網段,將子網資訊儲存到etcd該node對應的entry下面。
- 在ovs-multitenant模式下,master還會監聽project的建立和刪除事件,為project分配VxLAN VNID,並且儲存到etcd裡面。
載自https://blog.csdn.net/cloudvtech
二、程式碼分析(Openshift origin v1.5)
1. Openshift master啟動SDN master
- Start() @ origin/pkg/cmd/server/start/start_master.go
- startControllers() @ origin/pkg/cmd/server/start/start_master.go
- oc.RunSDNController() @ origin/pkg/cmd/server/start/start_master.go
- RunSDNController @ origin/pkg/cmd/server/origin/run_components.go
- 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 clusterNetworkcn, 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