mirror of https://github.com/k3s-io/k3s
Revert "Avoid race between image pull and garbage collect"
This reverts commit 6f14e2e210
.
pull/6/head
parent
e84b4d03a4
commit
733e12e19b
|
@ -232,13 +232,12 @@ func (kl *Kubelet) GarbageCollectLoop() {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (kl *Kubelet) getUnusedImages() ([]string, error) {
|
func (kl *Kubelet) getUnusedImages() ([]string, error) {
|
||||||
|
kl.pullLock.Lock()
|
||||||
|
defer kl.pullLock.Unlock()
|
||||||
return dockertools.GetUnusedImages(kl.dockerClient)
|
return dockertools.GetUnusedImages(kl.dockerClient)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (kl *Kubelet) GarbageCollectImages() error {
|
func (kl *Kubelet) GarbageCollectImages() error {
|
||||||
kl.pullLock.Lock()
|
|
||||||
defer kl.pullLock.Unlock()
|
|
||||||
|
|
||||||
images, err := kl.getUnusedImages()
|
images, err := kl.getUnusedImages()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
@ -712,10 +711,6 @@ func (kl *Kubelet) createNetworkContainer(pod *api.BoundPod) (dockertools.Docker
|
||||||
if err != nil {
|
if err != nil {
|
||||||
glog.Errorf("Couldn't make a ref to pod %v, container %v: '%v'", pod.Name, container.Name, err)
|
glog.Errorf("Couldn't make a ref to pod %v, container %v: '%v'", pod.Name, container.Name, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
kl.pullLock.RLock()
|
|
||||||
defer kl.pullLock.RUnlock()
|
|
||||||
|
|
||||||
// TODO: make this a TTL based pull (if image older than X policy, pull)
|
// TODO: make this a TTL based pull (if image older than X policy, pull)
|
||||||
ok, err := kl.dockerPuller.IsImagePresent(container.Image)
|
ok, err := kl.dockerPuller.IsImagePresent(container.Image)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -724,7 +719,6 @@ func (kl *Kubelet) createNetworkContainer(pod *api.BoundPod) (dockertools.Docker
|
||||||
}
|
}
|
||||||
return "", err
|
return "", err
|
||||||
}
|
}
|
||||||
|
|
||||||
if !ok {
|
if !ok {
|
||||||
if err := kl.pullImage(container.Image, ref); err != nil {
|
if err := kl.pullImage(container.Image, ref); err != nil {
|
||||||
return "", err
|
return "", err
|
||||||
|
@ -737,6 +731,8 @@ func (kl *Kubelet) createNetworkContainer(pod *api.BoundPod) (dockertools.Docker
|
||||||
}
|
}
|
||||||
|
|
||||||
func (kl *Kubelet) pullImage(img string, ref *api.ObjectReference) error {
|
func (kl *Kubelet) pullImage(img string, ref *api.ObjectReference) error {
|
||||||
|
kl.pullLock.RLock()
|
||||||
|
defer kl.pullLock.RUnlock()
|
||||||
if err := kl.dockerPuller.Pull(img); err != nil {
|
if err := kl.dockerPuller.Pull(img); err != nil {
|
||||||
if ref != nil {
|
if ref != nil {
|
||||||
record.Eventf(ref, "failed", "failed", "Failed to pull image %q", img)
|
record.Eventf(ref, "failed", "failed", "Failed to pull image %q", img)
|
||||||
|
@ -897,8 +893,6 @@ func (kl *Kubelet) syncPod(pod *api.BoundPod, dockerContainers dockertools.Docke
|
||||||
if err != nil {
|
if err != nil {
|
||||||
glog.Errorf("Couldn't make a ref to pod %v, container %v: '%v'", pod.Name, container.Name, err)
|
glog.Errorf("Couldn't make a ref to pod %v, container %v: '%v'", pod.Name, container.Name, err)
|
||||||
}
|
}
|
||||||
kl.pullLock.RLock()
|
|
||||||
defer kl.pullLock.RUnlock()
|
|
||||||
if !api.IsPullNever(container.ImagePullPolicy) {
|
if !api.IsPullNever(container.ImagePullPolicy) {
|
||||||
present, err := kl.dockerPuller.IsImagePresent(container.Image)
|
present, err := kl.dockerPuller.IsImagePresent(container.Image)
|
||||||
latest := dockertools.RequireLatestImage(container.Image)
|
latest := dockertools.RequireLatestImage(container.Image)
|
||||||
|
|
Loading…
Reference in New Issue