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