mirror of
				https://github.com/optim-enterprises-bv/kubernetes.git
				synced 2025-11-04 04:08:16 +00:00 
			
		
		
		
	Start synchronizing pods after network is ready.
This commit is contained in:
		@@ -11,6 +11,7 @@ go_library(
 | 
			
		||||
    srcs = [
 | 
			
		||||
        "active_deadline.go",
 | 
			
		||||
        "doc.go",
 | 
			
		||||
        "errors.go",
 | 
			
		||||
        "kubelet.go",
 | 
			
		||||
        "kubelet_getters.go",
 | 
			
		||||
        "kubelet_network.go",
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										21
									
								
								pkg/kubelet/errors.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								pkg/kubelet/errors.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,21 @@
 | 
			
		||||
/*
 | 
			
		||||
Copyright 2018 The Kubernetes Authors.
 | 
			
		||||
 | 
			
		||||
Licensed under the Apache License, Version 2.0 (the "License");
 | 
			
		||||
you may not use this file except in compliance with the License.
 | 
			
		||||
You may obtain a copy of the License at
 | 
			
		||||
 | 
			
		||||
    http://www.apache.org/licenses/LICENSE-2.0
 | 
			
		||||
 | 
			
		||||
Unless required by applicable law or agreed to in writing, software
 | 
			
		||||
distributed under the License is distributed on an "AS IS" BASIS,
 | 
			
		||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
			
		||||
See the License for the specific language governing permissions and
 | 
			
		||||
limitations under the License.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
package kubelet
 | 
			
		||||
 | 
			
		||||
const (
 | 
			
		||||
	NetworkNotReadyErrorMsg = "network is not ready"
 | 
			
		||||
)
 | 
			
		||||
@@ -1561,8 +1561,8 @@ func (kl *Kubelet) syncPod(o syncPodOptions) error {
 | 
			
		||||
 | 
			
		||||
	// If the network plugin is not ready, only start the pod if it uses the host network
 | 
			
		||||
	if rs := kl.runtimeState.networkErrors(); len(rs) != 0 && !kubecontainer.IsHostNetworkPod(pod) {
 | 
			
		||||
		kl.recorder.Eventf(pod, v1.EventTypeWarning, events.NetworkNotReady, "network is not ready: %v", rs)
 | 
			
		||||
		return fmt.Errorf("network is not ready: %v", rs)
 | 
			
		||||
		kl.recorder.Eventf(pod, v1.EventTypeWarning, events.NetworkNotReady, "%s: %v", NetworkNotReadyErrorMsg, rs)
 | 
			
		||||
		return fmt.Errorf("%s: %v", NetworkNotReadyErrorMsg, rs)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// Create Cgroups for the pod and apply resource parameters
 | 
			
		||||
 
 | 
			
		||||
@@ -18,6 +18,7 @@ package kubelet
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"fmt"
 | 
			
		||||
	"strings"
 | 
			
		||||
	"sync"
 | 
			
		||||
	"time"
 | 
			
		||||
 | 
			
		||||
@@ -96,8 +97,11 @@ const (
 | 
			
		||||
	// jitter factor for resyncInterval
 | 
			
		||||
	workerResyncIntervalJitterFactor = 0.5
 | 
			
		||||
 | 
			
		||||
	// jitter factor for backOffPeriod
 | 
			
		||||
	// jitter factor for backOffPeriod and backOffOnTransientErrorPeriod
 | 
			
		||||
	workerBackOffPeriodJitterFactor = 0.5
 | 
			
		||||
 | 
			
		||||
	// backoff period when transient error occurred.
 | 
			
		||||
	backOffOnTransientErrorPeriod = time.Second
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
type podWorkers struct {
 | 
			
		||||
@@ -263,6 +267,9 @@ func (p *podWorkers) wrapUp(uid types.UID, syncErr error) {
 | 
			
		||||
	case syncErr == nil:
 | 
			
		||||
		// No error; requeue at the regular resync interval.
 | 
			
		||||
		p.workQueue.Enqueue(uid, wait.Jitter(p.resyncInterval, workerResyncIntervalJitterFactor))
 | 
			
		||||
	case strings.Contains(syncErr.Error(), NetworkNotReadyErrorMsg):
 | 
			
		||||
		// Network is not ready; back off for short period of time and retry as network might be ready soon.
 | 
			
		||||
		p.workQueue.Enqueue(uid, wait.Jitter(backOffOnTransientErrorPeriod, workerBackOffPeriodJitterFactor))
 | 
			
		||||
	default:
 | 
			
		||||
		// Error occurred during the sync; back off and then retry.
 | 
			
		||||
		p.workQueue.Enqueue(uid, wait.Jitter(p.backOffPeriod, workerBackOffPeriodJitterFactor))
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user