mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-24 20:24:09 +00:00
Move kubelet secret and configmap manager calls to sync_Pod functions
This commit is contained in:
parent
be38633742
commit
085693eff2
@ -1598,6 +1598,16 @@ func (kl *Kubelet) syncPod(ctx context.Context, updateType kubetypes.SyncPodType
|
|||||||
return fmt.Errorf("%s: %v", NetworkNotReadyErrorMsg, err)
|
return fmt.Errorf("%s: %v", NetworkNotReadyErrorMsg, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ensure the kubelet knows about referenced secrets or configmaps used by the pod
|
||||||
|
if !kl.podWorkers.IsPodTerminationRequested(pod.UID) {
|
||||||
|
if kl.secretManager != nil {
|
||||||
|
kl.secretManager.RegisterPod(pod)
|
||||||
|
}
|
||||||
|
if kl.configMapManager != nil {
|
||||||
|
kl.configMapManager.RegisterPod(pod)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Create Cgroups for the pod and apply resource parameters
|
// Create Cgroups for the pod and apply resource parameters
|
||||||
// to them if cgroups-per-qos flag is enabled.
|
// to them if cgroups-per-qos flag is enabled.
|
||||||
pcm := kl.containerManager.NewPodContainerManager()
|
pcm := kl.containerManager.NewPodContainerManager()
|
||||||
@ -1827,6 +1837,14 @@ func (kl *Kubelet) syncTerminatedPod(ctx context.Context, pod *v1.Pod, podStatus
|
|||||||
}
|
}
|
||||||
klog.V(4).InfoS("Pod termination unmounted volumes", "pod", klog.KObj(pod), "podUID", pod.UID)
|
klog.V(4).InfoS("Pod termination unmounted volumes", "pod", klog.KObj(pod), "podUID", pod.UID)
|
||||||
|
|
||||||
|
// After volume unmount is complete, let the secret and configmap managers know we're done with this pod
|
||||||
|
if kl.secretManager != nil {
|
||||||
|
kl.secretManager.UnregisterPod(pod)
|
||||||
|
}
|
||||||
|
if kl.configMapManager != nil {
|
||||||
|
kl.configMapManager.UnregisterPod(pod)
|
||||||
|
}
|
||||||
|
|
||||||
// Note: we leave pod containers to be reclaimed in the background since dockershim requires the
|
// Note: we leave pod containers to be reclaimed in the background since dockershim requires the
|
||||||
// container for retrieving logs and we want to make sure logs are available until the pod is
|
// container for retrieving logs and we want to make sure logs are available until the pod is
|
||||||
// physically deleted.
|
// physically deleted.
|
||||||
|
@ -159,10 +159,6 @@ func (pm *basicManager) UpdatePod(pod *v1.Pod) {
|
|||||||
pm.updatePodsInternal(pod)
|
pm.updatePodsInternal(pod)
|
||||||
}
|
}
|
||||||
|
|
||||||
func isPodInTerminatedState(pod *v1.Pod) bool {
|
|
||||||
return pod.Status.Phase == v1.PodFailed || pod.Status.Phase == v1.PodSucceeded
|
|
||||||
}
|
|
||||||
|
|
||||||
// updateMetrics updates the metrics surfaced by the pod manager.
|
// updateMetrics updates the metrics surfaced by the pod manager.
|
||||||
// oldPod or newPod may be nil to signify creation or deletion.
|
// oldPod or newPod may be nil to signify creation or deletion.
|
||||||
func updateMetrics(oldPod, newPod *v1.Pod) {
|
func updateMetrics(oldPod, newPod *v1.Pod) {
|
||||||
@ -187,32 +183,6 @@ func updateMetrics(oldPod, newPod *v1.Pod) {
|
|||||||
// lock.
|
// lock.
|
||||||
func (pm *basicManager) updatePodsInternal(pods ...*v1.Pod) {
|
func (pm *basicManager) updatePodsInternal(pods ...*v1.Pod) {
|
||||||
for _, pod := range pods {
|
for _, pod := range pods {
|
||||||
if pm.secretManager != nil {
|
|
||||||
if isPodInTerminatedState(pod) {
|
|
||||||
// Pods that are in terminated state and no longer running can be
|
|
||||||
// ignored as they no longer require access to secrets.
|
|
||||||
// It is especially important in watch-based manager, to avoid
|
|
||||||
// unnecessary watches for terminated pods waiting for GC.
|
|
||||||
pm.secretManager.UnregisterPod(pod)
|
|
||||||
} else {
|
|
||||||
// TODO: Consider detecting only status update and in such case do
|
|
||||||
// not register pod, as it doesn't really matter.
|
|
||||||
pm.secretManager.RegisterPod(pod)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if pm.configMapManager != nil {
|
|
||||||
if isPodInTerminatedState(pod) {
|
|
||||||
// Pods that are in terminated state and no longer running can be
|
|
||||||
// ignored as they no longer require access to configmaps.
|
|
||||||
// It is especially important in watch-based manager, to avoid
|
|
||||||
// unnecessary watches for terminated pods waiting for GC.
|
|
||||||
pm.configMapManager.UnregisterPod(pod)
|
|
||||||
} else {
|
|
||||||
// TODO: Consider detecting only status update and in such case do
|
|
||||||
// not register pod, as it doesn't really matter.
|
|
||||||
pm.configMapManager.RegisterPod(pod)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
podFullName := kubecontainer.GetPodFullName(pod)
|
podFullName := kubecontainer.GetPodFullName(pod)
|
||||||
// This logic relies on a static pod and its mirror to have the same name.
|
// This logic relies on a static pod and its mirror to have the same name.
|
||||||
// It is safe to type convert here due to the IsMirrorPod guard.
|
// It is safe to type convert here due to the IsMirrorPod guard.
|
||||||
@ -239,12 +209,6 @@ func (pm *basicManager) DeletePod(pod *v1.Pod) {
|
|||||||
updateMetrics(pod, nil)
|
updateMetrics(pod, nil)
|
||||||
pm.lock.Lock()
|
pm.lock.Lock()
|
||||||
defer pm.lock.Unlock()
|
defer pm.lock.Unlock()
|
||||||
if pm.secretManager != nil {
|
|
||||||
pm.secretManager.UnregisterPod(pod)
|
|
||||||
}
|
|
||||||
if pm.configMapManager != nil {
|
|
||||||
pm.configMapManager.UnregisterPod(pod)
|
|
||||||
}
|
|
||||||
podFullName := kubecontainer.GetPodFullName(pod)
|
podFullName := kubecontainer.GetPodFullName(pod)
|
||||||
// It is safe to type convert here due to the IsMirrorPod guard.
|
// It is safe to type convert here due to the IsMirrorPod guard.
|
||||||
if kubetypes.IsMirrorPod(pod) {
|
if kubetypes.IsMirrorPod(pod) {
|
||||||
|
Loading…
Reference in New Issue
Block a user