Documentation
¶
Overview ¶
Package executor manages objects within k8s that implement virtual clusters.
For the most part, the exported functions in this package will create, update, or delete individual native k8s objects that make up parts of the virtual cluster. The exceptions are in guest.go, where the exported functions handle operations within a cluster member's OS.
Index ¶
- Constants
- func CreateDir(reqLogger logr.Logger, obj runtime.Object, namespace string, podName string, ...) error
- func CreateFile(reqLogger logr.Logger, obj runtime.Object, namespace string, podName string, ...) error
- func CreateHeadlessService(cr *kdv1.KubeDirectorCluster) (*corev1.Service, error)
- func CreatePodService(cr *kdv1.KubeDirectorCluster, role *kdv1.Role, podName string) (*corev1.Service, error)
- func CreateStatefulSet(reqLogger logr.Logger, cr *kdv1.KubeDirectorCluster, nativeSystemdSupport bool, ...) (*appsv1.StatefulSet, error)
- func DeletePVC(namespace string, pvcName string) error
- func DeletePodService(reqLogger logr.Logger, namespace string, serviceName string) error
- func DeleteStatefulSet(namespace string, statefulSetName string) error
- func ExecCommand(reqLogger logr.Logger, obj runtime.Object, namespace string, podName string, ...) error
- func IsFileExists(reqLogger logr.Logger, obj runtime.Object, namespace string, podName string, ...) (bool, error)
- func ReadFile(reqLogger logr.Logger, obj runtime.Object, namespace string, podName string, ...) (bool, error)
- func RemoveDir(reqLogger logr.Logger, obj runtime.Object, namespace string, podName string, ...) error
- func RunScript(reqLogger logr.Logger, obj runtime.Object, namespace string, podName string, ...) error
- func UpdateClusterStatus(cr *kdv1.KubeDirectorCluster) error
- func UpdateHeadlessService(cr *kdv1.KubeDirectorCluster, service *corev1.Service) error
- func UpdatePodService(reqLogger logr.Logger, cr *kdv1.KubeDirectorCluster, role *kdv1.Role, ...) error
- func UpdateService(reqLogger logr.Logger, obj runtime.Object, service *corev1.Service) error
- func UpdateStatefulSetNonReplicas(cr *kdv1.KubeDirectorCluster, role *kdv1.Role, statefulSet *appsv1.StatefulSet) error
- func UpdateStatefulSetReplicas(reqLogger logr.Logger, cr *kdv1.KubeDirectorCluster, replicas int32, ...) error
- type Streams
Constants ¶
const ( // ClusterLabel is a label placed on every created statefulset, pod, and // service, with a value of the KubeDirectorCluster CR name. ClusterLabel = shared.KdDomainBase + "/kdcluster" // ClusterAppLabel is a label placed on every created statefulset, pod, // and service, with a value of the KubeDirectorApp CR name. ClusterAppLabel = shared.KdDomainBase + "/kdapp" // ClusterAppCatalogLabel is a label placed on every created statefulset, // pod, and service, with a value "local" or "system" appropriately. ClusterAppCatalogLabel = shared.KdDomainBase + "/appCatalog" // ClusterRoleLabel is a label placed on every created pod, and // (non-headless) service, with a value of the relevant role ID. ClusterRoleLabel = shared.KdDomainBase + "/role" // HeadlessServiceLabel is a label placed on the statefulset and pods. // Used in a selector on the headless service. HeadlessServiceLabel = shared.KdDomainBase + "/headless" // ClusterAppAnnotation is an annotation placed on every created // statefulset, pod, and service, with a value of the KubeDirectorApp's // spec.label.name. ClusterAppAnnotation = shared.KdDomainBase + "/kdapp-prettyName" // AppContainerName is the name of KubeDirector app containers. AppContainerName = "app" // PvcNamePrefix (along with a hyphen) is prepended to the name of each // member PVC name that is auto-created for a statefulset. PvcNamePrefix = "p" )
Variables ¶
This section is empty.
Functions ¶
func CreateDir ¶
func CreateDir( reqLogger logr.Logger, obj runtime.Object, namespace string, podName string, expectedContainerID string, containerName string, dirName string, ) error
CreateDir creates a directory (and any parent directors) in the filesystem of the given pod.
func CreateFile ¶
func CreateFile( reqLogger logr.Logger, obj runtime.Object, namespace string, podName string, expectedContainerID string, containerName string, filePath string, reader io.Reader, ) error
CreateFile takes the stream from the given reader, and writes it to the indicated filepath in the filesystem of the given pod.
func CreateHeadlessService ¶
func CreateHeadlessService( cr *kdv1.KubeDirectorCluster, ) (*corev1.Service, error)
CreateHeadlessService creates in k8s the "cluster service" used for intra-cluster network communication and for defining the virtual cluster's DNS subdomain. Cluster service name is an important part of DNS identity, so if we had already used a name previously and are re-creating the service, re-use that same name instead of generating a new one.
func CreatePodService ¶
func CreatePodService( cr *kdv1.KubeDirectorCluster, role *kdv1.Role, podName string, ) (*corev1.Service, error)
CreatePodService creates in k8s a service that exposes the designated service endpoints of a virtual cluster member. Depending on the app type definition, this will be either a NodePort service (default) or a LoadBalancer service. If there are no ports to configure for this service, no service object will be created and the function will return (nil, nil).
func CreateStatefulSet ¶
func CreateStatefulSet( reqLogger logr.Logger, cr *kdv1.KubeDirectorCluster, nativeSystemdSupport bool, role *kdv1.Role, ) (*appsv1.StatefulSet, error)
CreateStatefulSet creates in k8s a zero-replicas statefulset for implementing the given role.
func DeletePodService ¶
DeletePodService deletes a per-member service from k8s.
func DeleteStatefulSet ¶
DeleteStatefulSet deletes a statefulset from k8s.
func ExecCommand ¶ added in v0.3.0
func ExecCommand( reqLogger logr.Logger, obj runtime.Object, namespace string, podName string, expectedContainerID string, containerName string, command []string, ioStreams *Streams, ) error
ExecCommand is a utility function for executing a command in a pod. It uses the given ioStreams to provide the command inputs and accept the command outputs.
func IsFileExists ¶
func IsFileExists( reqLogger logr.Logger, obj runtime.Object, namespace string, podName string, expectedContainerID string, containerName string, filePath string, ) (bool, error)
IsFileExists probes whether the given pod's filesystem contains something at the indicated filepath. The returned boolean will be true if the file was found. If false, the returned error will be nil if the file is known to be missing, or non-nil if the probe failed to execute.
func ReadFile ¶ added in v0.2.0
func ReadFile( reqLogger logr.Logger, obj runtime.Object, namespace string, podName string, expectedContainerID string, containerName string, filePath string, writer io.Writer, ) (bool, error)
ReadFile takes the stream from the given writer, and writes to it the contents of the indicated filepath in the filesystem of the given pod. The returned boolean and error are interpreted in the same way as for IsFileExists.
func RemoveDir ¶ added in v0.3.0
func RemoveDir( reqLogger logr.Logger, obj runtime.Object, namespace string, podName string, expectedContainerID string, containerName string, dirName string, ignoreNotEmpty bool, ) error
RemoveDir removes a directory.
func RunScript ¶
func RunScript( reqLogger logr.Logger, obj runtime.Object, namespace string, podName string, expectedContainerID string, containerName string, description string, reader io.Reader, ) error
RunScript takes the stream from the given reader, and executes it as a shell script in the given pod.
func UpdateClusterStatus ¶ added in v0.3.0
func UpdateClusterStatus( cr *kdv1.KubeDirectorCluster, ) error
UpdateClusterStatus propagates status changes back to k8s. Roles or members in the status that have been marked for deletion (by having certain fields set to emptystring) will be removed before the writeback.
func UpdateHeadlessService ¶
func UpdateHeadlessService( cr *kdv1.KubeDirectorCluster, service *corev1.Service, ) error
UpdateHeadlessService examines the current cluster service in k8s and may take steps to reconcile it to the desired spec.
func UpdatePodService ¶
func UpdatePodService( reqLogger logr.Logger, cr *kdv1.KubeDirectorCluster, role *kdv1.Role, podName string, service *corev1.Service, ) error
UpdatePodService examines a current per-member service in k8s and may take steps to reconcile it to the desired spec. TBD: Currently this function handles changes only for serviceType, and is only called if the service is known to already exist. If port-changing is supported in the future, either this function or its caller must take care of possibly transitioning to and from the "no ports" state which will involve deleting or creating the service object rather than just modifying.
func UpdateService ¶ added in v0.3.0
UpdateService updates a service
func UpdateStatefulSetNonReplicas ¶
func UpdateStatefulSetNonReplicas( cr *kdv1.KubeDirectorCluster, role *kdv1.Role, statefulSet *appsv1.StatefulSet, ) error
UpdateStatefulSetNonReplicas examines a current statefulset in k8s and may take steps to reconcile it to the desired spec, for properties other than the replicas count.
func UpdateStatefulSetReplicas ¶
func UpdateStatefulSetReplicas( reqLogger logr.Logger, cr *kdv1.KubeDirectorCluster, replicas int32, statefulSet *appsv1.StatefulSet, ) error
UpdateStatefulSetReplicas modifies an existing statefulset in k8s to have the given number of replicas.