Documentation ¶
Index ¶
- func IsConflict(err error) bool
- func ReasonForError(err error) metav1.StatusReason
- type APIStatus
- type NodePool
- type NodePoolManager
- type OciCloudProvider
- func (ocp *OciCloudProvider) Cleanup() error
- func (ocp *OciCloudProvider) GPULabel() string
- func (ocp *OciCloudProvider) GetAvailableGPUTypes() map[string]struct{}
- func (ocp *OciCloudProvider) GetAvailableMachineTypes() ([]string, error)
- func (ocp *OciCloudProvider) GetNodeGpuConfig(node *apiv1.Node) *cloudprovider.GpuConfig
- func (ocp *OciCloudProvider) GetResourceLimiter() (*cloudprovider.ResourceLimiter, error)
- func (ocp *OciCloudProvider) HasInstance(node *apiv1.Node) (bool, error)
- func (ocp *OciCloudProvider) Name() string
- func (ocp *OciCloudProvider) NewNodeGroup(machineType string, labels map[string]string, systemLabels map[string]string, ...) (cloudprovider.NodeGroup, error)
- func (ocp *OciCloudProvider) NodeGroupForNode(n *apiv1.Node) (cloudprovider.NodeGroup, error)
- func (ocp *OciCloudProvider) NodeGroups() []cloudprovider.NodeGroup
- func (ocp *OciCloudProvider) Pricing() (cloudprovider.PricingModel, caerrors.AutoscalerError)
- func (ocp *OciCloudProvider) Refresh() error
- type RegisteredTaintsGetter
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func ReasonForError ¶
func ReasonForError(err error) metav1.StatusReason
ReasonForError returns the error's reason
Types ¶
type NodePool ¶
type NodePool interface { cloudprovider.NodeGroup }
NodePool implements the NodeGroup interface via an OCI Node Pool
type NodePoolManager ¶
type NodePoolManager interface { // Refresh triggers refresh of cached resources. Refresh() error // Cleanup cleans up open resources before the cloud provider is destroyed, i.e. go routines etc. Cleanup() error // GetNodePools returns list of registered NodePools. GetNodePools() []NodePool // GetNodePoolNodes returns NodePool nodes. GetNodePoolNodes(np NodePool) ([]cloudprovider.Instance, error) // GetNodePoolNodes returns NodePool nodes. GetExistingNodePoolSizeViaCompute(np NodePool) (int, error) // GetNodePoolForInstance returns NodePool to which the given instance belongs. GetNodePoolForInstance(instance ocicommon.OciRef) (NodePool, error) // GetNodePoolTemplateNode returns a template node for NodePool. GetNodePoolTemplateNode(np NodePool) (*apiv1.Node, error) // GetNodePoolSize gets NodePool size. GetNodePoolSize(np NodePool) (int, error) // SetNodePoolSize sets NodePool size. SetNodePoolSize(np NodePool, size int) error // DeleteInstances deletes the given instances. All instances must be controlled by the same NodePool. DeleteInstances(np NodePool, instances []ocicommon.OciRef) error // Invalidate node pool cache and refresh it InvalidateAndRefreshCache() error // Taint with ToBeDeletedByClusterAutoscaler to avoid unexpected CA restarts scheduling pods on a node intended to be deleted before restart TaintToPreventFurtherSchedulingOnRestart(nodes []*apiv1.Node, client kubernetes.Interface) error }
NodePoolManager defines the operations required for an *instance-pool based* autoscaler.
func CreateNodePoolManager ¶
func CreateNodePoolManager(cloudConfigPath string, nodeGroupAutoDiscoveryList []string, discoveryOpts cloudprovider.NodeGroupDiscoveryOptions, kubeClient kubernetes.Interface) (NodePoolManager, error)
CreateNodePoolManager creates an NodePoolManager that can manage autoscaling node pools
type OciCloudProvider ¶
type OciCloudProvider struct {
// contains filtered or unexported fields
}
OciCloudProvider creates a cloud provider object that is compatible with node pools
func NewOciCloudProvider ¶
func NewOciCloudProvider(manager NodePoolManager, rl *cloudprovider.ResourceLimiter) *OciCloudProvider
NewOciCloudProvider creates a new CloudProvider implementation that supports OKE Node Pools
func (*OciCloudProvider) Cleanup ¶
func (ocp *OciCloudProvider) Cleanup() error
Cleanup cleans up open resources before the cloud provider is destroyed, i.e. go routines etc.
func (*OciCloudProvider) GPULabel ¶
func (ocp *OciCloudProvider) GPULabel() string
GPULabel returns the label added to nodes with GPU resource.
func (*OciCloudProvider) GetAvailableGPUTypes ¶
func (ocp *OciCloudProvider) GetAvailableGPUTypes() map[string]struct{}
GetAvailableGPUTypes return all available GPU types cloud provider supports.
func (*OciCloudProvider) GetAvailableMachineTypes ¶
func (ocp *OciCloudProvider) GetAvailableMachineTypes() ([]string, error)
GetAvailableMachineTypes get all machine types that can be requested from the cloud provider. Implementation optional.
func (*OciCloudProvider) GetNodeGpuConfig ¶
func (ocp *OciCloudProvider) GetNodeGpuConfig(node *apiv1.Node) *cloudprovider.GpuConfig
GetNodeGpuConfig returns the label, type and resource name for the GPU added to node. If node doesn't have any GPUs, it returns nil.
func (*OciCloudProvider) GetResourceLimiter ¶
func (ocp *OciCloudProvider) GetResourceLimiter() (*cloudprovider.ResourceLimiter, error)
GetResourceLimiter returns struct containing limits (max, min) for resources (cores, memory etc.).
func (*OciCloudProvider) HasInstance ¶
func (ocp *OciCloudProvider) HasInstance(node *apiv1.Node) (bool, error)
HasInstance returns whether a given node has a corresponding instance in this cloud provider
func (*OciCloudProvider) Name ¶
func (ocp *OciCloudProvider) Name() string
Name returns name of the cloud provider.
func (*OciCloudProvider) NewNodeGroup ¶
func (ocp *OciCloudProvider) NewNodeGroup(machineType string, labels map[string]string, systemLabels map[string]string, taints []apiv1.Taint, extraResources map[string]resource.Quantity, ) (cloudprovider.NodeGroup, error)
NewNodeGroup builds a theoretical node group based on the node definition provided. The node group is not automatically created on the cloud provider side. The node group is not returned by NodeGroups() until it is created. Implementation optional.
func (*OciCloudProvider) NodeGroupForNode ¶
func (ocp *OciCloudProvider) NodeGroupForNode(n *apiv1.Node) (cloudprovider.NodeGroup, error)
NodeGroupForNode returns the node group for the given node, nil if the node should not be processed by cluster autoscaler, or non-nil error if such occurred. Must be implemented.
func (*OciCloudProvider) NodeGroups ¶
func (ocp *OciCloudProvider) NodeGroups() []cloudprovider.NodeGroup
NodeGroups returns all node groups configured for this cloud provider.
func (*OciCloudProvider) Pricing ¶
func (ocp *OciCloudProvider) Pricing() (cloudprovider.PricingModel, caerrors.AutoscalerError)
Pricing returns pricing model for this cloud provider or error if not available. Implementation optional.
func (*OciCloudProvider) Refresh ¶
func (ocp *OciCloudProvider) Refresh() error
Refresh is called before every main loop and can be used to dynamically update cloud provider state. In particular the list of node groups returned by NodeGroups can change as a result of CloudProvider.Refresh().
type RegisteredTaintsGetter ¶
RegisteredTaintsGetter returns the initial registered taints for the node pool.
func CreateRegisteredTaintsGetter ¶
func CreateRegisteredTaintsGetter() RegisteredTaintsGetter
CreateRegisteredTaintsGetter creates a client that can retrieve the defined taints on a node pool