@@ -45,9 +45,9 @@ type NetworkPolicyManager struct {
4545 nsInformer coreinformers.NamespaceInformer
4646 npInformer networkinginformers.NetworkPolicyInformer
4747
48- nodeName string
49- nsMap map [string ]* namespace
50- isAzureNpmChainCreated bool
48+ nodeName string
49+ nsMap map [string ]* namespace
50+ isAzureNpmChainCreated bool
5151 isSafeToCleanUpAzureNpmChain bool
5252
5353 clusterState telemetry.ClusterState
@@ -169,11 +169,6 @@ func (npMgr *NetworkPolicyManager) Start(stopCh <-chan struct{}) error {
169169 // Starts all informers manufactured by npMgr's informerFactory.
170170 npMgr .informerFactory .Start (stopCh )
171171
172- // Failure detected. Needs to restore Azure-NPM related iptables entries.
173- if util .Exists (util .IptablesConfigFile ) {
174- npMgr .restore ()
175- }
176-
177172 // Wait for the initial sync of local cache.
178173 if ! cache .WaitForCacheSync (stopCh , npMgr .podInformer .Informer ().HasSynced ) {
179174 return fmt .Errorf ("Pod informer failed to sync" )
@@ -194,6 +189,10 @@ func (npMgr *NetworkPolicyManager) Start(stopCh <-chan struct{}) error {
194189
195190// NewNetworkPolicyManager creates a NetworkPolicyManager
196191func NewNetworkPolicyManager (clientset * kubernetes.Clientset , informerFactory informers.SharedInformerFactory , npmVersion string ) * NetworkPolicyManager {
192+ // Clear out left over iptables states
193+ log .Logf ("Azure-NPM creating, cleaning iptables" )
194+ iptMgr := iptm .NewIptablesManager ()
195+ iptMgr .UninitNpmChains ()
197196
198197 podInformer := informerFactory .Core ().V1 ().Pods ()
199198 nsInformer := informerFactory .Core ().V1 ().Namespaces ()
@@ -212,14 +211,14 @@ func NewNetworkPolicyManager(clientset *kubernetes.Clientset, informerFactory in
212211 }
213212
214213 npMgr := & NetworkPolicyManager {
215- clientset : clientset ,
216- informerFactory : informerFactory ,
217- podInformer : podInformer ,
218- nsInformer : nsInformer ,
219- npInformer : npInformer ,
220- nodeName : os .Getenv ("HOSTNAME" ),
221- nsMap : make (map [string ]* namespace ),
222- isAzureNpmChainCreated : false ,
214+ clientset : clientset ,
215+ informerFactory : informerFactory ,
216+ podInformer : podInformer ,
217+ nsInformer : nsInformer ,
218+ npInformer : npInformer ,
219+ nodeName : os .Getenv ("HOSTNAME" ),
220+ nsMap : make (map [string ]* namespace ),
221+ isAzureNpmChainCreated : false ,
223222 isSafeToCleanUpAzureNpmChain : false ,
224223 clusterState : telemetry.ClusterState {
225224 PodCount : 0 ,
@@ -243,13 +242,15 @@ func NewNetworkPolicyManager(clientset *kubernetes.Clientset, informerFactory in
243242 clusterState := npMgr .GetClusterState ()
244243 npMgr .reportManager .Report .(* telemetry.NPMReport ).GetReport (clusterID , npMgr .nodeName , npmVersion , serverVersion .GitVersion , clusterState )
245244
246- allNs , err := newNs (util .KubeAllNamespacesFlag )
247- if err != nil {
248- log .Logf ("Error: failed to create all-namespace." )
249- panic (err .Error )
250- }
245+ allNs , _ := newNs (util .KubeAllNamespacesFlag )
251246 npMgr .nsMap [util .KubeAllNamespacesFlag ] = allNs
252247
248+ // Create ipset for the namespace.
249+ kubeSystemNs := "ns-" + util .KubeSystemFlag
250+ if err := allNs .ipsMgr .CreateSet (kubeSystemNs ); err != nil {
251+ log .Logf ("Error: failed to create ipset for namespace %s." , kubeSystemNs )
252+ }
253+
253254 podInformer .Informer ().AddEventHandler (
254255 // Pod event handlers
255256 cache.ResourceEventHandlerFuncs {
0 commit comments