mirror of
				https://github.com/k3s-io/kubernetes.git
				synced 2025-10-31 05:40:42 +00:00 
			
		
		
		
	Update cadvisor to 6116f265302357cbb10f84737af30b1f13ce2d6c
Signed-off-by: Lantao Liu <lantaol@google.com>
This commit is contained in:
		
							
								
								
									
										53
									
								
								vendor/github.com/google/cadvisor/container/containerd/client.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										53
									
								
								vendor/github.com/google/cadvisor/container/containerd/client.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -16,6 +16,7 @@ package containerd | ||||
|  | ||||
| import ( | ||||
| 	"context" | ||||
| 	"sync" | ||||
| 	"time" | ||||
|  | ||||
| 	containersapi "github.com/containerd/containerd/api/services/containers/v1" | ||||
| @@ -45,32 +46,38 @@ type containerdClient interface { | ||||
| 	Version(ctx context.Context) (string, error) | ||||
| } | ||||
|  | ||||
| var once sync.Once | ||||
| var ctrdClient containerdClient = nil | ||||
|  | ||||
| // Client creates a containerd client | ||||
| func Client() (containerdClient, error) { | ||||
| 	gopts := []grpc.DialOption{ | ||||
| 		grpc.WithInsecure(), | ||||
| 		grpc.FailOnNonTempDialError(true), | ||||
| 		grpc.WithDialer(dialer.Dialer), | ||||
| 		grpc.WithBlock(), | ||||
| 		grpc.WithTimeout(2 * time.Second), | ||||
| 		grpc.WithBackoffMaxDelay(3 * time.Second), | ||||
| 	} | ||||
| 	unary, stream := newNSInterceptors(k8sNamespace) | ||||
| 	gopts = append(gopts, | ||||
| 		grpc.WithUnaryInterceptor(unary), | ||||
| 		grpc.WithStreamInterceptor(stream), | ||||
| 	) | ||||
| 	var retErr error | ||||
| 	once.Do(func() { | ||||
| 		gopts := []grpc.DialOption{ | ||||
| 			grpc.WithInsecure(), | ||||
| 			grpc.WithDialer(dialer.Dialer), | ||||
| 			grpc.WithBlock(), | ||||
| 			grpc.WithTimeout(2 * time.Second), | ||||
| 			grpc.WithBackoffMaxDelay(3 * time.Second), | ||||
| 		} | ||||
| 		unary, stream := newNSInterceptors(k8sNamespace) | ||||
| 		gopts = append(gopts, | ||||
| 			grpc.WithUnaryInterceptor(unary), | ||||
| 			grpc.WithStreamInterceptor(stream), | ||||
| 		) | ||||
|  | ||||
| 	conn, err := grpc.Dial(dialer.DialAddress("/var/run/containerd/containerd.sock"), gopts...) | ||||
| 	if err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
| 	c := &client{ | ||||
| 		containerService: containersapi.NewContainersClient(conn), | ||||
| 		taskService:      tasksapi.NewTasksClient(conn), | ||||
| 		versionService:   versionapi.NewVersionClient(conn), | ||||
| 	} | ||||
| 	return c, err | ||||
| 		conn, err := grpc.Dial(dialer.DialAddress("/var/run/containerd/containerd.sock"), gopts...) | ||||
| 		if err != nil { | ||||
| 			retErr = err | ||||
| 			return | ||||
| 		} | ||||
| 		ctrdClient = &client{ | ||||
| 			containerService: containersapi.NewContainersClient(conn), | ||||
| 			taskService:      tasksapi.NewTasksClient(conn), | ||||
| 			versionService:   versionapi.NewVersionClient(conn), | ||||
| 		} | ||||
| 	}) | ||||
| 	return ctrdClient, retErr | ||||
| } | ||||
|  | ||||
| func (c *client) LoadContainer(ctx context.Context, id string) (*containers.Container, error) { | ||||
|   | ||||
							
								
								
									
										14
									
								
								vendor/github.com/google/cadvisor/container/docker/docker.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										14
									
								
								vendor/github.com/google/cadvisor/container/docker/docker.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -29,19 +29,27 @@ import ( | ||||
| 	"github.com/google/cadvisor/machine" | ||||
| ) | ||||
|  | ||||
| const defaultTimeout = time.Second * 5 | ||||
| var dockerTimeout = 10 * time.Second | ||||
|  | ||||
| func defaultContext() context.Context { | ||||
| 	ctx, _ := context.WithTimeout(context.Background(), defaultTimeout) | ||||
| 	ctx, _ := context.WithTimeout(context.Background(), dockerTimeout) | ||||
| 	return ctx | ||||
| } | ||||
|  | ||||
| func SetTimeout(timeout time.Duration) { | ||||
| 	dockerTimeout = timeout | ||||
| } | ||||
|  | ||||
| func Status() (v1.DockerStatus, error) { | ||||
| 	return StatusWithContext(defaultContext()) | ||||
| } | ||||
|  | ||||
| func StatusWithContext(ctx context.Context) (v1.DockerStatus, error) { | ||||
| 	client, err := Client() | ||||
| 	if err != nil { | ||||
| 		return v1.DockerStatus{}, fmt.Errorf("unable to communicate with docker daemon: %v", err) | ||||
| 	} | ||||
| 	dockerInfo, err := client.Info(defaultContext()) | ||||
| 	dockerInfo, err := client.Info(ctx) | ||||
| 	if err != nil { | ||||
| 		return v1.DockerStatus{}, err | ||||
| 	} | ||||
|   | ||||
							
								
								
									
										3
									
								
								vendor/github.com/google/cadvisor/container/docker/handler.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								vendor/github.com/google/cadvisor/container/docker/handler.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -44,6 +44,7 @@ import ( | ||||
| const ( | ||||
| 	// The read write layers exist here. | ||||
| 	aufsRWLayer     = "diff" | ||||
| 	overlayRWLayer  = "upper" | ||||
| 	overlay2RWLayer = "diff" | ||||
|  | ||||
| 	// Path to the directory where docker stores log files if the json logging driver is enabled. | ||||
| @@ -197,7 +198,7 @@ func newDockerContainerHandler( | ||||
| 	case aufsStorageDriver: | ||||
| 		rootfsStorageDir = path.Join(storageDir, string(aufsStorageDriver), aufsRWLayer, rwLayerID) | ||||
| 	case overlayStorageDriver: | ||||
| 		rootfsStorageDir = path.Join(storageDir, string(storageDriver), rwLayerID) | ||||
| 		rootfsStorageDir = path.Join(storageDir, string(storageDriver), rwLayerID, overlayRWLayer) | ||||
| 	case overlay2StorageDriver: | ||||
| 		rootfsStorageDir = path.Join(storageDir, string(storageDriver), rwLayerID, overlay2RWLayer) | ||||
| 	case zfsStorageDriver: | ||||
|   | ||||
							
								
								
									
										4
									
								
								vendor/github.com/google/cadvisor/fs/fs.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								vendor/github.com/google/cadvisor/fs/fs.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -114,7 +114,9 @@ func NewFsInfo(context Context) (FsInfo, error) { | ||||
|  | ||||
| 	fsUUIDToDeviceName, err := getFsUUIDToDeviceNameMap() | ||||
| 	if err != nil { | ||||
| 		return nil, err | ||||
| 		// UUID is not always avaiable across different OS distributions. | ||||
| 		// Do not fail if there is an error. | ||||
| 		glog.Warningf("Failed to get disk UUID mapping, getting disk info by uuid will not work: %v", err) | ||||
| 	} | ||||
|  | ||||
| 	// Avoid devicemapper container mounts - these are tracked by the ThinPoolWatcher | ||||
|   | ||||
							
								
								
									
										1
									
								
								vendor/github.com/google/cadvisor/manager/BUILD
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/github.com/google/cadvisor/manager/BUILD
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -35,6 +35,7 @@ go_library( | ||||
|         "//vendor/github.com/google/cadvisor/utils/sysfs:go_default_library", | ||||
|         "//vendor/github.com/google/cadvisor/version:go_default_library", | ||||
|         "//vendor/github.com/opencontainers/runc/libcontainer/cgroups:go_default_library", | ||||
|         "//vendor/golang.org/x/net/context:go_default_library", | ||||
|         "//vendor/k8s.io/utils/clock:go_default_library", | ||||
|     ], | ||||
| ) | ||||
|   | ||||
							
								
								
									
										2
									
								
								vendor/github.com/google/cadvisor/manager/container.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								vendor/github.com/google/cadvisor/manager/container.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -504,7 +504,7 @@ func (c *containerData) housekeepingTick(timer <-chan time.Time, longHousekeepin | ||||
| 	err := c.updateStats() | ||||
| 	if err != nil { | ||||
| 		if c.allowErrorLogging() { | ||||
| 			glog.Warning("Failed to update stats for container \"%s\": %s", c.info.Name, err) | ||||
| 			glog.Warningf("Failed to update stats for container \"%s\": %s", c.info.Name, err) | ||||
| 		} | ||||
| 	} | ||||
| 	// Log if housekeeping took too long. | ||||
|   | ||||
							
								
								
									
										37
									
								
								vendor/github.com/google/cadvisor/manager/manager.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										37
									
								
								vendor/github.com/google/cadvisor/manager/manager.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -50,6 +50,7 @@ import ( | ||||
|  | ||||
| 	"github.com/golang/glog" | ||||
| 	"github.com/opencontainers/runc/libcontainer/cgroups" | ||||
| 	"golang.org/x/net/context" | ||||
| 	"k8s.io/utils/clock" | ||||
| ) | ||||
|  | ||||
| @@ -59,6 +60,8 @@ var eventStorageAgeLimit = flag.String("event_storage_age_limit", "default=24h", | ||||
| var eventStorageEventLimit = flag.String("event_storage_event_limit", "default=100000", "Max number of events to store (per type). Value is a comma separated list of key values, where the keys are event types (e.g.: creation, oom) or \"default\" and the value is an integer. Default is applied to all non-specified event types") | ||||
| var applicationMetricsCountLimit = flag.Int("application_metrics_count_limit", 100, "Max number of application metrics to store (per container)") | ||||
|  | ||||
| const dockerClientTimeout = 10 * time.Second | ||||
|  | ||||
| // The Manager interface defines operations for starting a manager and getting | ||||
| // container and machine information. | ||||
| type Manager interface { | ||||
| @@ -154,11 +157,10 @@ func New(memoryCache *memory.InMemoryCache, sysfs sysfs.SysFs, maxHousekeepingIn | ||||
| 		dockerStatus info.DockerStatus | ||||
| 		rktPath      string | ||||
| 	) | ||||
| 	if tempDockerStatus, err := docker.Status(); err != nil { | ||||
| 		glog.V(5).Infof("Docker not connected: %v", err) | ||||
| 	} else { | ||||
| 		dockerStatus = tempDockerStatus | ||||
| 	} | ||||
| 	docker.SetTimeout(dockerClientTimeout) | ||||
| 	// Try to connect to docker indefinitely on startup. | ||||
| 	dockerStatus = retryDockerStatus() | ||||
|  | ||||
| 	if tmpRktPath, err := rkt.RktPath(); err != nil { | ||||
| 		glog.V(5).Infof("Rkt not connected: %v", err) | ||||
| 	} else { | ||||
| @@ -234,6 +236,31 @@ func New(memoryCache *memory.InMemoryCache, sysfs sysfs.SysFs, maxHousekeepingIn | ||||
| 	return newManager, nil | ||||
| } | ||||
|  | ||||
| func retryDockerStatus() info.DockerStatus { | ||||
| 	startupTimeout := dockerClientTimeout | ||||
| 	maxTimeout := 4 * startupTimeout | ||||
| 	for { | ||||
| 		ctx, _ := context.WithTimeout(context.Background(), startupTimeout) | ||||
| 		dockerStatus, err := docker.StatusWithContext(ctx) | ||||
| 		if err != nil { | ||||
| 			return dockerStatus | ||||
| 		} | ||||
|  | ||||
| 		switch err { | ||||
| 		case context.DeadlineExceeded: | ||||
| 			glog.Warningf("Timeout trying to communicate with docker during initialization, will retry") | ||||
| 		default: | ||||
| 			glog.V(5).Infof("Docker not connected: %v", err) | ||||
| 			return info.DockerStatus{} | ||||
| 		} | ||||
|  | ||||
| 		startupTimeout = 2 * startupTimeout | ||||
| 		if startupTimeout > maxTimeout { | ||||
| 			startupTimeout = maxTimeout | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
|  | ||||
| // A namespaced container name. | ||||
| type namespacedContainerName struct { | ||||
| 	// The namespace of the container. Can be empty for the root namespace. | ||||
|   | ||||
		Reference in New Issue
	
	Block a user