Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix image save cmd #12265

Merged
merged 10 commits into from
Aug 25, 2021
Merged

fix image save cmd #12265

merged 10 commits into from
Aug 25, 2021

Conversation

prezha
Copy link
Contributor

@prezha prezha commented Aug 13, 2021

fix original pr #12162 for:
pkg/minikube/image/image.go:237:27: cannot use ref (type name.Reference) as type name.Tag in argument to daemon.Write: need type assertion

Closes #11130

afbjorklund and others added 3 commits August 13, 2021 23:28
Previously you could only Copy(To), not CopyFrom.

Implies that some Assets can be written to instead.
This is the opposite command of "minikube image load",
and can be used after doing a "minikube image build".

The default is to save images in the cache, but it is
also possible to save to files or to standard output.
@k8s-ci-robot k8s-ci-robot added cncf-cla: yes Indicates the PR's author has signed the CNCF CLA. size/XL Denotes a PR that changes 500-999 lines, ignoring generated files. labels Aug 13, 2021
@k8s-ci-robot k8s-ci-robot added the approved Indicates a PR has been approved by an approver from all required OWNERS files. label Aug 13, 2021
@medyagh
Copy link
Member

medyagh commented Aug 13, 2021

/ok-to-test

@k8s-ci-robot k8s-ci-robot added the ok-to-test Indicates a non-member PR verified by an org member that is safe to test. label Aug 13, 2021
@@ -184,6 +184,24 @@ func (e *execRunner) Copy(f assets.CopyableFile) error {
return writeFile(dst, f, os.FileMode(perms))
}

// CopyFrom copies a file
func (e *execRunner) CopyFrom(f assets.CopyableFile) error {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lets add more explanitory comment ,how is this different from Copy func above ?

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It goes in the other direction, Copy is hard-coded to only CopyTo the VM

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's an alternative implementation of the API #11296, the other PR looked incomplete

@minikube-pr-bot
Copy link

kvm2 driver with docker runtime

+----------------+----------+---------------------+
|    COMMAND     | MINIKUBE | MINIKUBE (PR 12265) |
+----------------+----------+---------------------+
| minikube start | 48.0s    | 47.5s               |
| enable ingress | 36.8s    | 32.4s               |
+----------------+----------+---------------------+

Times for minikube start: 48.6s 46.9s 49.2s 46.4s 48.7s
Times for minikube (PR 12265) start: 47.5s 47.8s 47.7s 47.3s 47.1s

Times for minikube ingress: 32.3s 40.3s 39.3s 40.3s 31.8s
Times for minikube (PR 12265) ingress: 32.8s 32.8s 32.3s 31.3s 32.9s

docker driver with docker runtime

+----------------+----------+---------------------+
|    COMMAND     | MINIKUBE | MINIKUBE (PR 12265) |
+----------------+----------+---------------------+
| minikube start | 21.9s    | 22.1s               |
| enable ingress | 34.4s    | 34.3s               |
+----------------+----------+---------------------+

Times for minikube (PR 12265) start: 21.9s 22.2s 21.7s 22.3s 22.4s
Times for minikube start: 23.0s 21.4s 21.9s 21.4s 21.9s

Times for minikube ingress: 35.5s 36.5s 28.5s 36.0s 35.5s
Times for minikube (PR 12265) ingress: 34.5s 32.5s 32.5s 37.0s 35.0s

docker driver with containerd runtime

+----------------+----------+---------------------+
|    COMMAND     | MINIKUBE | MINIKUBE (PR 12265) |
+----------------+----------+---------------------+
| minikube start | 44.9s    | 43.7s               |
| enable ingress |          |                     |
+----------------+----------+---------------------+

Times for minikube start: 44.9s 48.1s 44.4s 43.8s 43.5s
Times for minikube (PR 12265) start: 43.7s 42.9s 44.6s 43.9s 43.4s

@afbjorklund
Copy link
Collaborator

@prezha : thanks for updating, the save feature conflicted with the change in the go-containerregistry

@minikube-pr-bot
Copy link

These are the flake rates of all failed tests.

Environment Failed Tests Flake Rate (%)
Docker_macOS TestFunctional/parallel/TunnelCmd/serial/WaitService (gopogh) n/a
Docker_macOS TestFunctional/parallel/TunnelCmd/serial/AccessDirect (gopogh) 0.00 (chart)
Docker_Linux TestFunctional/parallel/DashboardCmd (gopogh) 0.65 (chart)
Docker_Linux_containerd TestStartStop/group/newest-cni/serial/SecondStart (gopogh) 1.31 (chart)
Docker_Linux_containerd TestStartStop/group/newest-cni/serial/VerifyKubernetesImages (gopogh) 1.31 (chart)
KVM_Linux_crio TestNetworkPlugins/group/cilium/Start (gopogh) 1.36 (chart)
Docker_macOS TestFunctional/parallel/PersistentVolumeClaim (gopogh) 2.41 (chart)
Docker_macOS TestMultiNode/serial/StopMultiNode (gopogh) 2.44 (chart)
Docker_Linux_crio_arm64 TestStartStop/group/default-k8s-different-port/serial/SecondStart (gopogh) 3.16 (chart)
KVM_Linux_containerd TestStartStop/group/newest-cni/serial/Pause (gopogh) 3.25 (chart)
Docker_macOS TestFunctional/parallel/MountCmd/any-port (gopogh) 3.61 (chart)
Docker_macOS TestMultiNode/serial/DeployApp2Nodes (gopogh) 3.61 (chart)
Docker_macOS TestMultiNode/serial/PingHostFrom2Pods (gopogh) 3.61 (chart)
Docker_Linux_containerd_arm64 TestFunctional/parallel/BuildImage (gopogh) 4.05 (chart)
Docker_macOS TestMultiNode/serial/AddNode (gopogh) 4.82 (chart)
Docker_macOS TestMultiNode/serial/StartAfterStop (gopogh) 4.82 (chart)
none_Linux TestFunctional/serial/LogsCmd (gopogh) 5.77 (chart)
Docker_Linux_containerd_arm64 TestStartStop/group/embed-certs/serial/Pause (gopogh) 6.16 (chart)
Docker_Linux_containerd_arm64 TestStartStop/group/newest-cni/serial/Pause (gopogh) 6.16 (chart)
Docker_Linux_containerd_arm64 TestStartStop/group/default-k8s-different-port/serial/Pause (gopogh) 6.21 (chart)
Docker_Linux_containerd_arm64 TestStartStop/group/no-preload/serial/Pause (gopogh) 6.25 (chart)
KVM_Linux_containerd TestStartStop/group/default-k8s-different-port/serial/Pause (gopogh) 6.49 (chart)
KVM_Linux_containerd TestStartStop/group/old-k8s-version/serial/Pause (gopogh) 6.49 (chart)
KVM_Linux_crio TestStartStop/group/newest-cni/serial/Pause (gopogh) 6.80 (chart)
KVM_Linux_crio TestStartStop/group/old-k8s-version/serial/Pause (gopogh) 6.94 (chart)
Docker_Linux_crio TestStartStop/group/default-k8s-different-port/serial/Pause (gopogh) 7.08 (chart)
KVM_Linux_containerd TestPause/serial/Pause (gopogh) 7.14 (chart)
KVM_Linux_containerd TestPause/serial/VerifyStatus (gopogh) 7.14 (chart)
KVM_Linux_containerd TestStartStop/group/embed-certs/serial/Pause (gopogh) 7.14 (chart)
KVM_Linux_containerd TestStartStop/group/no-preload/serial/Pause (gopogh) 7.14 (chart)
More tests... Continued...

Too many tests failed - See test logs for more details.

To see the flake rates of all tests by environment, click here.

@afbjorklund
Copy link
Collaborator

afbjorklund commented Aug 15, 2021

Think we need an integration test for SaveImage, but that can go in another PR

Some tech debt from PR #11128 (which didn't have any tests, and the bug above)

@afbjorklund
Copy link
Collaborator

afbjorklund commented Aug 15, 2021

Hmm, can't test the API without a cmd... Also need "pull" and "tag", for testing.

Will push some commits to add the commands + fix and test, hope that is OK ?

Needed for testing, but maybe elsewhere as well
@afbjorklund
Copy link
Collaborator

@prezha added a fix for the docker runtime now, as well as a test for SaveImage

@medyagh now the PR even grew 2 new commands and another 1 new API... :-)
We could do those separately, but then people will say that they are "not needed".
Anyway, they are separate commits so should be easy to cherry-pick if needed ?

@minikube-pr-bot
Copy link

kvm2 driver with docker runtime

+----------------+----------+---------------------+
|    COMMAND     | MINIKUBE | MINIKUBE (PR 12265) |
+----------------+----------+---------------------+
| minikube start | 48.1s    | 47.5s               |
| enable ingress | 35.1s    | 31.9s               |
+----------------+----------+---------------------+

Times for minikube start: 49.2s 47.9s 47.8s 48.5s 47.1s
Times for minikube (PR 12265) start: 47.6s 48.1s 48.2s 47.4s 46.2s

Times for minikube ingress: 32.3s 40.8s 39.8s 31.8s 30.8s
Times for minikube (PR 12265) ingress: 33.3s 31.4s 31.8s 32.3s 30.8s

docker driver with docker runtime

+----------------+----------+---------------------+
|    COMMAND     | MINIKUBE | MINIKUBE (PR 12265) |
+----------------+----------+---------------------+
| minikube start | 22.1s    | 22.1s               |
| enable ingress | 35.3s    | 34.7s               |
+----------------+----------+---------------------+

Times for minikube start: 24.1s 21.6s 22.2s 21.3s 21.2s
Times for minikube (PR 12265) start: 21.5s 22.3s 22.8s 21.5s 22.3s

Times for minikube ingress: 31.5s 37.5s 35.5s 36.5s 35.5s
Times for minikube (PR 12265) ingress: 35.5s 35.5s 31.5s 36.5s 34.5s

docker driver with containerd runtime

+----------------+----------+---------------------+
|    COMMAND     | MINIKUBE | MINIKUBE (PR 12265) |
+----------------+----------+---------------------+
| minikube start | 40.3s    | 44.3s               |
| enable ingress |          |                     |
+----------------+----------+---------------------+

Times for minikube start: 26.7s 43.8s 43.8s 43.1s 44.0s
Times for minikube (PR 12265) start: 47.8s 44.2s 42.9s 43.7s 43.0s

@afbjorklund afbjorklund changed the title fix image save cmd WIP: fix image save cmd Aug 15, 2021
@k8s-ci-robot k8s-ci-robot added the do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress. label Aug 15, 2021
@minikube-pr-bot

This comment has been minimized.

@minikube-pr-bot

This comment has been minimized.

@minikube-pr-bot

This comment has been minimized.

Add a test for SaveImage, similar to LoadImage
@minikube-pr-bot
Copy link

These are the flake rates of all failed tests.

Environment Failed Tests Flake Rate (%)
Docker_Linux_containerd TestFunctional/parallel/SaveImageToFile (gopogh) n/a
Docker_Linux_crio_arm64 TestFunctional/parallel/SaveImage (gopogh) n/a
Docker_Linux_crio_arm64 TestFunctional/parallel/LoadImageFromFile (gopogh) 0.00 (chart)
KVM_Linux_containerd TestFunctional/parallel/DashboardCmd (gopogh) 0.62 (chart)
KVM_Linux_containerd TestScheduledStopUnix (gopogh) 0.62 (chart)
Docker_Linux_crio_arm64 TestKubernetesUpgrade (gopogh) 7.09 (chart)
KVM_Linux TestStartStop/group/no-preload/serial/Pause (gopogh) 8.86 (chart)
KVM_Linux TestStartStop/group/old-k8s-version/serial/AddonExistsAfterStop (gopogh) 10.76 (chart)
KVM_Linux TestStartStop/group/old-k8s-version/serial/SecondStart (gopogh) 10.76 (chart)
KVM_Linux TestStartStop/group/old-k8s-version/serial/UserAppExistsAfterStop (gopogh) 10.76 (chart)
Docker_Linux_crio TestNetworkPlugins/group/cilium/DNS (gopogh) 11.25 (chart)
Docker_Windows TestNetworkPlugins/group/false/DNS (gopogh) 12.12 (chart)
Hyperkit_macOS TestFunctional/parallel/DashboardCmd (gopogh) 14.17 (chart)
KVM_Linux_containerd TestStartStop/group/newest-cni/serial/Pause (gopogh) 19.25 (chart)
Docker_Windows TestStartStop/group/newest-cni/serial/VerifyKubernetesImages (gopogh) 20.34 (chart)
Docker_Linux_crio TestStartStop/group/no-preload/serial/Stop (gopogh) 20.62 (chart)
Docker_Windows TestStartStop/group/newest-cni/serial/SecondStart (gopogh) 21.01 (chart)
Docker_Linux_containerd_arm64 TestStartStop/group/embed-certs/serial/Pause (gopogh) 23.84 (chart)
Docker_Linux_containerd_arm64 TestStartStop/group/newest-cni/serial/Pause (gopogh) 23.84 (chart)
Docker_Linux_crio TestStartStop/group/default-k8s-different-port/serial/Pause (gopogh) 23.89 (chart)
Docker_Linux_containerd_arm64 TestStartStop/group/default-k8s-different-port/serial/Pause (gopogh) 24.00 (chart)
Docker_Linux_containerd_arm64 TestStartStop/group/no-preload/serial/Pause (gopogh) 24.16 (chart)
KVM_Linux_containerd TestStartStop/group/default-k8s-different-port/serial/Pause (gopogh) 24.22 (chart)
KVM_Linux_containerd TestStartStop/group/old-k8s-version/serial/Pause (gopogh) 24.22 (chart)
KVM_Linux_containerd TestPause/serial/Pause (gopogh) 24.84 (chart)
KVM_Linux_containerd TestPause/serial/VerifyStatus (gopogh) 24.84 (chart)
KVM_Linux_containerd TestStartStop/group/embed-certs/serial/Pause (gopogh) 24.84 (chart)
KVM_Linux_containerd TestStartStop/group/no-preload/serial/Pause (gopogh) 24.84 (chart)
KVM_Linux_crio TestStartStop/group/old-k8s-version/serial/Pause (gopogh) 25.17 (chart)
KVM_Linux_crio TestStartStop/group/newest-cni/serial/Pause (gopogh) 25.32 (chart)
More tests... Continued...

Too many tests failed - See test logs for more details.

To see the flake rates of all tests by environment, click here.

@prezha
Copy link
Contributor Author

prezha commented Aug 16, 2021

@afbjorklund maybe we should check if the image exists (eg using cruntime.ImageExists) before trying to save it - to avoid unnecessary steps, false positives and also ending up with empty leftovers - eg:

❯ minikube --alsologtostderr image save busybox busybox.tar
I0816 20:29:43.428796   23467 out.go:298] Setting OutFile to fd 1 ...
I0816 20:29:43.428843   23467 out.go:350] isatty.IsTerminal(1) = true
I0816 20:29:43.428847   23467 out.go:311] Setting ErrFile to fd 2...
I0816 20:29:43.428850   23467 out.go:350] isatty.IsTerminal(2) = true
I0816 20:29:43.428910   23467 root.go:313] Updating PATH: /home/prezha/.minikube/bin
I0816 20:29:43.429197   23467 config.go:177] Loaded profile config "minikube": Driver=docker, ContainerRuntime=docker, KubernetesVersion=v1.21.3
I0816 20:29:43.429213   23467 cache_images.go:390] Save images: ["busybox"]
I0816 20:29:43.429277   23467 config.go:177] Loaded profile config "minikube": Driver=docker, ContainerRuntime=docker, KubernetesVersion=v1.21.3
I0816 20:29:43.429578   23467 cli_runner.go:115] Run: docker container inspect minikube --format={{.State.Status}}
I0816 20:29:43.453910   23467 ssh_runner.go:152] Run: systemctl --version
I0816 20:29:43.453958   23467 cli_runner.go:115] Run: docker container inspect -f "'{{(index (index .NetworkSettings.Ports "22/tcp") 0).HostPort}}'" minikube
I0816 20:29:43.477605   23467 sshutil.go:53] new ssh client: &{IP:127.0.0.1 Port:49157 SSHKeyPath:/home/prezha/.minikube/machines/minikube/id_rsa Username:docker}
I0816 20:29:43.573409   23467 cache_images.go:464] Saving image to: busybox.tar
I0816 20:29:43.573572   23467 ssh_runner.go:152] Run: sudo rm -f /var/lib/minikube/images/busybox.tar
I0816 20:29:43.588166   23467 docker.go:226] Saving image busybox: /var/lib/minikube/images/busybox.tar
I0816 20:29:43.588221   23467 ssh_runner.go:152] Run: /bin/bash -c "docker save 'busybox' | sudo tee /var/lib/minikube/images/busybox.tar >/dev/null"
I0816 20:29:43.650368   23467 ssh_runner.go:152] Run: stat -c %s /var/lib/minikube/images/busybox.tar
I0816 20:29:43.655633   23467 ssh_runner.go:406] scp /var/lib/minikube/images/busybox.tar --> busybox.tar (0 bytes)
I0816 20:29:43.670406   23467 cache_images.go:496] Transferred and saved busybox.tar to cache
I0816 20:29:43.670456   23467 cache_images.go:369] Successfully saved all images
I0816 20:29:43.670471   23467 cache_images.go:444] succeeded pulling from : minikube
I0816 20:29:43.670479   23467 cache_images.go:445] failed pulling from :
docker@minikube:/var/lib/minikube/images$ ll
total 296232
drwxr-xr-x 1 root root      404 Aug 16 19:44 ./
drwxr-xr-x 1 root root       94 Aug 14 17:35 ../
-rw-r--r-- 1 root root        0 Aug 16 19:44 busybox.tar
-rw-r--r-- 1 root root 12946944 Aug 14 17:33 coredns_v1.8.0
-rw-r--r-- 1 root root 67993600 Aug 14 17:33 dashboard_v2.1.0
-rw-r--r-- 1 root root 86745600 Aug 14 17:33 etcd_3.4.13-0
-rw-r--r-- 1 root root 30453760 Aug 14 17:33 kube-apiserver_v1.21.3
-rw-r--r-- 1 root root 29421568 Aug 14 17:33 kube-controller-manager_v1.21.3
-rw-r--r-- 1 root root 35852800 Aug 14 17:33 kube-proxy_v1.21.3
-rw-r--r-- 1 root root 14532096 Aug 14 17:33 kube-scheduler_v1.21.3
-rw-r--r-- 1 root root 16022528 Aug 14 17:33 metrics-scraper_v1.0.4
-rw-r--r-- 1 root root   301056 Aug 14 17:33 pause_3.4.1
-rw-r--r-- 1 root root  9060352 Aug 14 17:33 storage-provisioner_v5

@prezha
Copy link
Contributor Author

prezha commented Aug 16, 2021

re: #12265 (comment)
@afbjorklund i had to make sha check optional in cruntime.ImageExists for this to "elegantly" (ie, w/o reinventing the wheel whilst also not breaking anything i hope) work with eg, busybox, docker.io/library/busybox, busybox:latest, docker.io/library/busybox:latest, etc.
pls have a look: 11d31dd

example:

❯ minikube --alsologtostderr image save verybusyboxes verybusyboxes.tar
I0816 23:06:00.389599  197106 out.go:298] Setting OutFile to fd 1 ...
I0816 23:06:00.389660  197106 out.go:350] isatty.IsTerminal(1) = true
I0816 23:06:00.389665  197106 out.go:311] Setting ErrFile to fd 2...
I0816 23:06:00.389669  197106 out.go:350] isatty.IsTerminal(2) = true
I0816 23:06:00.389746  197106 root.go:313] Updating PATH: /home/prezha/.minikube/bin
I0816 23:06:00.390106  197106 config.go:177] Loaded profile config "minikube": Driver=docker, ContainerRuntime=docker, KubernetesVersion=v1.21.3
I0816 23:06:00.390129  197106 cache_images.go:397] Save images: ["verybusyboxes"]
I0816 23:06:00.390206  197106 config.go:177] Loaded profile config "minikube": Driver=docker, ContainerRuntime=docker, KubernetesVersion=v1.21.3
I0816 23:06:00.390486  197106 cli_runner.go:115] Run: docker container inspect minikube --format={{.State.Status}}
I0816 23:06:00.421155  197106 cache_images.go:359] SaveLocalImages start: [verybusyboxes]
I0816 23:06:00.421242  197106 ssh_runner.go:152] Run: systemctl --version
I0816 23:06:00.421294  197106 cli_runner.go:115] Run: docker container inspect -f "'{{(index (index .NetworkSettings.Ports "22/tcp") 0).HostPort}}'" minikube
I0816 23:06:00.447733  197106 sshutil.go:53] new ssh client: &{IP:127.0.0.1 Port:49157 SSHKeyPath:/home/prezha/.minikube/machines/minikube/id_rsa Username:docker}
I0816 23:06:00.544777  197106 ssh_runner.go:152] Run: docker image inspect --format {{.Id}} verybusyboxes
I0816 23:06:00.594387  197106 cache_images.go:363] SaveLocalImages completed in 173.210684ms
W0816 23:06:00.594410  197106 cache_images.go:443] Failed to load cached images for profile minikube. make sure the profile is running. saving local images: image verybusyboxes not found
I0816 23:06:00.594422  197106 cache_images.go:451] succeeded pulling from :
I0816 23:06:00.594427  197106 cache_images.go:452] failed pulling from : minikube

@prezha
Copy link
Contributor Author

prezha commented Aug 16, 2021

maybe worth noting that docker (haven't check others), if the tag is not specified, saves all images that contain given name (not just exact match with the default latest tag!) and then our save image inherits the same behaviour:

docker@minikube:/var/lib/minikube/images$ docker image ls |sort
REPOSITORY                                TAG        IMAGE ID       CREATED         SIZE
busybox                                   1.29       758ec7f3a1ee   2 years ago     1.15MB
busybox                                   1.30       64f5d945efcc   2 years ago     1.2MB
busybox                                   1.31       1c35c4412082   14 months ago   1.22MB
busybox                                   1.32       388056c9a683   4 months ago    1.23MB
busybox                                   latest     69593048aa3a   2 months ago    1.24MB
...

docker@minikube:/tmp/bb$ docker save busybox -o bb.tar
docker@minikube:/tmp/bb$ tar xvf bb.tar

docker@minikube:/tmp/bb$ cat manifest.json
[{"Config":"758ec7f3a1ee85f8f08399b55641bfb13e8c1109287ddc5e22b68c3d653152ee.json","RepoTags":["busybox:1.29"],"Layers":["217d3a09216b3d3422e2a9abb8e7b4c97f03cc29be48b9b5cfbcd4ade6ef020f/layer.tar"]},
{"Config":"64f5d945efcc0f39ab11b3cd4ba403cc9fefe1fa3613123ca016cf3708e8cafb.json","RepoTags":["busybox:1.30"],"Layers":["a57c26390d4b78fd575fac72ed31f16a7a2fa3ebdccae4598513e8964dace9b2/layer.tar"]},
{"Config":"1c35c441208254cb7c3844ba95a96485388cef9ccc0646d562c7fc026e04c807.json","RepoTags":["busybox:1.31"],"Layers":["9719c1ce1e2335e5b108c339b9f2b2f8aae8e62f30a831c40b9d9329678fd711/layer.tar"]},
{"Config":"388056c9a6838deea3792e8f00705b35b439cf57b3c9c2634fb4e95cfc896de6.json","RepoTags":["busybox:1.32"],"Layers":["4bcda78a6222f60ab86ac5ea952d39edee39e4b7ede02b5191ecf1d43af63b47/layer.tar"]},
{"Config":"69593048aa3acfee0f75f20b77acb549de2472063053f6730c4091b53f2dfb02.json","RepoTags":["busybox:latest"],"Layers":["274279bf1f8f5bff62b606e780ce6b68c4355b1853fc31410f0e6f2516eef3bf/layer.tar"]}]

but then:

docker@minikube:/tmp/bb-latest$ docker save busybox:latest -o bb-latest.tar
docker@minikube:/tmp/bb-latest$ tar xvf bb-latest.tar

docker@minikube:/tmp/bb-latest$ cat manifest.json
[{"Config":"69593048aa3acfee0f75f20b77acb549de2472063053f6730c4091b53f2dfb02.json","RepoTags":["busybox:latest"],"Layers":["274279bf1f8f5bff62b606e780ce6b68c4355b1853fc31410f0e6f2516eef3bf/layer.tar"]}]

@minikube-pr-bot
Copy link

kvm2 driver with docker runtime

+----------------+----------+---------------------+
|    COMMAND     | MINIKUBE | MINIKUBE (PR 12265) |
+----------------+----------+---------------------+
| minikube start | 47.4s    | 46.9s               |
| enable ingress | 31.5s    | 31.7s               |
+----------------+----------+---------------------+

Times for minikube start: 48.2s 47.3s 47.2s 46.7s 47.6s
Times for minikube (PR 12265) start: 47.0s 46.1s 47.5s 47.1s 46.9s

Times for minikube ingress: 30.8s 30.8s 31.2s 31.7s 32.8s
Times for minikube (PR 12265) ingress: 31.3s 30.8s 32.3s 31.8s 32.3s

docker driver with docker runtime

+----------------+----------+---------------------+
|    COMMAND     | MINIKUBE | MINIKUBE (PR 12265) |
+----------------+----------+---------------------+
| minikube start | 21.6s    | 21.8s               |
| enable ingress | 27.4s    | 32.7s               |
+----------------+----------+---------------------+

Times for minikube start: 21.3s 21.4s 21.1s 22.6s 21.6s
Times for minikube (PR 12265) start: 21.9s 21.1s 22.5s 21.5s 22.0s

Times for minikube ingress: 27.5s 27.0s 27.5s 26.5s 28.5s
Times for minikube (PR 12265) ingress: 35.5s 35.0s 31.0s 34.5s 27.5s

docker driver with containerd runtime

+----------------+----------+---------------------+
|    COMMAND     | MINIKUBE | MINIKUBE (PR 12265) |
+----------------+----------+---------------------+
| minikube start | 43.4s    | 43.8s               |
| enable ingress |          |                     |
+----------------+----------+---------------------+

Times for minikube start: 43.5s 43.2s 43.9s 43.7s 43.0s
Times for minikube (PR 12265) start: 43.3s 43.7s 44.8s 43.6s 43.5s

@minikube-pr-bot
Copy link

These are the flake rates of all failed tests.

Environment Failed Tests Flake Rate (%)
Docker_Linux_containerd_arm64 TestFunctional/parallel/SaveImage (gopogh) n/a
Docker_Linux_containerd TestJSONOutput/pause/Command (gopogh) n/a
Docker_Linux_crio TestJSONOutput/pause/Command (gopogh) n/a
Docker_Linux_crio TestStoppedBinaryUpgrade/MinikubeLogs (gopogh) n/a
Docker_Linux_crio TestStoppedBinaryUpgrade/Upgrade (gopogh) n/a
Docker_Windows TestAddons/Setup (gopogh) n/a
KVM_Linux_containerd TestJSONOutput/pause/Command (gopogh) n/a
KVM_Linux_crio TestFunctional/parallel/SaveImage (gopogh) n/a
KVM_Linux_crio TestJSONOutput/pause/Command (gopogh) n/a
Docker_Linux_containerd_arm64 TestFunctional/parallel/TunnelCmd/serial/WaitService/Setup (gopogh) 0.00 (chart)
Docker_Linux_docker_arm64 TestFunctional/parallel/LoadImageFromFile (gopogh) 0.00 (chart)
KVM_Linux_crio TestAddons/parallel/GCPAuth (gopogh) 8.28 (chart)
Docker_Linux_crio TestNetworkPlugins/group/enable-default-cni/DNS (gopogh) 8.55 (chart)
Docker_Windows TestKubernetesUpgrade (gopogh) 9.45 (chart)
Docker_Windows TestFunctional/parallel/TunnelCmd/serial/WaitService/IngressIP (gopogh) 10.45 (chart)
Docker_Windows TestMultiNode/serial/RestartMultiNode (gopogh) 10.53 (chart)
Docker_Windows TestFunctional/parallel/InternationalLanguage (gopogh) 11.19 (chart)
Docker_Linux_containerd_arm64 TestFunctional/parallel/BuildImage (gopogh) 11.64 (chart)
Docker_Linux_crio TestStartStop/group/no-preload/serial/Stop (gopogh) 21.71 (chart)
Docker_Linux_containerd_arm64 TestAddons/parallel/Ingress (gopogh) 21.92 (chart)
KVM_Linux_containerd TestStartStop/group/newest-cni/serial/Pause (gopogh) 22.22 (chart)
Docker_Linux_containerd_arm64 TestFunctional/parallel/TunnelCmd/serial/AccessDirect (gopogh) 22.60 (chart)
Docker_Linux_docker_arm64 TestFunctional/parallel/PersistentVolumeClaim (gopogh) 25.30 (chart)
Docker_Linux_docker_arm64 TestFunctional/parallel/MountCmd/any-port (gopogh) 26.51 (chart)
Docker_Windows TestInsufficientStorage (gopogh) 26.87 (chart)
Docker_Linux_containerd_arm64 TestStartStop/group/embed-certs/serial/Pause (gopogh) 27.08 (chart)
Docker_Linux_containerd_arm64 TestStartStop/group/newest-cni/serial/Pause (gopogh) 27.08 (chart)
Docker_Linux_containerd_arm64 TestStartStop/group/default-k8s-different-port/serial/Pause (gopogh) 27.27 (chart)
Docker_Linux_crio TestStartStop/group/default-k8s-different-port/serial/Pause (gopogh) 27.27 (chart)
KVM_Linux_containerd TestStartStop/group/default-k8s-different-port/serial/Pause (gopogh) 27.45 (chart)
More tests... Continued...

Too many tests failed - See test logs for more details.

To see the flake rates of all tests by environment, click here.

@medyagh medyagh self-requested a review August 17, 2021 22:19
@afbjorklund
Copy link
Collaborator

maybe worth noting that docker (haven't check others), if the tag is not specified, saves all images that contain given name (not just exact match with the default latest tag!)

we probably should make it save just one image (at a time), and append a :latest ?

@prezha
Copy link
Contributor Author

prezha commented Aug 20, 2021

maybe worth noting that docker (haven't check others), if the tag is not specified, saves all images that contain given name (not just exact match with the default latest tag!)

we probably should make it save just one image (at a time), and append a :latest ?

i think that could potentially present an "unexpected behaviour" to those that are familiar with it as-is, ie, at least in the case of docker - 'docker save' cmd (that we use) don't assume ':latest' tag if one was not specified and they save multiple images in a single archive?

❯ docker save --help

Usage:  docker save [OPTIONS] IMAGE [IMAGE...]

Save one or more images to a tar archive (streamed to STDOUT by default)

@afbjorklund
Copy link
Collaborator

I'm not sure it even works with all runtimes, I think OCI only allows for one image for instance ?

@minikube-pr-bot
Copy link

kvm2 driver with docker runtime

+----------------+----------+---------------------+
|    COMMAND     | MINIKUBE | MINIKUBE (PR 12265) |
+----------------+----------+---------------------+
| minikube start | 49.5s    | 47.6s               |
| enable ingress | 31.0s    | 31.4s               |
+----------------+----------+---------------------+

Times for minikube ingress: 30.9s 30.8s 31.8s 30.9s 30.3s
Times for minikube (PR 12265) ingress: 31.5s 31.9s 31.5s 31.4s 30.8s

Times for minikube (PR 12265) start: 47.4s 47.8s 48.1s 48.4s 46.6s
Times for minikube start: 51.3s 47.4s 48.6s 51.8s 48.5s

docker driver with docker runtime

+----------------+----------+---------------------+
|    COMMAND     | MINIKUBE | MINIKUBE (PR 12265) |
+----------------+----------+---------------------+
| minikube start | 22.2s    | 22.6s               |
| enable ingress | 31.3s    | 32.6s               |
+----------------+----------+---------------------+

Times for minikube ingress: 35.0s 27.0s 34.5s 33.6s 26.5s
Times for minikube (PR 12265) ingress: 35.1s 26.5s 30.5s 36.0s 35.1s

Times for minikube start: 21.5s 22.4s 22.6s 22.5s 22.2s
Times for minikube (PR 12265) start: 22.4s 23.2s 22.1s 22.2s 22.9s

docker driver with containerd runtime

+----------------+----------+---------------------+
|    COMMAND     | MINIKUBE | MINIKUBE (PR 12265) |
+----------------+----------+---------------------+
| minikube start | 41.6s    | 40.2s               |
| enable ingress |          |                     |
+----------------+----------+---------------------+

Times for minikube start: 34.0s 43.1s 43.3s 43.9s 43.5s
Times for minikube (PR 12265) start: 25.8s 43.2s 43.6s 44.2s 44.1s

@k8s-ci-robot
Copy link
Contributor

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: afbjorklund, prezha

The full list of commands accepted by this bot can be found here.

The pull request process is described here

Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@minikube-pr-bot
Copy link

These are the flake rates of all failed tests.

Environment Failed Tests Flake Rate (%)
Docker_Linux_containerd_arm64 TestFunctional/parallel/SaveImage (gopogh) n/a
Docker_Linux_crio_arm64 TestFunctional/parallel/SaveImage (gopogh) n/a
Docker_Linux_crio_arm64 TestFunctional/parallel/SaveImageToFile (gopogh) n/a
Docker_Linux_containerd TestFunctional/parallel/LoadImageFromFile (gopogh) 0.00 (chart)
Docker_Linux TestFunctional/parallel/LoadImageFromFile (gopogh) 0.00 (chart)
KVM_Linux_crio TestNetworkPlugins/group/auto/Start (gopogh) 0.00 (chart)
KVM_Linux TestAddons/parallel/CSI (gopogh) 1.99 (chart)
Docker_Linux_containerd TestAddons/parallel/Olm (gopogh) 2.65 (chart)
Docker_Linux_containerd_arm64 TestErrorSpam/setup (gopogh) 2.88 (chart)
Docker_Windows TestAddons/parallel/Ingress (gopogh) 5.05 (chart)
Docker_Windows TestStartStop/group/old-k8s-version/serial/AddonExistsAfterStop (gopogh) 9.62 (chart)
Docker_Windows TestStartStop/group/old-k8s-version/serial/UserAppExistsAfterStop (gopogh) 9.62 (chart)
Docker_Windows TestStartStop/group/old-k8s-version/serial/VerifyKubernetesImages (gopogh) 9.62 (chart)
Docker_Windows TestKubernetesUpgrade (gopogh) 11.02 (chart)
Docker_Windows TestStartStop/group/old-k8s-version/serial/SecondStart (gopogh) 13.76 (chart)
Docker_Linux_containerd_arm64 TestFunctional/parallel/TunnelCmd/serial/WaitService/Setup (gopogh) 17.14 (chart)
Docker_Linux_containerd_arm64 TestAddons/parallel/Ingress (gopogh) 17.27 (chart)
Docker_Windows TestStartStop/group/old-k8s-version/serial/Pause (gopogh) 17.31 (chart)
Docker_Linux_containerd_arm64 TestAddons/parallel/GCPAuth (gopogh) 20.86 (chart)
Docker_Linux_containerd_arm64 TestFunctional/parallel/BuildImage (gopogh) 20.86 (chart)
Docker_Linux_crio TestStartStop/group/no-preload/serial/Stop (gopogh) 24.34 (chart)
Docker_Linux_containerd_arm64 TestFunctional/parallel/TunnelCmd/serial/AccessDirect (gopogh) 24.46 (chart)
Docker_Linux_containerd_arm64 TestAddons/parallel/CSI (gopogh) 25.90 (chart)
Docker_Linux_containerd_arm64 TestFunctional/parallel/PersistentVolumeClaim (gopogh) 27.34 (chart)
Docker_Linux_containerd_arm64 TestFunctional/parallel/MountCmd/any-port (gopogh) 30.22 (chart)
Docker_Linux_crio_arm64 TestStartStop/group/no-preload/serial/AddonExistsAfterStop (gopogh) 34.43 (chart)
Docker_Linux_crio TestScheduledStopUnix (gopogh) 34.87 (chart)
Docker_macOS TestNetworkPlugins/group/custom-weave/Start (gopogh) 37.50 (chart)
Docker_Windows TestMultiNode/serial/CopyFile (gopogh) 37.88 (chart)
Docker_Windows TestStoppedBinaryUpgrade/MinikubeLogs (gopogh) 39.53 (chart)
More tests... Continued...

Too many tests failed - See test logs for more details.

To see the flake rates of all tests by environment, click here.

@medyagh
Copy link
Member

medyagh commented Aug 24, 2021

@prezha please take look at this failure

https://storage.googleapis.com/minikube-builds/logs/12265/20163/Docker_Linux.html#fail_TestFunctional%2fparallel%2fLoadImageFromFile

=== CONT  TestFunctional/parallel/LoadImageFromFile
functional_test.go:484: (dbg) Run:  out/minikube-linux-amd64 ssh -p functional-20210824034525-5392 -- docker images
=== CONT  TestFunctional/parallel/LoadImageFromFile
functional_test.go:317: expected docker.io/library/busybox:load-from-file-functional-20210824034525-5392 to be loaded into minikube but the image is not there

@prezha
Copy link
Contributor Author

prezha commented Aug 24, 2021

@prezha please take look at this failure

https://storage.googleapis.com/minikube-builds/logs/12265/20163/Docker_Linux.html#fail_TestFunctional%2fparallel%2fLoadImageFromFile

=== CONT  TestFunctional/parallel/LoadImageFromFile
functional_test.go:484: (dbg) Run:  out/minikube-linux-amd64 ssh -p functional-20210824034525-5392 -- docker images
=== CONT  TestFunctional/parallel/LoadImageFromFile
functional_test.go:317: expected docker.io/library/busybox:load-from-file-functional-20210824034525-5392 to be loaded into minikube but the image is not there

@medyagh i guess the issue is in

imagePath, err := filepath.Abs(imageFile)

ie, effectively postfixing it with an extra $INTEGRATION_TESTS_TO_RUN (./test/integration/) and so it cannot be found


hmmm, still fails (but not always) - i bet it has something to do with removing the image in other (parallel!) tests
will have a closer look


yep, 2nd assumption was right - it's rather a race condition, ie, the os.Remove(imageFile) in SaveImageToFile (and LoadImageFromFile):

....
2021-08-24T19:20:23.7667859Z === CONT  TestFunctional/parallel/SaveImageToFile
2021-08-24T19:20:23.7669967Z     functional_test.go:449: (dbg) Run:  docker images busybox
2021-08-24T19:20:23.8520491Z === CONT  TestFunctional/parallel/RemoveImage
2021-08-24T19:20:23.8521959Z     functional_test.go:329: (dbg) Run:  docker pull busybox:1.32
2021-08-24T19:20:24.5385166Z     functional_test.go:336: (dbg) Run:  docker tag busybox:1.32 docker.io/library/busybox:remove-functional-20210824191357-2848
2021-08-24T19:20:24.6277631Z     functional_test.go:342: (dbg) Run:  ./minikube-linux-amd64 -p functional-20210824191357-2848 image load docker.io/library/busybox:remove-functional-20210824191357-2848
2021-08-24T19:20:24.7926029Z === CONT  TestFunctional/parallel/LoadImageFromFile
2021-08-24T19:20:24.7928030Z     functional_test.go:480: (dbg) Done: ./minikube-linux-amd64 ssh -p functional-20210824191357-2848 -- docker images: (1.051402882s)
2021-08-24T19:20:24.7930270Z     functional_test.go:313: expected docker.io/library/busybox:load-from-file-functional-20210824191357-2848 to be loaded into minikube but the image is not there

ref: #12265 (comment)

also worth noting that minikube image load does not return an error if the image does not exist (but does output to stderr), so it's not enough just to check for err:

❯ minikube image load blah.tar
❗  The image 'blah.tar' was not found; unable to add it to cache.

if err := saveToTarFile(image, dst, overwrite); err != nil {
if err == errCacheImageDoesntExist {
out.WarningT("The image '{{.imageName}}' was not found; unable to add it to cache.", out.V{"imageName": image})
return nil
}


seems it's getting even more interesting - two race conditions in a single pr! :)
in the 2nd case SaveImageToFile and LoadImageFromFile are competing over/writing the /home/runner/work/minikube/minikube/minikube_binaries/busybox.tar (look at timing)

...
2021-08-24T21:22:54.2237609Z === CONT  TestFunctional/parallel/SaveImageToFile
2021-08-24T21:22:54.2240297Z     functional_test.go:439: (dbg) Run:  ./minikube-linux-amd64 -p functional-20210824211645-2848 image save docker.io/library/busybox:save-to-file-functional-20210824211645-2848 /home/runner/work/minikube/minikube/minikube_binaries/busybox.tar
2021-08-24T21:22:54.5800077Z === CONT  TestFunctional/parallel/LoadImageFromFile
2021-08-24T21:22:54.5803336Z     functional_test.go:290: (dbg) Run:  docker tag busybox:1.31 docker.io/library/busybox:load-from-file-functional-20210824211645-2848
2021-08-24T21:22:54.6306494Z     functional_test.go:296: (dbg) Run:  docker save -o busybox.tar docker.io/library/busybox:load-from-file-functional-20210824211645-2848
2021-08-24T21:22:54.7105897Z     functional_test.go:306: (dbg) Run:  ./minikube-linux-amd64 -p functional-20210824211645-2848 image load /home/runner/work/minikube/minikube/minikube_binaries/busybox.tar
...

here we "don't mind" if the image is corrupted:

❯ touch blah.tar

❯ ll blah.tar
-rw-r--r-- 1 prezha users 0 Aug 24 23:24 blah.tar

❯ minikube image load blah.tar

❯ 

details:

❯ minikube image load blah.tar --alsologtostderr -v=9
I0824 23:36:09.856585  500727 out.go:298] Setting OutFile to fd 1 ...
I0824 23:36:09.856736  500727 out.go:350] isatty.IsTerminal(1) = true
I0824 23:36:09.856740  500727 out.go:311] Setting ErrFile to fd 2...
I0824 23:36:09.856744  500727 out.go:350] isatty.IsTerminal(2) = true
I0824 23:36:09.856810  500727 root.go:313] Updating PATH: /home/prezha/.minikube/bin
I0824 23:36:09.857486  500727 config.go:177] Loaded profile config "minikube": Driver=docker, ContainerRuntime=docker, KubernetesVersion=v1.21.3
I0824 23:36:09.857630  500727 config.go:177] Loaded profile config "minikube": Driver=docker, ContainerRuntime=docker, KubernetesVersion=v1.21.3
I0824 23:36:09.858014  500727 cli_runner.go:115] Run: docker container inspect minikube --format={{.State.Status}}
I0824 23:36:09.882637  500727 ssh_runner.go:152] Run: systemctl --version
I0824 23:36:09.882684  500727 cli_runner.go:115] Run: docker container inspect -f "'{{(index (index .NetworkSettings.Ports "22/tcp") 0).HostPort}}'" minikube
I0824 23:36:09.907316  500727 sshutil.go:53] new ssh client: &{IP:127.0.0.1 Port:49272 SSHKeyPath:/home/prezha/.minikube/machines/minikube/id_rsa Username:docker}
I0824 23:36:10.002908  500727 command_runner.go:127] > systemd 245 (245.4-4ubuntu3.11)
I0824 23:36:10.002930  500727 command_runner.go:127] > +PAM +AUDIT +SELINUX +IMA +APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ +LZ4 +SECCOMP +BLKID +ELFUTILS +KMOD +IDN2 -IDN +PCRE2 default-hierarchy=hybrid
I0824 23:36:10.002947  500727 cache_images.go:280] Loading image from: blah.tar
I0824 23:36:10.002983  500727 vm_assets.go:109] NewFileAsset: blah.tar -> /var/lib/minikube/images/blah.tar
W0824 23:36:10.002989  500727 vm_assets.go:117] NewFileAsset: blah.tar is an empty file!
I0824 23:36:10.003018  500727 ssh_runner.go:319] scp blah.tar --> /var/lib/minikube/images/blah.tar (0 bytes)
W0824 23:36:10.003023  500727 ssh_runner.go:321] 0 byte asset: &{BaseAsset:{SourcePath:blah.tar TargetDir:/var/lib/minikube/images TargetName:blah.tar Permissions:0644 Source:} reader:0xc0010ca690 writer:<nil> file:0xc0001381b8}
W0824 23:36:10.003647  500727 ssh_runner.go:350] asked to copy a 0 byte asset: &{BaseAsset:{SourcePath:blah.tar TargetDir:/var/lib/minikube/images TargetName:blah.tar Permissions:0644 Source:} reader:0xc0010ca690 writer:<nil> file:0xc0001381b8}
I0824 23:36:10.012920  500727 docker.go:203] Loading image: /var/lib/minikube/images/blah.tar
I0824 23:36:10.012932  500727 ssh_runner.go:152] Run: /bin/bash -c "sudo cat /var/lib/minikube/images/blah.tar | docker load"
I0824 23:36:10.062283  500727 command_runner.go:127] ! open /var/lib/docker/tmp/docker-import-634175748/repositories: no such file or directory
W0824 23:36:10.062333  500727 cache_images.go:248] Failed to load cached images for profile minikube. make sure the profile is running. loading images: Docker load /var/lib/minikube/images/blah.tar: loadimage docker.: /bin/bash -c "sudo cat /var/lib/minikube/images/blah.tar | docker load": Process exited with status 1
stdout:

stderr:
open /var/lib/docker/tmp/docker-import-634175748/repositories: no such file or directory
I0824 23:36:10.062351  500727 cache_images.go:256] succeeded pushing to:
I0824 23:36:10.062358  500727 cache_images.go:257] failed pushing to: minikube

but we don't consider it a failure:

err = LoadLocalImages(c, cr, images)
}
if err != nil {
failed = append(failed, m)
klog.Warningf("Failed to load cached images for profile %s. make sure the profile is running. %v", pName, err)
continue
}
succeeded = append(succeeded, m)
}
}
}
klog.Infof("succeeded pushing to: %s", strings.Join(succeeded, " "))
klog.Infof("failed pushing to: %s", strings.Join(failed, " "))
// Live pushes are not considered a failure
return nil

btw, i believe that "TestFunctional/serial/LogsCmd" test failure on functional_docker_windows is completely unrelated to this pr

@minikube-pr-bot
Copy link

kvm2 driver with docker runtime

+----------------+----------+---------------------+
|    COMMAND     | MINIKUBE | MINIKUBE (PR 12265) |
+----------------+----------+---------------------+
| minikube start | 49.1s    | 48.2s               |
| enable ingress | 35.3s    | 35.2s               |
+----------------+----------+---------------------+

Times for minikube start: 49.5s 47.4s 48.0s 49.4s 51.3s
Times for minikube (PR 12265) start: 51.6s 47.6s 46.7s 47.3s 47.5s

Times for minikube ingress: 31.4s 32.4s 31.8s 41.1s 39.9s
Times for minikube (PR 12265) ingress: 31.9s 39.4s 32.9s 39.4s 32.4s

docker driver with docker runtime

+----------------+----------+---------------------+
|    COMMAND     | MINIKUBE | MINIKUBE (PR 12265) |
+----------------+----------+---------------------+
| minikube start | 22.7s    | 22.6s               |
| enable ingress | 35.7s    | 34.0s               |
+----------------+----------+---------------------+

Times for minikube start: 22.4s 23.0s 22.7s 22.3s 23.0s
Times for minikube (PR 12265) start: 22.8s 22.3s 23.4s 22.1s 22.6s

Times for minikube ingress: 35.5s 35.0s 36.5s 35.5s 36.0s
Times for minikube (PR 12265) ingress: 36.0s 31.5s 35.0s 36.0s 31.5s

docker driver with containerd runtime

+----------------+----------+---------------------+
|    COMMAND     | MINIKUBE | MINIKUBE (PR 12265) |
+----------------+----------+---------------------+
| minikube start | 44.0s    | 41.0s               |
| enable ingress |          |                     |
+----------------+----------+---------------------+

Times for minikube start: 45.1s 43.7s 43.7s 44.4s 43.0s
Times for minikube (PR 12265) start: 44.7s 27.1s 44.5s 43.7s 44.8s

if err != nil {
t.Fatalf("failed to load image to file: %v\n%s", err, rr.Output())
}
defer os.Remove(imageFile)
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ref

@minikube-pr-bot
Copy link

These are the flake rates of all failed tests.

Environment Failed Tests Flake Rate (%)
Docker_Linux_containerd_arm64 TestFunctional/parallel/SaveImage (gopogh) n/a
Docker_Linux_containerd_arm64 TestFunctional/parallel/SaveImageToFile (gopogh) n/a
Docker_Linux_crio_arm64 TestFunctional/parallel/SaveImageToFile (gopogh) n/a
Docker_Linux_crio TestFunctional/parallel/SaveImage (gopogh) n/a
Docker_Linux TestFunctional/parallel/SaveImageToFile (gopogh) n/a
Docker_Linux_crio_arm64 TestFunctional/parallel/LoadImageFromFile (gopogh) 0.00 (chart)
Docker_Linux_docker_arm64 TestFunctional/parallel/LoadImageFromFile (gopogh) 0.00 (chart)
Docker_Linux TestFunctional/parallel/LoadImageFromFile (gopogh) 0.00 (chart)
KVM_Linux_crio TestStartStop/group/default-k8s-different-port/serial/EnableAddonWhileActive (gopogh) 1.27 (chart)
KVM_Linux_crio TestStartStop/group/embed-certs/serial/AddonExistsAfterStop (gopogh) 1.27 (chart)
KVM_Linux_crio TestStartStop/group/embed-certs/serial/SecondStart (gopogh) 1.27 (chart)
KVM_Linux_crio TestStartStop/group/embed-certs/serial/UserAppExistsAfterStop (gopogh) 1.27 (chart)
KVM_Linux_crio TestStartStop/group/default-k8s-different-port/serial/DeployApp (gopogh) 1.91 (chart)
KVM_Linux_crio TestStartStop/group/default-k8s-different-port/serial/FirstStart (gopogh) 1.91 (chart)
Docker_Linux_containerd_arm64 TestMultiNode/serial/DeployApp2Nodes (gopogh) 2.04 (chart)
Docker_Linux_containerd_arm64 TestMultiNode/serial/PingHostFrom2Pods (gopogh) 2.04 (chart)
Docker_macOS TestStartStop/group/embed-certs/serial/SecondStart (gopogh) 2.27 (chart)
Docker_Linux_crio TestKubernetesUpgrade (gopogh) 5.00 (chart)
Docker_Linux_containerd TestKubernetesUpgrade (gopogh) 6.29 (chart)
Docker_Linux_containerd_arm64 TestKubernetesUpgrade (gopogh) 8.16 (chart)
Docker_Linux_containerd_arm64 TestFunctional/serial/LogsCmd (gopogh) 8.84 (chart)
Docker_Linux_containerd_arm64 TestFunctional/serial/LogsFileCmd (gopogh) 8.84 (chart)
Docker_Linux_crio_arm64 TestStartStop/group/old-k8s-version/serial/DeployApp (gopogh) 12.66 (chart)
Docker_Linux_crio_arm64 TestStartStop/group/no-preload/serial/FirstStart (gopogh) 15.19 (chart)
Docker_Linux_crio_arm64 TestStartStop/group/no-preload/serial/SecondStart (gopogh) 17.95 (chart)
Docker_Linux_containerd_arm64 TestAddons/parallel/Ingress (gopogh) 18.37 (chart)
Hyperkit_macOS TestDebPackageInstall/install_amd64_debian (gopogh) 10/kvm2-driver (chart)
Hyperkit_macOS TestDebPackageInstall/install_amd64_debian (gopogh) 9/kvm2-driver (chart)
Hyperkit_macOS TestDebPackageInstall/install_amd64_debian (gopogh) latest/kvm2-driver (chart)
Hyperkit_macOS TestDebPackageInstall/install_amd64_debian (gopogh) sid/kvm2-driver (chart)
More tests... Continued...

Too many tests failed - See test logs for more details.

To see the flake rates of all tests by environment, click here.

@minikube-pr-bot
Copy link

kvm2 driver with docker runtime

+----------------+----------+---------------------+
|    COMMAND     | MINIKUBE | MINIKUBE (PR 12265) |
+----------------+----------+---------------------+
| minikube start | 49.9s    | 50.7s               |
| enable ingress | 33.4s    | 36.4s               |
+----------------+----------+---------------------+

Times for minikube start: 49.1s 48.9s 51.6s 48.8s 51.1s
Times for minikube (PR 12265) start: 53.0s 50.8s 49.3s 47.7s 52.6s

Times for minikube ingress: 32.9s 31.4s 31.9s 39.4s 31.5s
Times for minikube (PR 12265) ingress: 40.5s 38.9s 31.4s 31.5s 39.5s

docker driver with docker runtime

+----------------+----------+---------------------+
|    COMMAND     | MINIKUBE | MINIKUBE (PR 12265) |
+----------------+----------+---------------------+
| minikube start | 22.9s    | 22.7s               |
| enable ingress | 35.2s    | 33.8s               |
+----------------+----------+---------------------+

Times for minikube start: 22.7s 23.3s 23.0s 23.6s 22.1s
Times for minikube (PR 12265) start: 23.1s 21.9s 23.2s 22.8s 22.6s

Times for minikube ingress: 36.5s 36.6s 31.5s 35.5s 36.0s
Times for minikube (PR 12265) ingress: 32.0s 35.5s 30.6s 34.6s 36.1s

docker driver with containerd runtime

+----------------+----------+---------------------+
|    COMMAND     | MINIKUBE | MINIKUBE (PR 12265) |
+----------------+----------+---------------------+
| minikube start | 44.1s    | 43.9s               |
| enable ingress |          |                     |
+----------------+----------+---------------------+

Times for minikube start: 44.8s 43.7s 43.7s 44.6s 43.7s
Times for minikube (PR 12265) start: 44.5s 43.6s 43.8s 44.1s 43.6s

@minikube-pr-bot
Copy link

kvm2 driver with docker runtime
error collecting results for kvm2 driver: timing run 1 with minikube: timing cmd: [out/minikube start --driver=kvm2 --container-runtime=docker]: waiting for minikube: exit status 109
docker driver with docker runtime
error downloading artifacts: downloading artifacts: exit status 81docker driver with containerd runtime
error downloading artifacts: downloading artifacts: exit status 81

@minikube-pr-bot
Copy link

These are the flake rates of all failed tests.

Environment Failed Tests Flake Rate (%)
Docker_Linux_containerd_arm64 TestFunctional/parallel/SaveImage (gopogh) n/a
Docker_Linux_crio_arm64 TestFunctional/parallel/SaveImage (gopogh) n/a
Docker_Linux_crio_arm64 TestFunctional/parallel/SaveImageToFile (gopogh) n/a
Docker_macOS TestAddons/parallel/Registry (gopogh) n/a
Docker_macOS TestFunctional/parallel/SaveImage (gopogh) n/a
Docker_macOS TestFunctional/parallel/SaveImageToFile (gopogh) n/a
Hyperkit_macOS TestFunctional/parallel/SaveImage (gopogh) n/a
Hyperkit_macOS TestFunctional/parallel/SaveImageToFile (gopogh) n/a
Docker_Linux_containerd_arm64 TestMultiNode/serial/DeleteNode (gopogh) 0.00 (chart)
Docker_macOS TestAddons/parallel/HelmTiller (gopogh) 0.00 (chart)
Docker_macOS TestFunctional/parallel/BuildImage (gopogh) 0.00 (chart)
Docker_macOS TestStartStop/group/newest-cni/serial/FirstStart (gopogh) 0.00 (chart)
Docker_Windows TestFunctional/parallel/LoadImageFromFile (gopogh) 0.00 (chart)
Docker_Windows TestNetworkPlugins/group/bridge/NetCatPod (gopogh) 0.00 (chart)
Docker_Linux TestAddons/parallel/Ingress (gopogh) 0.67 (chart)
Docker_Windows TestForceSystemdFlag (gopogh) 0.81 (chart)
Docker_Linux_crio_arm64 TestStartStop/group/newest-cni/serial/FirstStart (gopogh) 1.37 (chart)
Docker_macOS TestDownloadOnlyKic (gopogh) 1.92 (chart)
Docker_macOS TestDownloadOnly/v1.21.3/preload-exists (gopogh) 1.92 (chart)
Docker_macOS TestFunctional/parallel/MySQL (gopogh) 1.92 (chart)
Docker_macOS TestAddons/parallel/Ingress (gopogh) 2.50 (chart)
Hyperkit_macOS TestPreload (gopogh) 2.68 (chart)
Docker_macOS TestAddons/parallel/GCPAuth (gopogh) 5.00 (chart)
Docker_Linux_containerd_arm64 TestMultiNode/serial/RestartKeepsNodes (gopogh) 5.04 (chart)
Docker_macOS TestFunctional/parallel/TunnelCmd/serial/AccessDirect (gopogh) 5.77 (chart)
Docker_Windows TestFunctional/serial/LogsFileCmd (gopogh) 6.20 (chart)
Docker_macOS TestFunctional/parallel/TunnelCmd/serial/WaitService/Setup (gopogh) 6.67 (chart)
Docker_Windows TestStartStop/group/embed-certs/serial/AddonExistsAfterStop (gopogh) 7.41 (chart)
Docker_Windows TestStartStop/group/embed-certs/serial/SecondStart (gopogh) 7.41 (chart)
Docker_Windows TestStartStop/group/embed-certs/serial/UserAppExistsAfterStop (gopogh) 7.41 (chart)
More tests... Continued...

Too many tests failed - See test logs for more details.

To see the flake rates of all tests by environment, click here.

@minikube-pr-bot
Copy link

These are the flake rates of all failed tests.

Environment Failed Tests Flake Rate (%)
Docker_Linux_containerd_arm64 TestFunctional/parallel/SaveImage (gopogh) n/a
Docker_Linux_docker_arm64 TestFunctional/parallel/SaveImage (gopogh) n/a
Docker_Linux_docker_arm64 TestFunctional/parallel/SaveImageToFile (gopogh) n/a
Docker_macOS TestAddons/parallel/Registry (gopogh) n/a
Docker_macOS TestFunctional/parallel/SaveImage (gopogh) n/a
Docker_macOS TestFunctional/parallel/SaveImageToFile (gopogh) n/a
Docker_Linux_containerd TestErrorSpam/setup (gopogh) 0.00 (chart)
Docker_macOS TestStartStop/group/old-k8s-version/serial/FirstStart (gopogh) 0.00 (chart)
Docker_Windows TestFunctional/parallel/LoadImageFromFile (gopogh) 0.00 (chart)
Docker_Windows TestPause/serial/Unpause (gopogh) 0.00 (chart)
Docker_Windows TestForceSystemdFlag (gopogh) 0.81 (chart)
Docker_Windows TestStartStop/group/default-k8s-different-port/serial/EnableAddonAfterStop (gopogh) 0.93 (chart)
Docker_Windows TestStartStop/group/default-k8s-different-port/serial/EnableAddonWhileActive (gopogh) 0.93 (chart)
Docker_Windows TestStartStop/group/default-k8s-different-port/serial/FirstStart (gopogh) 0.93 (chart)
Docker_Windows TestStartStop/group/default-k8s-different-port/serial/Stop (gopogh) 0.93 (chart)
Docker_Windows TestStartStop/group/embed-certs/serial/DeployApp (gopogh) 0.93 (chart)
Docker_Windows TestStartStop/group/embed-certs/serial/EnableAddonAfterStop (gopogh) 0.93 (chart)
Docker_Windows TestStartStop/group/embed-certs/serial/EnableAddonWhileActive (gopogh) 0.93 (chart)
Docker_Windows TestStartStop/group/embed-certs/serial/FirstStart (gopogh) 0.93 (chart)
Docker_Windows TestStartStop/group/embed-certs/serial/Stop (gopogh) 0.93 (chart)
Docker_Windows TestStartStop/group/newest-cni/serial/EnableAddonAfterStop (gopogh) 0.93 (chart)
Docker_Windows TestStartStop/group/newest-cni/serial/FirstStart (gopogh) 0.93 (chart)
Docker_Windows TestStartStop/group/newest-cni/serial/Stop (gopogh) 0.93 (chart)
Docker_Windows TestStartStop/group/no-preload/serial/DeployApp (gopogh) 0.93 (chart)
Docker_Windows TestStartStop/group/no-preload/serial/EnableAddonAfterStop (gopogh) 0.93 (chart)
Docker_Windows TestStartStop/group/no-preload/serial/EnableAddonWhileActive (gopogh) 0.93 (chart)
Docker_Windows TestStartStop/group/no-preload/serial/Stop (gopogh) 0.93 (chart)
Docker_Linux_containerd TestStartStop/group/newest-cni/serial/SecondStart (gopogh) 1.33 (chart)
Docker_Linux_containerd TestStartStop/group/newest-cni/serial/VerifyKubernetesImages (gopogh) 1.33 (chart)
Docker_Windows TestStoppedBinaryUpgrade/Upgrade (gopogh) 1.35 (chart)
More tests... Continued...

Too many tests failed - See test logs for more details.

To see the flake rates of all tests by environment, click here.

@medyagh
Copy link
Member

medyagh commented Aug 25, 2021

thank you very much @prezha good work

@medyagh medyagh merged commit 527a3d9 into kubernetes:master Aug 25, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
approved Indicates a PR has been approved by an approver from all required OWNERS files. cncf-cla: yes Indicates the PR's author has signed the CNCF CLA. ok-to-test Indicates a non-member PR verified by an org member that is safe to test. size/XL Denotes a PR that changes 500-999 lines, ignoring generated files.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Implement minikube image save
5 participants