const kubeControllerManagerBindAddressArg … const kubeSchedulerBindAddressArg … var usersAndGroups … var usersAndGroupsOnce … // ComponentPod returns a Pod object from the container, volume and annotations specifications func ComponentPod(container v1.Container, volumes map[string]v1.Volume, annotations map[string]string) v1.Pod { … } // ComponentResources returns the v1.ResourceRequirements object needed for allocating a specified amount of the CPU func ComponentResources(cpu string) v1.ResourceRequirements { … } // NewVolume creates a v1.Volume with a hostPath mount to the specified location func NewVolume(name, path string, pathType *v1.HostPathType) v1.Volume { … } // NewVolumeMount creates a v1.VolumeMount to the specified location func NewVolumeMount(name, path string, readOnly bool) v1.VolumeMount { … } // VolumeMapToSlice returns a slice of volumes from a map's values func VolumeMapToSlice(volumes map[string]v1.Volume) []v1.Volume { … } // VolumeMountMapToSlice returns a slice of volumes from a map's values func VolumeMountMapToSlice(volumeMounts map[string]v1.VolumeMount) []v1.VolumeMount { … } // PatchStaticPod applies patches stored in patchesDir to a static Pod. func PatchStaticPod(pod *v1.Pod, patchesDir string, output io.Writer) (*v1.Pod, error) { … } // WriteStaticPodToDisk writes a static pod file to disk func WriteStaticPodToDisk(componentName, manifestDir string, pod v1.Pod) error { … } // ReadStaticPodFromDisk reads a static pod file from disk func ReadStaticPodFromDisk(manifestPath string) (*v1.Pod, error) { … } // LivenessProbe creates a Probe object with a HTTPGet handler func LivenessProbe(host, path string, port int32, scheme v1.URIScheme) *v1.Probe { … } // ReadinessProbe creates a Probe object with a HTTPGet handler func ReadinessProbe(host, path string, port int32, scheme v1.URIScheme) *v1.Probe { … } // StartupProbe creates a Probe object with a HTTPGet handler func StartupProbe(host, path string, port int32, scheme v1.URIScheme, timeoutForControlPlane *metav1.Duration) *v1.Probe { … } func createHTTPProbe(host, path string, port int32, scheme v1.URIScheme, initialDelaySeconds, timeoutSeconds, failureThreshold, periodSeconds int32) *v1.Probe { … } // GetAPIServerProbeAddress returns the probe address for the API server func GetAPIServerProbeAddress(endpoint *kubeadmapi.APIEndpoint) string { … } // GetControllerManagerProbeAddress returns the kubernetes controller manager probe address func GetControllerManagerProbeAddress(cfg *kubeadmapi.ClusterConfiguration) string { … } // GetSchedulerProbeAddress returns the kubernetes scheduler probe address func GetSchedulerProbeAddress(cfg *kubeadmapi.ClusterConfiguration) string { … } // GetEtcdProbeEndpoint takes a kubeadm Etcd configuration object and attempts to parse // the first URL in the listen-metrics-urls argument, returning an etcd probe hostname, // port and scheme func GetEtcdProbeEndpoint(cfg *kubeadmapi.Etcd, isIPv6 bool) (string, int32, v1.URIScheme) { … } // ManifestFilesAreEqual compares 2 files. It returns true if their contents are equal, false otherwise func ManifestFilesAreEqual(path1, path2 string) (bool, string, error) { … } // getProbeAddress returns a valid probe address. // Kubeadm uses the bind-address to configure the probe address. It's common to use the // unspecified address "0.0.0.0" or "::" as bind-address when we want to listen in all interfaces, // however this address can't be used as probe #86504. // If the address is an unspecified address getProbeAddress returns empty, // that means that kubelet will use the PodIP as probe address. func getProbeAddress(addr string) string { … } // GetUsersAndGroups returns the local usersAndGroups, but first creates it // in a thread safe way once. func GetUsersAndGroups() (*users.UsersAndGroups, error) { … } // DeepHashObject writes specified object to hash using the spew library // which follows pointers and prints actual values of the nested objects // ensuring the hash does not change when a pointer changes. // Copied from k8s.io/kubernetes/pkg/util/hash/hash.go#DeepHashObject func DeepHashObject(hasher hash.Hash, objectToWrite interface{ … }