mirror of
https://github.com/rancher/rancher-docs.git
synced 2026-05-19 11:25:15 +00:00
Add doc about lazy pulling and eStargz (#3322)
Signed-off-by: Kohei Tokunaga <ktokunaga.mail@gmail.com>
This commit is contained in:
@@ -22,6 +22,7 @@ This section contains advanced information describing the different ways you can
|
||||
- [Enabling cgroups for Raspbian Buster](#enabling-cgroups-for-raspbian-buster)
|
||||
- [SELinux Support](#selinux-support)
|
||||
- [Additional preparation for (Red Hat/CentOS) Enterprise Linux](#additional-preparation-for-red-hat-centos-enterprise-linux)
|
||||
- [Enabling Lazy Pulling of eStargz (Experimental)](#enabling-lazy-pulling-of-estargz-experimental)
|
||||
|
||||
# Certificate Rotation
|
||||
|
||||
@@ -394,3 +395,57 @@ If enabled, it is required to disable nm-cloud-setup and reboot the node:
|
||||
systemctl disable nm-cloud-setup.service nm-cloud-setup.timer
|
||||
reboot
|
||||
```
|
||||
|
||||
# Enabling Lazy Pulling of eStargz (Experimental)
|
||||
|
||||
## What's lazy pulling and eStargz?
|
||||
|
||||
Pulling images is known as one of the time-consuming steps in the container lifecycle.
|
||||
According to [Harter, et al.](https://www.usenix.org/conference/fast16/technical-sessions/presentation/harter),
|
||||
|
||||
> pulling packages accounts for 76% of container start time, but only 6.4% of that data is read
|
||||
|
||||
To address this issue, k3s experimentally supports *lazy pulling* of image contents.
|
||||
This allows k3s to start a container before the entire image has been pulled.
|
||||
Instead, the necessary chunks of contents (e.g. individual files) are fetched on-demand.
|
||||
Especially for large images, this technique can shorten the container startup latency.
|
||||
|
||||
To enable lazy pulling, the target image needs to be formatted as [*eStargz*](https://github.com/containerd/stargz-snapshotter/blob/main/docs/stargz-estargz.md).
|
||||
This is an OCI-alternative but 100% OCI-compatible image format for lazy pulling.
|
||||
Because of the compatibility, eStargz can be pushed to standard container registries (e.g. ghcr.io) as well as this is *still runnable* even on eStargz-agnostic runtimes.
|
||||
|
||||
eStargz is developed based on the [stargz format proposed by Google CRFS project](https://github.com/google/crfs) but comes with practical features including content verification and performance optimization.
|
||||
For more details about lazy pulling and eStargz, please refer to [Stargz Snapshotter project repository](https://github.com/containerd/stargz-snapshotter).
|
||||
|
||||
## Configure k3s for lazy pulling of eStargz
|
||||
|
||||
As shown in the following, `--snapshotter=stargz` option is needed for k3s server and agent.
|
||||
|
||||
```
|
||||
k3s server --snapshotter=stargz
|
||||
```
|
||||
|
||||
With this configuration, you can perform lazy pulling for eStargz-formatted images.
|
||||
The following Pod manifest uses eStargz-formatted `node:13.13.0` image (`ghcr.io/stargz-containers/node:13.13.0-esgz`).
|
||||
k3s performs lazy pulling for this image.
|
||||
|
||||
```
|
||||
apiVersion: v1
|
||||
kind: Pod
|
||||
metadata:
|
||||
name: nodejs
|
||||
spec:
|
||||
containers:
|
||||
- name: nodejs-estargz
|
||||
image: ghcr.io/stargz-containers/node:13.13.0-esgz
|
||||
command: ["node"]
|
||||
args:
|
||||
- -e
|
||||
- var http = require('http');
|
||||
http.createServer(function(req, res) {
|
||||
res.writeHead(200);
|
||||
res.end('Hello World!\n');
|
||||
}).listen(80);
|
||||
ports:
|
||||
- containerPort: 80
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user