Merge pull request #124025 from saschagrunert/log-container-status
Continue streaming kubelet logs when runtime is unavailable
This commit is contained in:
		@@ -30,6 +30,8 @@ import (
 | 
				
			|||||||
	"time"
 | 
						"time"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"github.com/fsnotify/fsnotify"
 | 
						"github.com/fsnotify/fsnotify"
 | 
				
			||||||
 | 
						"google.golang.org/grpc/codes"
 | 
				
			||||||
 | 
						"google.golang.org/grpc/status"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	v1 "k8s.io/api/core/v1"
 | 
						v1 "k8s.io/api/core/v1"
 | 
				
			||||||
	internalapi "k8s.io/cri-api/pkg/apis"
 | 
						internalapi "k8s.io/cri-api/pkg/apis"
 | 
				
			||||||
@@ -422,6 +424,13 @@ func ReadLogs(ctx context.Context, logger *klog.Logger, path, containerID string
 | 
				
			|||||||
func isContainerRunning(ctx context.Context, logger *klog.Logger, id string, r internalapi.RuntimeService) (bool, error) {
 | 
					func isContainerRunning(ctx context.Context, logger *klog.Logger, id string, r internalapi.RuntimeService) (bool, error) {
 | 
				
			||||||
	resp, err := r.ContainerStatus(ctx, id, false)
 | 
						resp, err := r.ContainerStatus(ctx, id, false)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
 | 
							// Assume that the container is still running when the runtime is
 | 
				
			||||||
 | 
							// unavailable. Most runtimes support that containers can be in running
 | 
				
			||||||
 | 
							// state even if their CRI server is not available right now.
 | 
				
			||||||
 | 
							if status.Code(err) == codes.Unavailable {
 | 
				
			||||||
 | 
								return true, nil
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		return false, err
 | 
							return false, err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	status := resp.GetStatus()
 | 
						status := resp.GetStatus()
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user