code: func (kl *Kubelet) updateRuntimeUp() {
  	kl.updateRuntimeMux.Lock()
  	defer kl.updateRuntimeMux.Unlock()
  
  	s, err := kl.containerRuntime.Status()
  	if err != nil {
  		klog.Errorf("Container runtime sanity check failed: %v", err)
  		return
  	}
  	if s == nil {
  		klog.Errorf("Container runtime status is nil")
  		return
  	}
  	// Periodically log the whole runtime status for debugging.
  	// TODO(random-liu): Consider to send node event when optional
  	// condition is unmet.
  	klog.V(4).Infof("Container runtime status: %v", s)
  	networkReady := s.GetRuntimeCondition(kubecontainer.NetworkReady)
  	if networkReady == nil || !networkReady.Status {
  		klog.Errorf("Container runtime network not ready: %v", networkReady)
  		kl.runtimeState.setNetworkState(fmt.Errorf("runtime network not ready: %v", networkReady))
  	} else {
  		// Set nil if the container runtime network is ready.
  		kl.runtimeState.setNetworkState(nil)
  	}
  	// TODO(random-liu): Add runtime error in runtimeState, and update it
  	// when runtime is not ready, so that the information in RuntimeReady
  	// condition will be propagated to NodeReady condition.
  	runtimeReady := s.GetRuntimeCondition(kubecontainer.RuntimeReady)
  	// If RuntimeReady is not set or is false, report an error.
  	if runtimeReady == nil || !runtimeReady.Status {
  		klog.Errorf("Container runtime not ready: %v", runtimeReady)
  		return
  	}
  	kl.oneTimeInitializer.Do(kl.initializeRuntimeDependentModules)
  	kl.runtimeState.setRuntimeSync(kl.clock.Now())
  }
docs: // updateRuntimeUp calls the container runtime status callback, initializing
  // the runtime dependent modules when the container runtime first comes up,
  // and returns an error if the status check fails.  If the status check is OK,
  // update the container runtime uptime in the kubelet runtimeState.