mirror of
				https://github.com/k3s-io/kubernetes.git
				synced 2025-10-30 21:30:16 +00:00 
			
		
		
		
	kubeadm: Remove .ImagePullPolicy
This commit is contained in:
		| @@ -97,9 +97,6 @@ type MasterConfiguration struct { | ||||
| 	// CertificatesDir specifies where to store or look for all required certificates. | ||||
| 	CertificatesDir string | ||||
|  | ||||
| 	// ImagePullPolicy for control plane images. Can be Always, IfNotPresent or Never. | ||||
| 	ImagePullPolicy v1.PullPolicy | ||||
|  | ||||
| 	// ImageRepository is the container registry to pull control plane images from. | ||||
| 	ImageRepository string | ||||
|  | ||||
|   | ||||
| @@ -42,6 +42,7 @@ func Convert_v1alpha1_MasterConfiguration_To_kubeadm_MasterConfiguration(in *Mas | ||||
|  | ||||
| 	UpgradeCloudProvider(in, out) | ||||
| 	// We don't support migrating information from the .PrivilegedPods field which was removed in v1alpha2 | ||||
| 	// We don't support migrating information from the .ImagePullPolicy field which was removed in v1alpha2 | ||||
|  | ||||
| 	return nil | ||||
| } | ||||
|   | ||||
| @@ -247,7 +247,7 @@ func autoConvert_v1alpha1_MasterConfiguration_To_kubeadm_MasterConfiguration(in | ||||
| 	out.APIServerCertSANs = *(*[]string)(unsafe.Pointer(&in.APIServerCertSANs)) | ||||
| 	out.CertificatesDir = in.CertificatesDir | ||||
| 	out.ImageRepository = in.ImageRepository | ||||
| 	out.ImagePullPolicy = v1.PullPolicy(in.ImagePullPolicy) | ||||
| 	// WARNING: in.ImagePullPolicy requires manual conversion: does not exist in peer-type | ||||
| 	out.UnifiedControlPlaneImage = in.UnifiedControlPlaneImage | ||||
| 	if err := Convert_v1alpha1_AuditPolicyConfiguration_To_kubeadm_AuditPolicyConfiguration(&in.AuditPolicyConfiguration, &out.AuditPolicyConfiguration, s); err != nil { | ||||
| 		return err | ||||
| @@ -290,7 +290,6 @@ func autoConvert_kubeadm_MasterConfiguration_To_v1alpha1_MasterConfiguration(in | ||||
| 	out.SchedulerExtraVolumes = *(*[]HostPathMount)(unsafe.Pointer(&in.SchedulerExtraVolumes)) | ||||
| 	out.APIServerCertSANs = *(*[]string)(unsafe.Pointer(&in.APIServerCertSANs)) | ||||
| 	out.CertificatesDir = in.CertificatesDir | ||||
| 	out.ImagePullPolicy = v1.PullPolicy(in.ImagePullPolicy) | ||||
| 	out.ImageRepository = in.ImageRepository | ||||
| 	// INFO: in.CIImageRepository opted out of conversion generation | ||||
| 	out.UnifiedControlPlaneImage = in.UnifiedControlPlaneImage | ||||
|   | ||||
| @@ -98,8 +98,6 @@ type MasterConfiguration struct { | ||||
|  | ||||
| 	// ImageRepository what container registry to pull control plane images from | ||||
| 	ImageRepository string `json:"imageRepository"` | ||||
| 	// ImagePullPolicy that control plane images. Can be Always, IfNotPresent or Never. | ||||
| 	ImagePullPolicy v1.PullPolicy `json:"imagePullPolicy,omitempty"` | ||||
| 	// UnifiedControlPlaneImage specifies if a specific container image should | ||||
| 	// be used for all control plane components. | ||||
| 	UnifiedControlPlaneImage string `json:"unifiedControlPlaneImage"` | ||||
|   | ||||
| @@ -249,7 +249,6 @@ func autoConvert_v1alpha2_MasterConfiguration_To_kubeadm_MasterConfiguration(in | ||||
| 	out.APIServerCertSANs = *(*[]string)(unsafe.Pointer(&in.APIServerCertSANs)) | ||||
| 	out.CertificatesDir = in.CertificatesDir | ||||
| 	out.ImageRepository = in.ImageRepository | ||||
| 	out.ImagePullPolicy = v1.PullPolicy(in.ImagePullPolicy) | ||||
| 	out.UnifiedControlPlaneImage = in.UnifiedControlPlaneImage | ||||
| 	if err := Convert_v1alpha2_AuditPolicyConfiguration_To_kubeadm_AuditPolicyConfiguration(&in.AuditPolicyConfiguration, &out.AuditPolicyConfiguration, s); err != nil { | ||||
| 		return err | ||||
| @@ -297,7 +296,6 @@ func autoConvert_kubeadm_MasterConfiguration_To_v1alpha2_MasterConfiguration(in | ||||
| 	out.SchedulerExtraVolumes = *(*[]HostPathMount)(unsafe.Pointer(&in.SchedulerExtraVolumes)) | ||||
| 	out.APIServerCertSANs = *(*[]string)(unsafe.Pointer(&in.APIServerCertSANs)) | ||||
| 	out.CertificatesDir = in.CertificatesDir | ||||
| 	out.ImagePullPolicy = v1.PullPolicy(in.ImagePullPolicy) | ||||
| 	out.ImageRepository = in.ImageRepository | ||||
| 	// INFO: in.CIImageRepository opted out of conversion generation | ||||
| 	out.UnifiedControlPlaneImage = in.UnifiedControlPlaneImage | ||||
|   | ||||
| @@ -31,7 +31,6 @@ import ( | ||||
| 	"github.com/spf13/cobra" | ||||
| 	flag "github.com/spf13/pflag" | ||||
|  | ||||
| 	"k8s.io/api/core/v1" | ||||
| 	"k8s.io/apimachinery/pkg/util/sets" | ||||
| 	clientset "k8s.io/client-go/kubernetes" | ||||
| 	kubeadmapi "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm" | ||||
| @@ -92,12 +91,13 @@ var ( | ||||
| 		This error is likely caused by: | ||||
| 			- The kubelet is not running | ||||
| 			- The kubelet is unhealthy due to a misconfiguration of the node in some way (required cgroups disabled) | ||||
| 			- Either there is no internet connection, or imagePullPolicy is set to "Never", | ||||
| 			  so the kubelet cannot pull or find the following control plane images: | ||||
| 			- No internet connection is available so the kubelet cannot pull or find the following control plane images: | ||||
| 				- {{ .APIServerImage }} | ||||
| 				- {{ .ControllerManagerImage }} | ||||
| 				- {{ .SchedulerImage }} | ||||
| 				- {{ .EtcdImage }} (only if no external etcd endpoints are configured) | ||||
| 				- You can check or miligate this in beforehand with "kubeadm config images pull" to make sure the images | ||||
| 				  are downloaded locally and cached. | ||||
|  | ||||
| 		If you are on a systemd-powered system, you can try to troubleshoot the error with the following commands: | ||||
| 			- 'systemctl status kubelet' | ||||
| @@ -538,12 +538,9 @@ func getWaiter(i *Init, client clientset.Interface) apiclient.Waiter { | ||||
| 		return dryrunutil.NewWaiter() | ||||
| 	} | ||||
|  | ||||
| 	// TODO: List images locally using `crictl` and pull in preflight checks if not available | ||||
| 	// When we do that, we can always assume the images exist at this point and have a shorter timeout. | ||||
| 	timeout := 30 * time.Minute | ||||
|  | ||||
| 	// No need for a large timeout if we don't expect downloads | ||||
| 	if i.cfg.ImagePullPolicy == v1.PullNever { | ||||
| 		timeout = 60 * time.Second | ||||
| 	} | ||||
| 	return apiclient.NewKubeWaiter(client, timeout, os.Stdout) | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -76,7 +76,7 @@ func GetStaticPodSpecs(cfg *kubeadmapi.MasterConfiguration, k8sVersion *version. | ||||
| 		kubeadmconstants.KubeAPIServer: staticpodutil.ComponentPod(v1.Container{ | ||||
| 			Name:            kubeadmconstants.KubeAPIServer, | ||||
| 			Image:           images.GetCoreImage(kubeadmconstants.KubeAPIServer, cfg.GetControlPlaneImageRepository(), cfg.KubernetesVersion, cfg.UnifiedControlPlaneImage), | ||||
| 			ImagePullPolicy: cfg.ImagePullPolicy, | ||||
| 			ImagePullPolicy: v1.PullIfNotPresent, | ||||
| 			Command:         getAPIServerCommand(cfg), | ||||
| 			VolumeMounts:    staticpodutil.VolumeMountMapToSlice(mounts.GetVolumeMounts(kubeadmconstants.KubeAPIServer)), | ||||
| 			LivenessProbe:   staticpodutil.ComponentProbe(cfg, kubeadmconstants.KubeAPIServer, int(cfg.API.BindPort), "/healthz", v1.URISchemeHTTPS), | ||||
| @@ -86,7 +86,7 @@ func GetStaticPodSpecs(cfg *kubeadmapi.MasterConfiguration, k8sVersion *version. | ||||
| 		kubeadmconstants.KubeControllerManager: staticpodutil.ComponentPod(v1.Container{ | ||||
| 			Name:            kubeadmconstants.KubeControllerManager, | ||||
| 			Image:           images.GetCoreImage(kubeadmconstants.KubeControllerManager, cfg.GetControlPlaneImageRepository(), cfg.KubernetesVersion, cfg.UnifiedControlPlaneImage), | ||||
| 			ImagePullPolicy: cfg.ImagePullPolicy, | ||||
| 			ImagePullPolicy: v1.PullIfNotPresent, | ||||
| 			Command:         getControllerManagerCommand(cfg, k8sVersion), | ||||
| 			VolumeMounts:    staticpodutil.VolumeMountMapToSlice(mounts.GetVolumeMounts(kubeadmconstants.KubeControllerManager)), | ||||
| 			LivenessProbe:   staticpodutil.ComponentProbe(cfg, kubeadmconstants.KubeControllerManager, 10252, "/healthz", v1.URISchemeHTTP), | ||||
| @@ -96,7 +96,7 @@ func GetStaticPodSpecs(cfg *kubeadmapi.MasterConfiguration, k8sVersion *version. | ||||
| 		kubeadmconstants.KubeScheduler: staticpodutil.ComponentPod(v1.Container{ | ||||
| 			Name:            kubeadmconstants.KubeScheduler, | ||||
| 			Image:           images.GetCoreImage(kubeadmconstants.KubeScheduler, cfg.GetControlPlaneImageRepository(), cfg.KubernetesVersion, cfg.UnifiedControlPlaneImage), | ||||
| 			ImagePullPolicy: cfg.ImagePullPolicy, | ||||
| 			ImagePullPolicy: v1.PullIfNotPresent, | ||||
| 			Command:         getSchedulerCommand(cfg), | ||||
| 			VolumeMounts:    staticpodutil.VolumeMountMapToSlice(mounts.GetVolumeMounts(kubeadmconstants.KubeScheduler)), | ||||
| 			LivenessProbe:   staticpodutil.ComponentProbe(cfg, kubeadmconstants.KubeScheduler, 10251, "/healthz", v1.URISchemeHTTP), | ||||
|   | ||||
| @@ -61,7 +61,7 @@ func GetEtcdPodSpec(cfg *kubeadmapi.MasterConfiguration) v1.Pod { | ||||
| 		Name:            kubeadmconstants.Etcd, | ||||
| 		Command:         getEtcdCommand(cfg), | ||||
| 		Image:           images.GetCoreImage(kubeadmconstants.Etcd, cfg.ImageRepository, cfg.KubernetesVersion, cfg.Etcd.Image), | ||||
| 		ImagePullPolicy: cfg.ImagePullPolicy, | ||||
| 		ImagePullPolicy: v1.PullIfNotPresent, | ||||
| 		// Mount the etcd datadir path read-write so etcd can store data in a more persistent manner | ||||
| 		VolumeMounts: []v1.VolumeMount{ | ||||
| 			staticpodutil.NewVolumeMount(etcdVolumeName, cfg.Etcd.DataDir, false), | ||||
|   | ||||
| @@ -29,7 +29,6 @@ Etcd: | ||||
|   PeerCertSANs: null | ||||
|   ServerCertSANs: null | ||||
| FeatureGates: null | ||||
| ImagePullPolicy: "" | ||||
| ImageRepository: k8s.gcr.io | ||||
| KubeProxy: | ||||
|   Config: | ||||
|   | ||||
		Reference in New Issue
	
	Block a user