func init() { … }
var UnreachableTaintTemplate …
var NotReadyTaintTemplate …
var nodeConditionToTaintKeyStatusMap …
var taintKeyToNodeConditionMap …
type ZoneState …
const stateInitial …
const stateNormal …
const stateFullDisruption …
const statePartialDisruption …
const retrySleepTime …
const nodeNameKeyIndex …
const podUpdateWorkerSize …
const nodeUpdateWorkerSize …
const taintEvictionController …
var labelReconcileInfo …
type nodeHealthData …
func (n *nodeHealthData) deepCopy() *nodeHealthData { … }
type nodeHealthMap …
func newNodeHealthMap() *nodeHealthMap { … }
func (n *nodeHealthMap) getDeepCopy(name string) *nodeHealthData { … }
func (n *nodeHealthMap) set(name string, data *nodeHealthData) { … }
type podUpdateItem …
type Controller …
func NewNodeLifecycleController(
ctx context.Context,
leaseInformer coordinformers.LeaseInformer,
podInformer coreinformers.PodInformer,
nodeInformer coreinformers.NodeInformer,
daemonSetInformer appsv1informers.DaemonSetInformer,
kubeClient clientset.Interface,
nodeMonitorPeriod time.Duration,
nodeStartupGracePeriod time.Duration,
nodeMonitorGracePeriod time.Duration,
evictionLimiterQPS float32,
secondaryEvictionLimiterQPS float32,
largeClusterThreshold int32,
unhealthyZoneThreshold float32,
) (*Controller, error) { … }
func (nc *Controller) Run(ctx context.Context) { … }
func (nc *Controller) doNodeProcessingPassWorker(ctx context.Context) { … }
func (nc *Controller) doNoScheduleTaintingPass(ctx context.Context, nodeName string) error { … }
func (nc *Controller) doNoExecuteTaintingPass(ctx context.Context) { … }
func (nc *Controller) monitorNodeHealth(ctx context.Context) error { … }
func (nc *Controller) processTaintBaseEviction(ctx context.Context, node *v1.Node, observedReadyCondition *v1.NodeCondition) { … }
const labelNodeDisruptionExclusion …
func isNodeExcludedFromDisruptionChecks(node *v1.Node) bool { … }
func (nc *Controller) tryUpdateNodeHealth(ctx context.Context, node *v1.Node) (time.Duration, v1.NodeCondition, *v1.NodeCondition, error) { … }
func (nc *Controller) handleDisruption(ctx context.Context, zoneToNodeConditions map[string][]*v1.NodeCondition, nodes []*v1.Node) { … }
func (nc *Controller) podUpdated(oldPod, newPod *v1.Pod) { … }
func (nc *Controller) doPodProcessingWorker(ctx context.Context) { … }
func (nc *Controller) processPod(ctx context.Context, podItem podUpdateItem) { … }
func (nc *Controller) setLimiterInZone(zone string, zoneSize int, state ZoneState) { … }
func (nc *Controller) classifyNodes(allNodes []*v1.Node) (added, deleted, newZoneRepresentatives []*v1.Node) { … }
func (nc *Controller) HealthyQPSFunc(nodeNum int) float32 { … }
func (nc *Controller) ReducedQPSFunc(nodeNum int) float32 { … }
func (nc *Controller) addPodEvictorForNewZone(logger klog.Logger, node *v1.Node) { … }
func (nc *Controller) markNodeForTainting(node *v1.Node, status v1.ConditionStatus) bool { … }
func (nc *Controller) markNodeAsReachable(ctx context.Context, node *v1.Node) (bool, error) { … }
func (nc *Controller) ComputeZoneState(nodeReadyConditions []*v1.NodeCondition) (int, ZoneState) { … }
func (nc *Controller) reconcileNodeLabels(ctx context.Context, nodeName string) error { … }