selfhosting

package
v0.9.0 Latest Latest
Warning

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

Go to latest
Published: Jun 23, 2020 License: Apache-2.0 Imports: 19 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func BuildDaemonSet

func BuildDaemonSet(name string, podSpec *v1.PodSpec, mutators map[string][]PodSpecMutatorFunc) *apps.DaemonSet

BuildDaemonSet is responsible for mutating the PodSpec and returns a DaemonSet which is suitable for self-hosting

func BuildSelfHostedComponentLabelQuery

func BuildSelfHostedComponentLabelQuery(componentName string) string

BuildSelfHostedComponentLabelQuery creates the right query for matching a self-hosted Pod

func BuildSelfhostedComponentLabels

func BuildSelfhostedComponentLabels(component string) map[string]string

BuildSelfhostedComponentLabels returns the labels for a self-hosted component

func CreateSelfHostedControlPlane

func CreateSelfHostedControlPlane(manifestsDir, kubeConfigDir string, cfg *kubeadmapi.InitConfiguration, client clientset.Interface, waiter apiclient.Waiter, dryRun bool) error

CreateSelfHostedControlPlane is responsible for turning a Static Pod-hosted control plane to a self-hosted one It achieves that task this way:

  1. Load the Static Pod specification from disk (from /etc/kubernetes/manifests)
  2. Extract the PodSpec from that Static Pod specification
  3. Mutate the PodSpec to be compatible with self-hosting (add the right labels, taints, etc. so it can schedule correctly)
  4. Build a new DaemonSet object for the self-hosted component in question. Use the above mentioned PodSpec
  5. Create the DaemonSet resource. Wait until the Pods are running.
  6. Remove the Static Pod manifest file. The kubelet will stop the original Static Pod-hosted component that was running.
  7. The self-hosted containers should now step up and take over.
  8. In order to avoid race conditions, we have to make sure that static pod is deleted correctly before we continue Otherwise, there is a race condition when we proceed without kubelet having restarted the API server correctly and the next .Create call flakes
  9. Do that for the kube-apiserver, kube-controller-manager and kube-scheduler in a loop

func GetDefaultMutators

func GetDefaultMutators() map[string][]PodSpecMutatorFunc

GetDefaultMutators gets the mutator functions that always should be used

func GetMutatorsFromFeatureGates

func GetMutatorsFromFeatureGates(featureGates map[string]bool) map[string][]PodSpecMutatorFunc

GetMutatorsFromFeatureGates returns all mutators needed based on the feature gates passed

Types

type PodSpecMutatorFunc

type PodSpecMutatorFunc func(*v1.PodSpec)

PodSpecMutatorFunc is a function capable of mutating a PodSpec

Jump to

Keyboard shortcuts

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