antiaffinity

package
v1.14.0-alpha.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 15, 2019 License: Apache-2.0 Imports: 6 Imported by: 0

Documentation

Overview

LimitPodHardAntiAffinityTopology admission controller rejects any pod that specifies "hard" (RequiredDuringScheduling) anti-affinity with a TopologyKey other than kubeletapis.LabelHostname. Because anti-affinity is symmetric, without this admission controller, a user could maliciously or accidentally specify that their pod (once it has scheduled) should block other pods from scheduling into the same zone or some other large topology, essentially DoSing the cluster. In the future we will address this problem more fully by using quota and priority, but for now this admission controller provides a simple protection, on the assumption that the only legitimate use of hard pod anti-affinity is to exclude other pods from the same node.

Index

Constants

View Source
const PluginName = "LimitPodHardAntiAffinityTopology"

Variables

This section is empty.

Functions

func Register added in v1.7.0

func Register(plugins *admission.Plugins)

Register registers a plugin

Types

type Plugin added in v1.9.0

type Plugin struct {
	*admission.Handler
}

Plugin contains the client used by the admission controller

func NewInterPodAntiAffinity

func NewInterPodAntiAffinity() *Plugin

NewInterPodAntiAffinity creates a new instance of the LimitPodHardAntiAffinityTopology admission controller

func (*Plugin) Validate added in v1.9.0

func (p *Plugin) Validate(attributes admission.Attributes) (err error)

Validate will deny any pod that defines AntiAffinity topology key other than kubeletapis.LabelHostname i.e. "kubernetes.io/hostname" in requiredDuringSchedulingRequiredDuringExecution and requiredDuringSchedulingIgnoredDuringExecution.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL