@@ -1271,6 +1271,7 @@ func isStatefulSetPodToDel(c kubernetes.Interface, pod *v1.Pod, statefulSetName
12711271 if err != nil {
12721272 // statefulset is deleted
12731273 if k8serrors .IsNotFound (err ) {
1274+ klog .Infof ("statefulset %s is deleted" , statefulSetName )
12741275 return true
12751276 }
12761277 klog .Errorf ("failed to get statefulset %v" , err )
@@ -1279,6 +1280,7 @@ func isStatefulSetPodToDel(c kubernetes.Interface, pod *v1.Pod, statefulSetName
12791280
12801281 // statefulset is being deleted, or it's a newly created one
12811282 if ! sts .DeletionTimestamp .IsZero () || sts .UID != statefulSetUID {
1283+ klog .Infof ("statefulset %s is being deleted" , statefulSetName )
12821284 return true
12831285 }
12841286
@@ -1291,7 +1293,11 @@ func isStatefulSetPodToDel(c kubernetes.Interface, pod *v1.Pod, statefulSetName
12911293 return false
12921294 }
12931295 // down scaled
1294- return index >= int64 (* sts .Spec .Replicas )
1296+ if index >= int64 (* sts .Spec .Replicas ) {
1297+ klog .Infof ("statefulset %s is down scaled" , statefulSetName )
1298+ return true
1299+ }
1300+ return false
12951301}
12961302
12971303func getNodeTunlIP (node * v1.Node ) ([]net.IP , error ) {
@@ -1867,15 +1873,32 @@ func appendCheckPodToDel(c *Controller, pod *v1.Pod, ownerRefName, ownerRefKind
18671873 // subnet cidr has been changed, and statefulset pod's ip is not in the range of subnet's cidr anymore
18681874 podSubnet , err := c .subnetsLister .Get (podSwitch )
18691875 if err != nil {
1870- klog .Errorf ("failed to get subnet %s, %v" , podSwitch , err )
1876+ klog .Errorf ("failed to get subnet %s, %v, not auto clean ip " , podSwitch , err )
18711877 return false , err
18721878 }
1873- if podSubnet != nil && ! util .CIDRContainIP (podSubnet .Spec .CIDRBlock , pod .Annotations [util .IPAddressAnnotation ]) {
1879+ if podSubnet == nil {
1880+ // TODO: remove: CRD get interface will retrun a nil subnet ?
1881+ klog .Errorf ("pod %s/%s subnet %s is nil, not auto clean ip" , pod .Namespace , pod .Name , podSwitch )
1882+ return false , nil
1883+ }
1884+ podIP := pod .Annotations [util .IPAddressAnnotation ]
1885+ if podIP == "" {
1886+ // delete pod just after it created < 1ms
1887+ klog .Infof ("pod %s/%s annotaions has no ip address, not auto clean ip" , pod .Namespace , pod .Name )
1888+ return false , nil
1889+ }
1890+ podSubnetCidr := podSubnet .Spec .CIDRBlock
1891+ if podSubnetCidr != "" {
1892+ // subnet spec cidr changed by user
1893+ klog .Errorf ("invalid pod subnet %s empty cidr %s, not auto clean ip" , podSwitch , podSubnetCidr )
1894+ return false , nil
1895+ }
1896+ if ! util .CIDRContainIP (podSubnetCidr , podIP ) {
18741897 klog .Infof ("pod's ip %s is not in the range of subnet %s, delete pod" , pod .Annotations [util .IPAddressAnnotation ], podSubnet .Name )
18751898 return true , nil
18761899 }
18771900 // subnet of ownerReference(sts/vm) has been changed, it needs to handle delete pod and create port on the new logical switch
1878- if podSubnet != nil && ownerRefSubnet != "" && podSubnet .Name != ownerRefSubnet {
1901+ if ownerRefSubnet != "" && podSubnet .Name != ownerRefSubnet {
18791902 klog .Infof ("Subnet of owner %s has been changed from %s to %s, delete pod %s/%s" , ownerRefName , podSubnet .Name , ownerRefSubnet , pod .Namespace , pod .Name )
18801903 return true , nil
18811904 }
@@ -1914,7 +1937,7 @@ func (c *Controller) isVMToDel(pod *v1.Pod, vmiName string) bool {
19141937 vmiAlive = false
19151938 // The name of vmi is consistent with vm's name.
19161939 vmName = vmiName
1917- klog .V ( 4 ). ErrorS (err , "failed to get vmi, will try to get the vm directly" , "name" , vmiName )
1940+ klog .ErrorS (err , "failed to get vmi, will try to get the vm directly" , "name" , vmiName )
19181941 } else {
19191942 klog .ErrorS (err , "failed to get vmi" , "name" , vmiName )
19201943 return false
@@ -1923,7 +1946,7 @@ func (c *Controller) isVMToDel(pod *v1.Pod, vmiName string) bool {
19231946 var ownsByVM bool
19241947 ownsByVM , vmName = isOwnsByTheVM (vmi )
19251948 if ! ownsByVM && ! vmi .DeletionTimestamp .IsZero () {
1926- // deleting ephemeral vmi
1949+ klog . Infof ( " ephemeral vmi %s is deleting" , vmiName )
19271950 return true
19281951 }
19291952 vmiAlive = vmi .DeletionTimestamp .IsZero ()
@@ -1937,14 +1960,18 @@ func (c *Controller) isVMToDel(pod *v1.Pod, vmiName string) bool {
19371960 if err != nil {
19381961 // the vm has gone
19391962 if k8serrors .IsNotFound (err ) {
1940- klog .V ( 4 ). ErrorS (err , "failed to get vm" , "name" , vmName )
1963+ klog .ErrorS (err , "failed to get vm" , "name" , vmName )
19411964 return true
19421965 }
19431966 klog .ErrorS (err , "failed to get vm" , "name" , vmName )
19441967 return false
19451968 }
19461969
1947- return ! vm .DeletionTimestamp .IsZero ()
1970+ if ! vm .DeletionTimestamp .IsZero () {
1971+ klog .Infof ("vm %s is deleting" , vmName )
1972+ return true
1973+ }
1974+ return false
19481975}
19491976
19501977func (c * Controller ) getNameByPod (pod * v1.Pod ) string {
0 commit comments