advertisementOperator

package
v0.0.0-...-5a253b8 Latest Latest
Warning

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

Go to latest
Published: Sep 10, 2020 License: Apache-2.0 Imports: 26 Imported by: 0

Documentation

Index

Constants

View Source
const (
	VirtualNodePrefix    = "liqo-"
	VirtualKubeletPrefix = "virtual-kubelet-"
)

Variables

This section is empty.

Functions

func ComputeAnnouncedResources

func ComputeAnnouncedResources(physicalNodes *corev1.NodeList, reqs corev1.ResourceList, sharingPercentage int64) (availability corev1.ResourceList, images []corev1.ContainerImage)

create announced resources for advertisement

func ComputePrices

func ComputePrices(images []corev1.ContainerImage) corev1.ResourceList

create prices resource for advertisement

func GetAllPodsResources

func GetAllPodsResources(nodeNonTerminatedPodsList *corev1.PodList) (requests corev1.ResourceList, limits corev1.ResourceList)

get resources used by pods on physical nodes

func GetClusterResources

func GetClusterResources(nodes []corev1.Node) (corev1.ResourceList, []corev1.ContainerImage)

get cluster resources (cpu, ram and pods) and images

func GetNodeImages

func GetNodeImages(node corev1.Node) []corev1.ContainerImage

func StartBroadcaster

func StartBroadcaster(homeClusterId, localKubeconfigPath, peeringRequestName, saName string) error

start the broadcaster which sends Advertisement messages it reads the Secret to get the kubeconfig to the remote cluster and create a client for it parameters - homeClusterId: the cluster ID of your cluster (must be a UUID) - localKubeconfigPath: the path to the kubeconfig of the local cluster. Set it only when you are debugging and need to launch the program as a process and not inside Kubernetes - peeringRequestName: the name of the PeeringRequest containing the reference to the secret with the kubeconfig for creating Advertisements CR on foreign cluster - saName: The name of the ServiceAccount used to create the kubeconfig that will be sent to the foreign cluster with the permissions to create resources on local cluster

Types

type AdvertisementBroadcaster

type AdvertisementBroadcaster struct {
	// local-related variables
	LocalClient     *crdClient.CRDClient
	DiscoveryClient *crdClient.CRDClient
	// remote-related variables
	KubeconfigSecretForForeign *corev1.Secret       // secret containing the kubeconfig that will be sent to the foreign cluster
	RemoteClient               *crdClient.CRDClient // client to create Advertisements and Secrets on the foreign cluster
	// configuration variables
	HomeClusterId      string
	ForeignClusterId   string
	PeeringRequestName string
	ClusterConfig      configv1alpha1.ClusterConfigSpec
	// contains filtered or unexported fields
}

func (*AdvertisementBroadcaster) CreateAdvertisement

func (b *AdvertisementBroadcaster) CreateAdvertisement(virtualNodes *corev1.NodeList,
	availability corev1.ResourceList, images []corev1.ContainerImage, limits corev1.ResourceList) advtypes.Advertisement

create advertisement message

func (*AdvertisementBroadcaster) GenerateAdvertisement

func (b *AdvertisementBroadcaster) GenerateAdvertisement()

generate an Advertisement message every 10 minutes and post it to remote clusters

func (*AdvertisementBroadcaster) GetResourcesForAdv

func (b *AdvertisementBroadcaster) GetResourcesForAdv() (physicalNodes, virtualNodes *corev1.NodeList, availability, limits corev1.ResourceList, images []corev1.ContainerImage, err error)

func (*AdvertisementBroadcaster) NotifyAdvertisementDeletion

func (b *AdvertisementBroadcaster) NotifyAdvertisementDeletion() error

func (*AdvertisementBroadcaster) SendAdvertisementToForeignCluster

func (b *AdvertisementBroadcaster) SendAdvertisementToForeignCluster(advToCreate advtypes.Advertisement) (*advtypes.Advertisement, error)

func (*AdvertisementBroadcaster) WatchAdvertisement

func (b *AdvertisementBroadcaster) WatchAdvertisement(homeAdvName, foreignAdvName string)

func (*AdvertisementBroadcaster) WatchConfiguration

func (b *AdvertisementBroadcaster) WatchConfiguration(kubeconfigPath string, client *crdClient.CRDClient)

type AdvertisementReconciler

type AdvertisementReconciler struct {
	client.Client
	Scheme           *runtime.Scheme
	EventsRecorder   record.EventRecorder
	KubeletNamespace string
	KindEnvironment  bool
	VKImage          string
	InitVKImage      string
	HomeClusterId    string
	AcceptedAdvNum   int32
	ClusterConfig    configv1alpha1.AdvertisementConfig
	AdvClient        *crdClient.CRDClient
	DiscoveryClient  *crdClient.CRDClient
	RetryTimeout     time.Duration
	// contains filtered or unexported fields
}

AdvertisementReconciler reconciles a Advertisement object

func (*AdvertisementReconciler) CheckAdvertisement

func (r *AdvertisementReconciler) CheckAdvertisement(adv *advtypes.Advertisement)

check if the advertisement is interesting and set its status accordingly

func (*AdvertisementReconciler) ManageMaximumUpdate

func (*AdvertisementReconciler) Reconcile

func (r *AdvertisementReconciler) Reconcile(req ctrl.Request) (ctrl.Result, error)

func (*AdvertisementReconciler) SetupWithManager

func (r *AdvertisementReconciler) SetupWithManager(mgr ctrl.Manager) error

func (*AdvertisementReconciler) UpdateAdvertisement

func (r *AdvertisementReconciler) UpdateAdvertisement(adv *advtypes.Advertisement)

func (*AdvertisementReconciler) UpdateForeignCluster

func (r *AdvertisementReconciler) UpdateForeignCluster(adv *advtypes.Advertisement) (error, bool)

set Advertisement reference in related ForeignCluster

func (*AdvertisementReconciler) WatchConfiguration

func (r *AdvertisementReconciler) WatchConfiguration(kubeconfigPath string, client *crdClient.CRDClient)

Jump to

Keyboard shortcuts

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