Commit Graph

11307 Commits

Author SHA1 Message Date
Maksym Pavlenko
0c5e5c3579 Fix protobuf after rebase
Signed-off-by: Maksym Pavlenko <pavlenko.maksym@gmail.com>
2022-04-08 13:33:48 -07:00
Maksym Pavlenko
fa02477ca9 [sandbox] Add sandbox shim skeleton
Signed-off-by: Maksym Pavlenko <pavlenko.maksym@gmail.com>
2022-04-08 13:33:48 -07:00
Maksym Pavlenko
35195737e7 [sandbox] Register shim plugin after #6301
Signed-off-by: Maksym Pavlenko <pavlenko.maksym@gmail.com>
2022-04-08 13:33:48 -07:00
Maksym Pavlenko
17a2aaded3 [sandbox] Add ctr support
Signed-off-by: Maksym Pavlenko <pavlenko.maksym@gmail.com>
2022-04-08 13:33:48 -07:00
Maksym Pavlenko
982de8a5d5 Launch sandboxed containers from task service
Signed-off-by: Maksym Pavlenko <pavlenko.maksym@gmail.com>
2022-04-08 13:33:47 -07:00
Maksym Pavlenko
00f7a6bf2b [sandbox] Address PR review comments
Signed-off-by: Maksym Pavlenko <pavlenko.maksym@gmail.com>
2022-04-08 13:33:47 -07:00
Maksym Pavlenko
6343fe3ea2 [sandbox] Implement sandbox controller
Signed-off-by: Maksym Pavlenko <pavlenko.maksym@gmail.com>
2022-04-08 13:33:47 -07:00
Maksym Pavlenko
eaccbf1d03 [sandbox] Add clients
Signed-off-by: Maksym Pavlenko <pavlenko.maksym@gmail.com>
2022-04-08 13:33:47 -07:00
Maksym Pavlenko
df234edeb4 [sandbox] Add controller service
Signed-off-by: Maksym Pavlenko <pavlenko.maksym@gmail.com>
2022-04-08 13:33:47 -07:00
Maksym Pavlenko
a433beb79f [sandbox] Update vendor
Signed-off-by: Maksym Pavlenko <pavlenko.maksym@gmail.com>
2022-04-08 13:33:47 -07:00
Maksym Pavlenko
0e77f758a4 [sandbox] Implement store service
Signed-off-by: Maksym Pavlenko <pavlenko.maksym@gmail.com>
2022-04-08 13:33:47 -07:00
Maksym Pavlenko
13eb1a4bb0 [sandbox] Revendor API changes
Signed-off-by: Maksym Pavlenko <pavlenko.maksym@gmail.com>
2022-04-08 13:33:47 -07:00
Maksym Pavlenko
d7ece87243 [sandbox] Save sandbox ID to container's store
Signed-off-by: Maksym Pavlenko <pavlenko.maksym@gmail.com>
2022-04-08 13:33:47 -07:00
Maksym Pavlenko
cab7d5b3d2 [sandbox] Implement metadata store
Signed-off-by: Maksym Pavlenko <pavlenko.maksym@gmail.com>
2022-04-08 13:33:47 -07:00
Maksym Pavlenko
87d4c8923e [sandbox] Add basic sandbox structures and interfaces
Signed-off-by: Maksym Pavlenko <pavlenko.maksym@gmail.com>
2022-04-08 13:33:47 -07:00
Maksym Pavlenko
4445d0a8da [sandbox] Add protobuf definitions
Signed-off-by: Maksym Pavlenko <pavlenko.maksym@gmail.com>
2022-04-08 13:33:47 -07:00
Ye Sijun
3df7674058 add restart policy for enhanced restart manager
Signed-off-by: Ye Sijun <junnplus@gmail.com>
2022-04-09 01:04:11 +08:00
Kazuyoshi Kato
b5ef9b49ae
Merge pull request #6790 from aznashwan/windows-gcloud-upload-pin
Pin upload-cloud-storage action to 0.8.0 in Windows workflow.
2022-04-08 09:40:54 -07:00
Nashwan Azhari
7e70ad9fb5 Pin upload-cloud-storage action to 0.8.0 in Windows workflow.
Pin the version of the `google-github-actions/upload-cloud-storage`
action library to `0.8.0` to avoid a regression which prevents
test results being uploaded in the Windows periodic workflow.

Signed-off-by: Nashwan Azhari <nazhari@cloudbasesolutions.com>
2022-04-08 14:15:02 +03:00
Cory Snider
927b34e41e tracing: fix panic on startup when configured
When support for http/protobuf was added, the OTLP tracing processor
plugin was mistakenly changed to return a raw OTLP exporter instance.
Consequently, the type-assertion to a trace.SpanProcessor inside the
tracing pluigin would panic if the processor plugin was configured.
Modify the OTLP plugin to return a BatchSpanProcessor derived from the
exporter once more.

Signed-off-by: Cory Snider <csnider@mirantis.com>
2022-04-07 19:51:14 -04:00
Derek McGowan
030c1ac1ca
Merge pull request #6785 from shurup/patch-1
docs: add Deckhouse to the list of adopters
2022-04-07 15:25:20 -07:00
Dmitry Shurupov
1a45c2c5f3 docs: add Deckhouse to the list of adopters
Signed-off-by: Dmitry Shurupov <dmitry.shurupov@flant.com>
2022-04-07 20:27:33 +07:00
Kazuyoshi Kato
f033f6ff85
Merge pull request #6778 from AkihiroSuda/docs-cri-simplify
Add `docs/snapshotters`; simplify `docs/cri`
2022-04-06 09:23:55 -07:00
Kazuyoshi Kato
6fdaebde35
Merge pull request #6672 from linxiulei/fix_rel
Turn paths from cmdline into absolute paths
2022-04-06 09:20:10 -07:00
Maksym Pavlenko
d6cf0d8984
Merge pull request #6654 from bart0sh/cdi6
CRI: add support for CDI device injection
2022-04-06 08:57:10 -07:00
Ed Bartosh
825c1c58a9 CDI: update go.mod and vendor deps
Signed-off-by: Ed Bartosh <eduard.bartosh@intel.com>
2022-04-06 13:10:59 +03:00
Ed Bartosh
ff5c55847a move CDI calls to the linux-only code
Signed-off-by: Ed Bartosh <eduard.bartosh@intel.com>
2022-04-06 13:10:59 +03:00
Ed Bartosh
c9b4ccf83e add configuration for CDI
Signed-off-by: Ed Bartosh <eduard.bartosh@intel.com>
2022-04-06 13:10:54 +03:00
Ed Bartosh
aed0538dac cri: implement CDI device injection
Extract the names of requested CDI devices and update the OCI
Spec according to the corresponding CDI device specifications.

CDI devices are requested using container annotations in the
cdi.k8s.io namespace. Once CRI gains dedicated fields for CDI
injection the snippet for extracting CDI names will need an
update.

Signed-off-by: Ed Bartosh <eduard.bartosh@intel.com>
2022-04-06 13:07:54 +03:00
Derek McGowan
ffddd4446c
Merge pull request #6761 from kzys/bbolt-freelist
Disable writing freelist to make the file robust against data corruptions
2022-04-05 21:36:49 -07:00
Akihiro Suda
35383fb428
docs/cri: simplify
Signed-off-by: Akihiro Suda <akihiro.suda.cz@hco.ntt.co.jp>
2022-04-06 13:31:18 +09:00
Akihiro Suda
493baa6e7c
Add docs/snapshots
Signed-off-by: Akihiro Suda <akihiro.suda.cz@hco.ntt.co.jp>
2022-04-06 13:31:18 +09:00
Derek McGowan
d351162178
Merge pull request #6777 from AkihiroSuda/docs-move-design-historical
mv design docs/historical/design
2022-04-05 21:29:52 -07:00
Derek McGowan
a5b0d3b3af
Merge pull request #6702 from fuweid/RFC-enhance-pull-performance
CRI: improve image pulling performance
2022-04-05 21:28:34 -07:00
Wei Fu
8113758568 CRI: improve image pulling performance
Background:

With current design, the content backend uses key-lock for long-lived
write transaction. If the content reference has been marked for write
transaction, the other requestes on the same reference will fail fast with
unavailable error. Since the metadata plugin is based on boltbd which
only supports single-writer, the content backend can't block or handle
the request too long. It requires the client to handle retry by itself,
like OpenWriter - backoff retry helper. But the maximum retry interval
can be up to 2 seconds. If there are several concurrent requestes fo the
same image, the waiters maybe wakeup at the same time and there is only
one waiter can continue. A lot of waiters will get into sleep and we will
take long time to finish all the pulling jobs and be worse if the image
has many more layers, which mentioned in issue #4937.

After fetching, containerd.Pull API allows several hanlers to commit
same ChainID snapshotter but only one can be done successfully. Since
unpack tar.gz is time-consuming job, it can impact the performance on
unpacking for same ChainID snapshotter in parallel.

For instance, the Request 2 doesn't need to prepare and commit, it
should just wait for Request 1 finish, which mentioned in pull
request #6318.

```text
	Request 1	Request 2

	Prepare
	   |
	   |
	   |
	   |		Prepare
	Commit		   |
			   |
			   |
			   |
			Commit(failed on exist)
```

Both content backoff retry and unnecessary unpack impacts the performance.

Solution:

Introduced the duplicate suppression in fetch and unpack context. The
deplicate suppression uses key-mutex and single-waiter-notify to support
singleflight. The caller can use the duplicate suppression in different
PullImage handlers so that we can avoid unnecessary unpack and spin-lock
in OpenWriter.

Test Result:

Before enhancement:

```bash
➜  /tmp sudo bash testing.sh "localhost:5000/redis:latest" 20
crictl pull localhost:5000/redis:latest (x20) takes ...

real	1m6.172s
user	0m0.268s
sys	0m0.193s

docker pull localhost:5000/redis:latest (x20) takes ...

real	0m1.324s
user	0m0.441s
sys	0m0.316s

➜  /tmp sudo bash testing.sh "localhost:5000/golang:latest" 20
crictl pull localhost:5000/golang:latest (x20) takes ...

real	1m47.657s
user	0m0.284s
sys	0m0.224s

docker pull localhost:5000/golang:latest (x20) takes ...

real	0m6.381s
user	0m0.488s
sys	0m0.358s
```

With this enhancement:

```bash
➜  /tmp sudo bash testing.sh "localhost:5000/redis:latest" 20
crictl pull localhost:5000/redis:latest (x20) takes ...

real	0m1.140s
user	0m0.243s
sys	0m0.178s

docker pull localhost:5000/redis:latest (x20) takes ...

real	0m1.239s
user	0m0.463s
sys	0m0.275s

➜  /tmp sudo bash testing.sh "localhost:5000/golang:latest" 20
crictl pull localhost:5000/golang:latest (x20) takes ...

real	0m5.546s
user	0m0.217s
sys	0m0.219s

docker pull localhost:5000/golang:latest (x20) takes ...

real	0m6.090s
user	0m0.501s
sys	0m0.331s
```

Test Script:

localhost:5000/{redis|golang}:latest is equal to
docker.io/library/{redis|golang}:latest. The image is hold in local registry
service by `docker run -d -p 5000:5000 --name registry registry:2`.

```bash

image_name="${1}"
pull_times="${2:-10}"

cleanup() {
  ctr image rmi "${image_name}"
  ctr -n k8s.io image rmi "${image_name}"
  crictl rmi "${image_name}"
  docker rmi "${image_name}"
  sleep 2
}

crictl_testing() {
  for idx in $(seq 1 ${pull_times}); do
    crictl pull "${image_name}" > /dev/null 2>&1 &
  done
  wait
}

docker_testing() {
  for idx in $(seq 1 ${pull_times}); do
    docker pull "${image_name}" > /dev/null 2>&1 &
  done
  wait
}

cleanup > /dev/null 2>&1

echo 3 > /proc/sys/vm/drop_caches
sleep 3
echo "crictl pull $image_name (x${pull_times}) takes ..."
time crictl_testing
echo

echo 3 > /proc/sys/vm/drop_caches
sleep 3
echo "docker pull $image_name (x${pull_times}) takes ..."
time docker_testing
```

Fixes: #4937
Close: #4985
Close: #6318

Signed-off-by: Wei Fu <fuweid89@gmail.com>
2022-04-06 07:14:18 +08:00
Kazuyoshi Kato
83f44ddab5
Merge pull request #6776 from AkihiroSuda/docs-remove-runtime-v1
docs: remove runtime v1; migrate config v1 to v2
2022-04-05 11:13:50 -07:00
Kazuyoshi Kato
626608e272
Merge pull request #6779 from gabriel-samfira/skip-flaky-test
Skip flaky test on Windows
2022-04-05 11:12:02 -07:00
Maksym Pavlenko
acdbf05adc
Merge pull request #6775 from AkihiroSuda/docs-typo-20220405
docs/getting-started.md: typo
2022-04-05 09:36:00 -07:00
Gabriel Adrian Samfira
16fbbaeeea
Skip flaky test on Windows
The tty test fails on ltsc2022. Disable that test until we manage to
reproduce and fix it.

Signed-off-by: Gabriel Adrian Samfira <gsamfira@cloudbasesolutions.com>
2022-04-05 16:43:48 +03:00
Akihiro Suda
44d7cd1528
mv design docs/historical/design
The docs have been out of the sync with the actual implementation since 2018.

Signed-off-by: Akihiro Suda <akihiro.suda.cz@hco.ntt.co.jp>
2022-04-05 16:50:12 +09:00
Akihiro Suda
195fc74244
docs: migrate config v1 to v2
Signed-off-by: Akihiro Suda <akihiro.suda.cz@hco.ntt.co.jp>
2022-04-05 16:41:54 +09:00
Akihiro Suda
84cebafe8f
docs: remove deprecated io.containerd.runtime.v1.linux
Signed-off-by: Akihiro Suda <akihiro.suda.cz@hco.ntt.co.jp>
2022-04-05 16:13:42 +09:00
Akihiro Suda
83665bf8d2
docs/getting-started.md: typo
Signed-off-by: Akihiro Suda <akihiro.suda.cz@hco.ntt.co.jp>
2022-04-05 15:56:21 +09:00
Derek McGowan
e079e4a155
Merge pull request #6750 from mxpv/tracing
Add no_tracing tag
2022-04-04 09:53:22 -07:00
Kazuyoshi Kato
0f5c06bd72
Merge pull request #6754 from AkihiroSuda/move-historical-docs
Move historical docs to `docs/historical`
2022-04-04 09:48:49 -07:00
Akihiro Suda
7f7ba2b1a0
Merge pull request #6768 from gabriel-samfira/tidy-integration-modules
Run go mod tidy in integration tests
2022-04-04 18:53:14 +09:00
Akihiro Suda
ccea927d95
Move historical docs to docs/historical
To clarify that end users do not need to read these docs, and that these
docs do not need to be updated

Signed-off-by: Akihiro Suda <akihiro.suda.cz@hco.ntt.co.jp>
2022-04-04 17:48:46 +09:00
Gabriel Adrian Samfira
50921e71bb
Run go mod tidy in integration tests
make integration currently fails due to outdated go.mod.

Signed-off-by: Gabriel Adrian Samfira <gsamfira@cloudbasesolutions.com>
2022-04-04 11:01:56 +03:00
Akihiro Suda
9f4e13973d
Merge pull request #6765 from thaJeztah/move_indirects
go.mod: move indirects, and update integration go.mod to 1.18
2022-04-03 07:09:20 +09:00
Phil Estes
aaf64c455a
Merge pull request #6762 from mxpv/testify
Drop gotest.tools
2022-04-02 17:25:32 -04:00