mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-25 04:33:26 +00:00
Update NetworkUnavailable condition in ipam controller
This commit is contained in:
parent
e4f01051b5
commit
38597a26a8
@ -42,6 +42,7 @@ go_library(
|
|||||||
],
|
],
|
||||||
importpath = "k8s.io/kubernetes/pkg/controller/node/ipam",
|
importpath = "k8s.io/kubernetes/pkg/controller/node/ipam",
|
||||||
deps = [
|
deps = [
|
||||||
|
"//pkg/api/v1/node:go_default_library",
|
||||||
"//pkg/cloudprovider:go_default_library",
|
"//pkg/cloudprovider:go_default_library",
|
||||||
"//pkg/cloudprovider/providers/gce:go_default_library",
|
"//pkg/cloudprovider/providers/gce:go_default_library",
|
||||||
"//pkg/controller:go_default_library",
|
"//pkg/controller:go_default_library",
|
||||||
|
@ -36,11 +36,12 @@ import (
|
|||||||
clientset "k8s.io/client-go/kubernetes"
|
clientset "k8s.io/client-go/kubernetes"
|
||||||
"k8s.io/client-go/kubernetes/scheme"
|
"k8s.io/client-go/kubernetes/scheme"
|
||||||
v1core "k8s.io/client-go/kubernetes/typed/core/v1"
|
v1core "k8s.io/client-go/kubernetes/typed/core/v1"
|
||||||
|
v1node "k8s.io/kubernetes/pkg/api/v1/node"
|
||||||
"k8s.io/kubernetes/pkg/cloudprovider"
|
"k8s.io/kubernetes/pkg/cloudprovider"
|
||||||
"k8s.io/kubernetes/pkg/cloudprovider/providers/gce"
|
"k8s.io/kubernetes/pkg/cloudprovider/providers/gce"
|
||||||
"k8s.io/kubernetes/pkg/controller"
|
"k8s.io/kubernetes/pkg/controller"
|
||||||
"k8s.io/kubernetes/pkg/controller/node/util"
|
"k8s.io/kubernetes/pkg/controller/node/util"
|
||||||
nodeutil "k8s.io/kubernetes/pkg/util/node"
|
utilnode "k8s.io/kubernetes/pkg/util/node"
|
||||||
)
|
)
|
||||||
|
|
||||||
// cloudCIDRAllocator allocates node CIDRs according to IP address aliases
|
// cloudCIDRAllocator allocates node CIDRs according to IP address aliases
|
||||||
@ -105,6 +106,12 @@ func NewCloudCIDRAllocator(client clientset.Interface, cloud cloudprovider.Inter
|
|||||||
if newNode.Spec.PodCIDR == "" {
|
if newNode.Spec.PodCIDR == "" {
|
||||||
return ca.AllocateOrOccupyCIDR(newNode)
|
return ca.AllocateOrOccupyCIDR(newNode)
|
||||||
}
|
}
|
||||||
|
// Even if PodCIDR is assigned, but NetworkUnavailable condition is
|
||||||
|
// set to true, we need to process the node to set the condition.
|
||||||
|
_, cond := v1node.GetNodeCondition(&newNode.Status, v1.NodeNetworkUnavailable)
|
||||||
|
if cond == nil || cond.Status != v1.ConditionFalse {
|
||||||
|
return ca.AllocateOrOccupyCIDR(newNode)
|
||||||
|
}
|
||||||
return nil
|
return nil
|
||||||
}),
|
}),
|
||||||
DeleteFunc: util.CreateDeleteNodeHandler(ca.ReleaseCIDR),
|
DeleteFunc: util.CreateDeleteNodeHandler(ca.ReleaseCIDR),
|
||||||
@ -209,7 +216,8 @@ func (ca *cloudCIDRAllocator) updateCIDRAllocation(nodeName string) error {
|
|||||||
if node.Spec.PodCIDR != "" {
|
if node.Spec.PodCIDR != "" {
|
||||||
if node.Spec.PodCIDR == podCIDR {
|
if node.Spec.PodCIDR == podCIDR {
|
||||||
glog.V(4).Infof("Node %v already has allocated CIDR %v. It matches the proposed one.", node.Name, podCIDR)
|
glog.V(4).Infof("Node %v already has allocated CIDR %v. It matches the proposed one.", node.Name, podCIDR)
|
||||||
return nil
|
// We don't return to set the NetworkUnavailable condition if needed.
|
||||||
|
break
|
||||||
}
|
}
|
||||||
glog.Errorf("PodCIDR being reassigned! Node %v spec has %v, but cloud provider has assigned %v",
|
glog.Errorf("PodCIDR being reassigned! Node %v spec has %v, but cloud provider has assigned %v",
|
||||||
node.Name, node.Spec.PodCIDR, podCIDR)
|
node.Name, node.Spec.PodCIDR, podCIDR)
|
||||||
@ -219,7 +227,7 @@ func (ca *cloudCIDRAllocator) updateCIDRAllocation(nodeName string) error {
|
|||||||
//
|
//
|
||||||
// See https://github.com/kubernetes/kubernetes/pull/42147#discussion_r103357248
|
// See https://github.com/kubernetes/kubernetes/pull/42147#discussion_r103357248
|
||||||
}
|
}
|
||||||
if err = nodeutil.PatchNodeCIDR(ca.client, types.NodeName(node.Name), podCIDR); err == nil {
|
if err = utilnode.PatchNodeCIDR(ca.client, types.NodeName(node.Name), podCIDR); err == nil {
|
||||||
glog.Infof("Set node %v PodCIDR to %v", node.Name, podCIDR)
|
glog.Infof("Set node %v PodCIDR to %v", node.Name, podCIDR)
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
@ -231,7 +239,7 @@ func (ca *cloudCIDRAllocator) updateCIDRAllocation(nodeName string) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
err = nodeutil.SetNodeCondition(ca.client, types.NodeName(node.Name), v1.NodeCondition{
|
err = utilnode.SetNodeCondition(ca.client, types.NodeName(node.Name), v1.NodeCondition{
|
||||||
Type: v1.NodeNetworkUnavailable,
|
Type: v1.NodeNetworkUnavailable,
|
||||||
Status: v1.ConditionFalse,
|
Status: v1.ConditionFalse,
|
||||||
Reason: "RouteCreated",
|
Reason: "RouteCreated",
|
||||||
|
Loading…
Reference in New Issue
Block a user