func IsTimeout(err error) bool {
	err = errors.Cause(err)
	_, ok := err.(interface {
		Timeout()
	})
	return ok
}
IsTimeout returns true if the supplied error was caused by a timeout.
package kubernetes
import (
	"fmt"
	"time"
	"github.com/pkg/errors"
	"go.uber.org/zap"
	core "k8s.io/api/core/v1"
	policy "k8s.io/api/policy/v1beta1"
	apierrors "k8s.io/apimachinery/pkg/api/errors"
	meta "k8s.io/apimachinery/pkg/apis/meta/v1"
	"k8s.io/apimachinery/pkg/fields"
	"k8s.io/apimachinery/pkg/util/wait"
	"k8s.io/client-go/kubernetes"
)
const (
	DefaultMaxGracePeriod   time.Duration = 8 * time.Minute
	DefaultEvictionOverhead time.Duration = 30 * time.Second
	kindDaemonSet   = "DaemonSet"
	kindStatefulSet = "StatefulSet"
	ConditionDrainedScheduled = "DrainScheduled"
	DefaultSkipDrain          = false
)
type nodeMutatorFn func(*core.Node)
type errTimeout struct{}
func (e errTimeout) Error() string {
	return "timed out"
}
func (e errTimeout) Timeout() {}