code: func (w *worker) run() {
  	probeTickerPeriod := time.Duration(w.spec.PeriodSeconds) * time.Second
  
  	// If kubelet restarted the probes could be started in rapid succession.
  	// Let the worker wait for a random portion of tickerPeriod before probing.
  	time.Sleep(time.Duration(rand.Float64() * float64(probeTickerPeriod)))
  
  	probeTicker := time.NewTicker(probeTickerPeriod)
  
  	defer func() {
  		// Clean up.
  		probeTicker.Stop()
  		if !w.containerID.IsEmpty() {
  			w.resultsManager.Remove(w.containerID)
  		}
  
  		w.probeManager.removeWorker(w.pod.UID, w.container.Name, w.probeType)
  		ProberResults.Delete(w.proberResultsSuccessfulMetricLabels)
  		ProberResults.Delete(w.proberResultsFailedMetricLabels)
  		ProberResults.Delete(w.proberResultsUnknownMetricLabels)
  	}()
  
  probeLoop:
  	for w.doProbe() {
  		// Wait for next probe tick.
  		select {
  		case <-w.stopCh:
  			break probeLoop
  		case <-probeTicker.C:
  			// continue
  		}
  	}
  }
docs: // run periodically probes the container.