Documentation
¶
Overview ¶
Package ipam provides different allocators for assigning IP ranges to nodes. We currently support several kinds of IPAM allocators (these are denoted by the CIDRAllocatorType):
- RangeAllocator is an allocator that assigns PodCIDRs to nodes and works in conjunction with the RouteController to configure the network to get connectivity.
- CloudAllocator is an allocator that synchronizes PodCIDRs from IP ranges assignments from the underlying cloud platform.
- (Alpha only) IPAMFromCluster is an allocator that has the similar functionality as the RangeAllocator but also synchronizes cluster-managed ranges into the cloud platform.
- (Alpha only) IPAMFromCloud is the same as CloudAllocator (synchronizes from cloud into the cluster.)
Index ¶
- Constants
- type CIDRAllocator
- func New(kubeClient clientset.Interface, cloud cloudprovider.Interface, ...) (CIDRAllocator, error)
- func NewCIDRRangeAllocator(client clientset.Interface, nodeInformer informers.NodeInformer, ...) (CIDRAllocator, error)
- func NewCloudCIDRAllocator(client clientset.Interface, cloud cloudprovider.Interface, ...) (CIDRAllocator, error)
- type CIDRAllocatorType
- type Config
- type Controller
- type Timeout
Constants ¶
const (
// RangeAllocatorType is the allocator that uses an internal CIDR
// range allocator to do node CIDR range allocations.
RangeAllocatorType CIDRAllocatorType = "RangeAllocator"
// CloudAllocatorType is the allocator that uses cloud platform
// support to do node CIDR range allocations.
CloudAllocatorType CIDRAllocatorType = "CloudAllocator"
// IPAMFromClusterAllocatorType uses the ipam controller sync'ing the node
// CIDR range allocations from the cluster to the cloud.
IPAMFromClusterAllocatorType = "IPAMFromCluster"
// IPAMFromCloudAllocatorType uses the ipam controller sync'ing the node
// CIDR range allocations from the cloud to the cluster.
IPAMFromCloudAllocatorType = "IPAMFromCloud"
)
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type CIDRAllocator ¶
type CIDRAllocator interface {
// AllocateOrOccupyCIDR looks at the given node, assigns it a valid
// CIDR if it doesn't currently have one or mark the CIDR as used if
// the node already have one.
AllocateOrOccupyCIDR(node *v1.Node) error
// ReleaseCIDR releases the CIDR of the removed node
ReleaseCIDR(node *v1.Node) error
// Run starts all the working logic of the allocator.
Run(stopCh <-chan struct{})
}
CIDRAllocator is an interface implemented by things that know how to allocate/occupy/recycle CIDR for nodes.
func New ¶
func New(kubeClient clientset.Interface, cloud cloudprovider.Interface, nodeInformer informers.NodeInformer, allocatorType CIDRAllocatorType, clusterCIDR, serviceCIDR *net.IPNet, nodeCIDRMaskSize int) (CIDRAllocator, error)
New creates a new CIDR range allocator.
func NewCIDRRangeAllocator ¶
func NewCIDRRangeAllocator(client clientset.Interface, nodeInformer informers.NodeInformer, clusterCIDR *net.IPNet, serviceCIDR *net.IPNet, subNetMaskSize int, nodeList *v1.NodeList) (CIDRAllocator, error)
NewCIDRRangeAllocator returns a CIDRAllocator to allocate CIDR for node Caller must ensure subNetMaskSize is not less than cluster CIDR mask size. Caller must always pass in a list of existing nodes so the new allocator can initialize its CIDR map. NodeList is only nil in testing.
func NewCloudCIDRAllocator ¶
func NewCloudCIDRAllocator(client clientset.Interface, cloud cloudprovider.Interface, nodeInformer informers.NodeInformer) (CIDRAllocator, error)
NewCloudCIDRAllocator creates a new cloud CIDR allocator.
type CIDRAllocatorType ¶
type CIDRAllocatorType string
CIDRAllocatorType is the type of the allocator to use.
type Config ¶
type Config struct {
// Resync is the default timeout duration when there are no errors.
Resync time.Duration
// MaxBackoff is the maximum timeout when in a error backoff state.
MaxBackoff time.Duration
// InitialRetry is the initial retry interval when an error is reported.
InitialRetry time.Duration
// Mode to use to synchronize.
Mode nodesync.NodeSyncMode
}
Config for the IPAM controller.
type Controller ¶
type Controller struct {
// contains filtered or unexported fields
}
Controller is the controller for synchronizing cluster and cloud node pod CIDR range assignments.
func NewController ¶
func NewController(
config *Config,
kubeClient clientset.Interface,
cloud cloudprovider.Interface,
clusterCIDR, serviceCIDR *net.IPNet,
nodeCIDRMaskSize int) (*Controller, error)
NewController returns a new instance of the IPAM controller.
type Timeout ¶
type Timeout struct {
// Resync is the default timeout duration when there are no errors.
Resync time.Duration
// MaxBackoff is the maximum timeout when in a error backoff state.
MaxBackoff time.Duration
// InitialRetry is the initial retry interval when an error is reported.
InitialRetry time.Duration
// contains filtered or unexported fields
}
Timeout manages the resync loop timing for a given node sync operation. The timeout changes depending on whether or not there was an error reported for the operation. Consecutive errors will result in exponential backoff to a maxBackoff timeout.