diff options
author | Chen Qi <Qi.Chen@windriver.com> | 2023-03-01 01:52:22 -0800 |
---|---|---|
committer | Bruce Ashfield <bruce.ashfield@gmail.com> | 2023-03-02 16:25:47 -0500 |
commit | 29bf13e5f6b9cea57ad77a97602383efc3de3f21 (patch) | |
tree | c707c6c8f70e3e97ac2000b91dbd72a413055331 | |
parent | 3601181edf07cb59c23501d7ae5f40530bc46596 (diff) | |
download | meta-virtualization-29bf13e5f6b9cea57ad77a97602383efc3de3f21.tar.gz |
cri-o: update crio.conf to match the current version 1.23
The old crio.conf file can cause cri-o start failure. The error
message is as below.
validating runtime config: runtime validation: failed to \
translate monitor fields for runtime runc: cgroupfs manager \
conmon cgroup should be 'pod' or empty
Use new crio.conf file to solve this issue. The file is generated
by 'crio --config="" config --default' command, as indicated in
the old crio.conf file.
With this config file update, the crio.service can now start correctly.
Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
-rw-r--r-- | recipes-containers/cri-o/files/crio.conf | 604 |
1 files changed, 507 insertions, 97 deletions
diff --git a/recipes-containers/cri-o/files/crio.conf b/recipes-containers/cri-o/files/crio.conf index 899d255b..d48ddae1 100644 --- a/recipes-containers/cri-o/files/crio.conf +++ b/recipes-containers/cri-o/files/crio.conf | |||
@@ -1,146 +1,556 @@ | |||
1 | # generated via: crio --config="" config --default | 1 | # generated via: crio --config="" config --default |
2 | 2 | ||
3 | # The "crio" table contains all of the server options. | 3 | # The CRI-O configuration file specifies all of the available configuration |
4 | # options and command-line flags for the crio(8) OCI Kubernetes Container Runtime | ||
5 | # daemon, but in a TOML format that can be more easily modified and versioned. | ||
6 | # | ||
7 | # Please refer to crio.conf(5) for details of all configuration options. | ||
8 | |||
9 | # CRI-O supports partial configuration reload during runtime, which can be | ||
10 | # done by sending SIGHUP to the running process. Currently supported options | ||
11 | # are explicitly mentioned with: 'This option supports live configuration | ||
12 | # reload'. | ||
13 | |||
14 | # CRI-O reads its storage defaults from the containers-storage.conf(5) file | ||
15 | # located at /etc/containers/storage.conf. Modify this storage configuration if | ||
16 | # you want to change the system's defaults. If you want to modify storage just | ||
17 | # for CRI-O, you can change the storage configuration options here. | ||
4 | [crio] | 18 | [crio] |
5 | 19 | ||
6 | # root is a path to the "root directory". CRIO stores all of its data, | 20 | # Path to the "root directory". CRI-O stores all of its data, including |
7 | # including container images, in this directory. | 21 | # containers images, in this directory. |
8 | root = "/var/lib/containers/storage" | 22 | root = "/var/lib/containers/storage" |
9 | 23 | ||
10 | # run is a path to the "run directory". CRIO stores all of its state | 24 | # Path to the "run directory". CRI-O stores all of its state in this directory. |
11 | # in this directory. | 25 | runroot = "/run/containers/storage" |
12 | runroot = "/var/run/containers/storage" | ||
13 | 26 | ||
14 | # storage_driver select which storage driver is used to manage storage | 27 | # Storage driver used to manage the storage of images and containers. Please |
15 | # of images and containers. | 28 | # refer to containers-storage.conf(5) to see all available storage drivers. |
16 | storage_driver = "" | 29 | storage_driver = "overlay" |
17 | 30 | ||
18 | # storage_option is used to pass an option to the storage driver. | 31 | # List to pass options to the storage driver. Please refer to |
32 | # containers-storage.conf(5) to see all available storage options. | ||
19 | storage_option = [ | 33 | storage_option = [ |
34 | "overlay.mountopt=nodev", | ||
20 | ] | 35 | ] |
21 | 36 | ||
22 | # The "crio.api" table contains settings for the kubelet/gRPC | 37 | # The default log directory where all logs will go unless directly specified by |
23 | # interface (which is also used by crioctl). | 38 | # the kubelet. The log directory specified must be an absolute directory. |
39 | log_dir = "/var/log/crio/pods" | ||
40 | |||
41 | # Location for CRI-O to lay down the temporary version file. | ||
42 | # It is used to check if crio wipe should wipe containers, which should | ||
43 | # always happen on a node reboot | ||
44 | version_file = "/var/run/crio/version" | ||
45 | |||
46 | # Location for CRI-O to lay down the persistent version file. | ||
47 | # It is used to check if crio wipe should wipe images, which should | ||
48 | # only happen when CRI-O has been upgraded | ||
49 | version_file_persist = "/var/lib/crio/version" | ||
50 | |||
51 | # InternalWipe is whether CRI-O should wipe containers and images after a reboot when the server starts. | ||
52 | # If set to false, one must use the external command 'crio wipe' to wipe the containers and images in these situations. | ||
53 | internal_wipe = true | ||
54 | |||
55 | # Location for CRI-O to lay down the clean shutdown file. | ||
56 | # It is used to check whether crio had time to sync before shutting down. | ||
57 | # If not found, crio wipe will clear the storage directory. | ||
58 | clean_shutdown_file = "/var/lib/crio/clean.shutdown" | ||
59 | |||
60 | # The crio.api table contains settings for the kubelet/gRPC interface. | ||
24 | [crio.api] | 61 | [crio.api] |
25 | 62 | ||
26 | # listen is the path to the AF_LOCAL socket on which crio will listen. | 63 | # Path to AF_LOCAL socket on which CRI-O will listen. |
27 | listen = "/var/run/crio/crio.sock" | 64 | listen = "/var/run/crio/crio.sock" |
28 | 65 | ||
29 | # stream_address is the IP address on which the stream server will listen | 66 | # IP address on which the stream server will listen. |
30 | stream_address = "" | 67 | stream_address = "127.0.0.1" |
68 | |||
69 | # The port on which the stream server will listen. If the port is set to "0", then | ||
70 | # CRI-O will allocate a random free port number. | ||
71 | stream_port = "0" | ||
72 | |||
73 | # Enable encrypted TLS transport of the stream server. | ||
74 | stream_enable_tls = false | ||
31 | 75 | ||
32 | # stream_port is the port on which the stream server will listen | 76 | # Length of time until open streams terminate due to lack of activity |
33 | stream_port = "10010" | 77 | stream_idle_timeout = "" |
34 | 78 | ||
35 | # file_locking is whether file-based locking will be used instead of | 79 | # Path to the x509 certificate file used to serve the encrypted stream. This |
36 | # in-memory locking | 80 | # file can change, and CRI-O will automatically pick up the changes within 5 |
37 | file_locking = true | 81 | # minutes. |
82 | stream_tls_cert = "" | ||
38 | 83 | ||
39 | # The "crio.runtime" table contains settings pertaining to the OCI | 84 | # Path to the key file used to serve the encrypted stream. This file can |
40 | # runtime used and options for how to set up and manage the OCI runtime. | 85 | # change and CRI-O will automatically pick up the changes within 5 minutes. |
86 | stream_tls_key = "" | ||
87 | |||
88 | # Path to the x509 CA(s) file used to verify and authenticate client | ||
89 | # communication with the encrypted stream. This file can change and CRI-O will | ||
90 | # automatically pick up the changes within 5 minutes. | ||
91 | stream_tls_ca = "" | ||
92 | |||
93 | # Maximum grpc send message size in bytes. If not set or <=0, then CRI-O will default to 16 * 1024 * 1024. | ||
94 | grpc_max_send_msg_size = 83886080 | ||
95 | |||
96 | # Maximum grpc receive message size. If not set or <= 0, then CRI-O will default to 16 * 1024 * 1024. | ||
97 | grpc_max_recv_msg_size = 83886080 | ||
98 | |||
99 | # The crio.runtime table contains settings pertaining to the OCI runtime used | ||
100 | # and options for how to set up and manage the OCI runtime. | ||
41 | [crio.runtime] | 101 | [crio.runtime] |
42 | 102 | ||
43 | # runtime is the OCI compatible runtime used for trusted container workloads. | 103 | # A list of ulimits to be set in containers by default, specified as |
44 | # This is a mandatory setting as this runtime will be the default one | 104 | # "<ulimit name>=<soft limit>:<hard limit>", for example: |
45 | # and will also be used for untrusted container workloads if | 105 | # "nofile=1024:2048" |
46 | # runtime_untrusted_workload is not set. | 106 | # If nothing is set here, settings will be inherited from the CRI-O daemon |
47 | runtime = "/usr/bin/runc" | 107 | default_ulimits = [ |
48 | 108 | ] | |
49 | # runtime_untrusted_workload is the OCI compatible runtime used for untrusted | 109 | |
50 | # container workloads. This is an optional setting, except if | 110 | # If true, the runtime will not use pivot_root, but instead use MS_MOVE. |
51 | # default_container_trust is set to "untrusted". | 111 | no_pivot = false |
52 | runtime_untrusted_workload = "" | 112 | |
53 | 113 | # decryption_keys_path is the path where the keys required for | |
54 | # default_workload_trust is the default level of trust crio puts in container | 114 | # image decryption are stored. This option supports live configuration reload. |
55 | # workloads. It can either be "trusted" or "untrusted", and the default | 115 | decryption_keys_path = "/etc/crio/keys/" |
56 | # is "trusted". | 116 | |
57 | # Containers can be run through different container runtimes, depending on | 117 | # Path to the conmon binary, used for monitoring the OCI runtime. |
58 | # the trust hints we receive from kubelet: | 118 | # Will be searched for using $PATH if empty. |
59 | # - If kubelet tags a container workload as untrusted, crio will try first to | 119 | conmon = "" |
60 | # run it through the untrusted container workload runtime. If it is not set, | 120 | |
61 | # crio will use the trusted runtime. | 121 | # Cgroup setting for conmon |
62 | # - If kubelet does not provide any information about the container workload trust | 122 | conmon_cgroup = "system.slice" |
63 | # level, the selected runtime will depend on the default_container_trust setting. | 123 | |
64 | # If it is set to "untrusted", then all containers except for the host privileged | 124 | # Environment variable list for the conmon process, used for passing necessary |
65 | # ones, will be run by the runtime_untrusted_workload runtime. Host privileged | 125 | # environment variables to conmon or the runtime. |
66 | # containers are by definition trusted and will always use the trusted container | ||
67 | # runtime. If default_container_trust is set to "trusted", crio will use the trusted | ||
68 | # container runtime for all containers. | ||
69 | default_workload_trust = "trusted" | ||
70 | |||
71 | # conmon is the path to conmon binary, used for managing the runtime. | ||
72 | conmon = "/usr/bin/conmon" | ||
73 | |||
74 | # conmon_env is the environment variable list for conmon process, | ||
75 | # used for passing necessary environment variable to conmon or runtime. | ||
76 | conmon_env = [ | 126 | conmon_env = [ |
77 | "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin", | 127 | "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin", |
78 | ] | 128 | ] |
79 | 129 | ||
80 | # selinux indicates whether or not SELinux will be used for pod | 130 | # Additional environment variables to set for all the |
81 | # separation on the host. If you enable this flag, SELinux must be running | 131 | # containers. These are overridden if set in the |
82 | # on the host. | 132 | # container image spec or in the container runtime configuration. |
83 | selinux = false | 133 | default_env = [ |
134 | ] | ||
84 | 135 | ||
85 | # seccomp_profile is the seccomp json profile path which is used as the | 136 | # If true, SELinux will be used for pod separation on the host. |
86 | # default for the runtime. | 137 | selinux = false |
87 | seccomp_profile = "/etc/crio/seccomp.json" | ||
88 | 138 | ||
89 | # apparmor_profile is the apparmor profile name which is used as the | 139 | # Path to the seccomp.json profile which is used as the default seccomp profile |
90 | # default for the runtime. | 140 | # for the runtime. If not specified, then the internal default seccomp profile |
141 | # will be used. This option supports live configuration reload. | ||
142 | seccomp_profile = "" | ||
143 | |||
144 | # Changes the meaning of an empty seccomp profile. By default | ||
145 | # (and according to CRI spec), an empty profile means unconfined. | ||
146 | # This option tells CRI-O to treat an empty profile as the default profile, | ||
147 | # which might increase security. | ||
148 | seccomp_use_default_when_empty = false | ||
149 | |||
150 | # Used to change the name of the default AppArmor profile of CRI-O. The default | ||
151 | # profile name is "crio-default". This profile only takes effect if the user | ||
152 | # does not specify a profile via the Kubernetes Pod's metadata annotation. If | ||
153 | # the profile is set to "unconfined", then this equals to disabling AppArmor. | ||
154 | # This option supports live configuration reload. | ||
91 | apparmor_profile = "crio-default" | 155 | apparmor_profile = "crio-default" |
92 | 156 | ||
93 | # cgroup_manager is the cgroup management implementation to be used | 157 | # Path to the blockio class configuration file for configuring |
94 | # for the runtime. | 158 | # the cgroup blockio controller. |
95 | cgroup_manager = "cgroupfs" | 159 | blockio_config_file = "" |
160 | |||
161 | # Used to change irqbalance service config file path which is used for configuring | ||
162 | # irqbalance daemon. | ||
163 | irqbalance_config_file = "/etc/sysconfig/irqbalance" | ||
164 | |||
165 | # Path to the RDT configuration file for configuring the resctrl pseudo-filesystem. | ||
166 | # This option supports live configuration reload. | ||
167 | rdt_config_file = "" | ||
168 | |||
169 | # Cgroup management implementation used for the runtime. | ||
170 | cgroup_manager = "systemd" | ||
171 | |||
172 | # Specify whether the image pull must be performed in a separate cgroup. | ||
173 | separate_pull_cgroup = "" | ||
174 | |||
175 | # List of default capabilities for containers. If it is empty or commented out, | ||
176 | # only the capabilities defined in the containers json file by the user/kube | ||
177 | # will be added. | ||
178 | default_capabilities = [ | ||
179 | "CHOWN", | ||
180 | "DAC_OVERRIDE", | ||
181 | "FSETID", | ||
182 | "FOWNER", | ||
183 | "SETGID", | ||
184 | "SETUID", | ||
185 | "SETPCAP", | ||
186 | "NET_BIND_SERVICE", | ||
187 | "KILL", | ||
188 | ] | ||
189 | |||
190 | # List of default sysctls. If it is empty or commented out, only the sysctls | ||
191 | # defined in the container json file by the user/kube will be added. | ||
192 | default_sysctls = [ | ||
193 | ] | ||
194 | |||
195 | # List of devices on the host that a | ||
196 | # user can specify with the "io.kubernetes.cri-o.Devices" allowed annotation. | ||
197 | allowed_devices = [ | ||
198 | "/dev/fuse", | ||
199 | ] | ||
200 | |||
201 | # List of additional devices. specified as | ||
202 | # "<device-on-host>:<device-on-container>:<permissions>", for example: "--device=/dev/sdc:/dev/xvdc:rwm". | ||
203 | # If it is empty or commented out, only the devices | ||
204 | # defined in the container json file by the user/kube will be added. | ||
205 | additional_devices = [ | ||
206 | ] | ||
207 | |||
208 | # Change the default behavior of setting container devices uid/gid from CRI's | ||
209 | # SecurityContext (RunAsUser/RunAsGroup) instead of taking host's uid/gid. | ||
210 | # Defaults to false. | ||
211 | device_ownership_from_security_context = false | ||
96 | 212 | ||
97 | # hooks_dir_path is the oci hooks directory for automatically executed hooks | 213 | # Path to OCI hooks directories for automatically executed hooks. If one of the |
98 | hooks_dir_path = "/usr/share/containers/oci/hooks.d" | 214 | # directories does not exist, then CRI-O will automatically skip them. |
215 | hooks_dir = [ | ||
216 | "/usr/share/containers/oci/hooks.d", | ||
217 | ] | ||
99 | 218 | ||
100 | # pids_limit is the number of processes allowed in a container | 219 | # Path to the file specifying the defaults mounts for each container. The |
220 | # format of the config is /SRC:/DST, one mount per line. Notice that CRI-O reads | ||
221 | # its default mounts from the following two files: | ||
222 | # | ||
223 | # 1) /etc/containers/mounts.conf (i.e., default_mounts_file): This is the | ||
224 | # override file, where users can either add in their own default mounts, or | ||
225 | # override the default mounts shipped with the package. | ||
226 | # | ||
227 | # 2) /usr/share/containers/mounts.conf: This is the default file read for | ||
228 | # mounts. If you want CRI-O to read from a different, specific mounts file, | ||
229 | # you can change the default_mounts_file. Note, if this is done, CRI-O will | ||
230 | # only add mounts it finds in this file. | ||
231 | # | ||
232 | default_mounts_file = "" | ||
233 | |||
234 | # Maximum number of processes allowed in a container. | ||
101 | pids_limit = 1024 | 235 | pids_limit = 1024 |
102 | 236 | ||
103 | # The "crio.image" table contains settings pertaining to the | 237 | # Maximum sized allowed for the container log file. Negative numbers indicate |
104 | # management of OCI images. | 238 | # that no size limit is imposed. If it is positive, it must be >= 8192 to |
239 | # match/exceed conmon's read buffer. The file is truncated and re-opened so the | ||
240 | # limit is never exceeded. | ||
241 | log_size_max = -1 | ||
242 | |||
243 | # Whether container output should be logged to journald in addition to the kuberentes log file | ||
244 | log_to_journald = false | ||
245 | |||
246 | # Path to directory in which container exit files are written to by conmon. | ||
247 | container_exits_dir = "/var/run/crio/exits" | ||
248 | |||
249 | # Path to directory for container attach sockets. | ||
250 | container_attach_socket_dir = "/var/run/crio" | ||
251 | |||
252 | # The prefix to use for the source of the bind mounts. | ||
253 | bind_mount_prefix = "" | ||
254 | |||
255 | # If set to true, all containers will run in read-only mode. | ||
256 | read_only = false | ||
257 | |||
258 | # Changes the verbosity of the logs based on the level it is set to. Options | ||
259 | # are fatal, panic, error, warn, info, debug and trace. This option supports | ||
260 | # live configuration reload. | ||
261 | log_level = "info" | ||
262 | |||
263 | # Filter the log messages by the provided regular expression. | ||
264 | # This option supports live configuration reload. | ||
265 | log_filter = "" | ||
266 | |||
267 | # The UID mappings for the user namespace of each container. A range is | ||
268 | # specified in the form containerUID:HostUID:Size. Multiple ranges must be | ||
269 | # separated by comma. | ||
270 | uid_mappings = "" | ||
271 | |||
272 | # The GID mappings for the user namespace of each container. A range is | ||
273 | # specified in the form containerGID:HostGID:Size. Multiple ranges must be | ||
274 | # separated by comma. | ||
275 | gid_mappings = "" | ||
276 | |||
277 | # If set, CRI-O will reject any attempt to map host UIDs below this value | ||
278 | # into user namespaces. A negative value indicates that no minimum is set, | ||
279 | # so specifying mappings will only be allowed for pods that run as UID 0. | ||
280 | minimum_mappable_uid = -1 | ||
281 | |||
282 | # If set, CRI-O will reject any attempt to map host GIDs below this value | ||
283 | # into user namespaces. A negative value indicates that no minimum is set, | ||
284 | # so specifying mappings will only be allowed for pods that run as UID 0. | ||
285 | minimum_mappable_gid = -1 | ||
286 | |||
287 | # The minimal amount of time in seconds to wait before issuing a timeout | ||
288 | # regarding the proper termination of the container. The lowest possible | ||
289 | # value is 30s, whereas lower values are not considered by CRI-O. | ||
290 | ctr_stop_timeout = 30 | ||
291 | |||
292 | # drop_infra_ctr determines whether CRI-O drops the infra container | ||
293 | # when a pod does not have a private PID namespace, and does not use | ||
294 | # a kernel separating runtime (like kata). | ||
295 | # It requires manage_ns_lifecycle to be true. | ||
296 | drop_infra_ctr = true | ||
297 | |||
298 | # infra_ctr_cpuset determines what CPUs will be used to run infra containers. | ||
299 | # You can use linux CPU list format to specify desired CPUs. | ||
300 | # To get better isolation for guaranteed pods, set this parameter to be equal to kubelet reserved-cpus. | ||
301 | infra_ctr_cpuset = "" | ||
302 | |||
303 | # The directory where the state of the managed namespaces gets tracked. | ||
304 | # Only used when manage_ns_lifecycle is true. | ||
305 | namespaces_dir = "/var/run" | ||
306 | |||
307 | # pinns_path is the path to find the pinns binary, which is needed to manage namespace lifecycle | ||
308 | pinns_path = "" | ||
309 | |||
310 | # default_runtime is the _name_ of the OCI runtime to be used as the default. | ||
311 | # The name is matched against the runtimes map below. If this value is changed, | ||
312 | # the corresponding existing entry from the runtimes map below will be ignored. | ||
313 | default_runtime = "runc" | ||
314 | |||
315 | # A list of paths that, when absent from the host, | ||
316 | # will cause a container creation to fail (as opposed to the current behavior being created as a directory). | ||
317 | # This option is to protect from source locations whose existence as a directory could jepordize the health of the node, and whose | ||
318 | # creation as a file is not desired either. | ||
319 | # An example is /etc/hostname, which will cause failures on reboot if it's created as a directory, but often doesn't exist because | ||
320 | # the hostname is being managed dynamically. | ||
321 | absent_mount_sources_to_reject = [ | ||
322 | ] | ||
323 | |||
324 | # The "crio.runtime.runtimes" table defines a list of OCI compatible runtimes. | ||
325 | # The runtime to use is picked based on the runtime handler provided by the CRI. | ||
326 | # If no runtime handler is provided, the runtime will be picked based on the level | ||
327 | # of trust of the workload. Each entry in the table should follow the format: | ||
328 | # | ||
329 | #[crio.runtime.runtimes.runtime-handler] | ||
330 | # runtime_path = "/path/to/the/executable" | ||
331 | # runtime_type = "oci" | ||
332 | # runtime_root = "/path/to/the/root" | ||
333 | # privileged_without_host_devices = false | ||
334 | # allowed_annotations = [] | ||
335 | # Where: | ||
336 | # - runtime-handler: name used to identify the runtime | ||
337 | # - runtime_path (optional, string): absolute path to the runtime executable in | ||
338 | # the host filesystem. If omitted, the runtime-handler identifier should match | ||
339 | # the runtime executable name, and the runtime executable should be placed | ||
340 | # in $PATH. | ||
341 | # - runtime_type (optional, string): type of runtime, one of: "oci", "vm". If | ||
342 | # omitted, an "oci" runtime is assumed. | ||
343 | # - runtime_root (optional, string): root directory for storage of containers | ||
344 | # state. | ||
345 | # - runtime_config_path (optional, string): the path for the runtime configuration | ||
346 | # file. This can only be used with when using the VM runtime_type. | ||
347 | # - privileged_without_host_devices (optional, bool): an option for restricting | ||
348 | # host devices from being passed to privileged containers. | ||
349 | # - allowed_annotations (optional, array of strings): an option for specifying | ||
350 | # a list of experimental annotations that this runtime handler is allowed to process. | ||
351 | # The currently recognized values are: | ||
352 | # "io.kubernetes.cri-o.userns-mode" for configuring a user namespace for the pod. | ||
353 | # "io.kubernetes.cri-o.cgroup2-mount-hierarchy-rw" for mounting cgroups writably when set to "true". | ||
354 | # "io.kubernetes.cri-o.Devices" for configuring devices for the pod. | ||
355 | # "io.kubernetes.cri-o.ShmSize" for configuring the size of /dev/shm. | ||
356 | # "io.kubernetes.cri-o.UnifiedCgroup.$CTR_NAME" for configuring the cgroup v2 unified block for a container. | ||
357 | # "io.containers.trace-syscall" for tracing syscalls via the OCI seccomp BPF hook. | ||
358 | # "io.kubernetes.cri.rdt-class" for setting the RDT class of a container | ||
359 | |||
360 | |||
361 | [crio.runtime.runtimes.runc] | ||
362 | runtime_path = "" | ||
363 | runtime_type = "oci" | ||
364 | runtime_root = "/run/runc" | ||
365 | runtime_config_path = "" | ||
366 | |||
367 | |||
368 | allowed_annotations = [ | ||
369 | "io.containers.trace-syscall", | ||
370 | ] | ||
371 | |||
372 | |||
373 | |||
374 | # crun is a fast and lightweight fully featured OCI runtime and C library for | ||
375 | # running containers | ||
376 | #[crio.runtime.runtimes.crun] | ||
377 | |||
378 | # Kata Containers is an OCI runtime, where containers are run inside lightweight | ||
379 | # VMs. Kata provides additional isolation towards the host, minimizing the host attack | ||
380 | # surface and mitigating the consequences of containers breakout. | ||
381 | |||
382 | # Kata Containers with the default configured VMM | ||
383 | #[crio.runtime.runtimes.kata-runtime] | ||
384 | |||
385 | # Kata Containers with the QEMU VMM | ||
386 | #[crio.runtime.runtimes.kata-qemu] | ||
387 | |||
388 | # Kata Containers with the Firecracker VMM | ||
389 | #[crio.runtime.runtimes.kata-fc] | ||
390 | |||
391 | # The workloads table defines ways to customize containers with different resources | ||
392 | # that work based on annotations, rather than the CRI. | ||
393 | # Note, the behavior of this table is EXPERIMENTAL and may change at any time. | ||
394 | # Each workload, has a name, activation_annotation, annotation_prefix and set of resources it supports mutating. | ||
395 | # The currently supported resources are "cpu" (to configure the cpu shares) and "cpuset" to configure the cpuset. | ||
396 | # Each resource can have a default value specified, or be empty. | ||
397 | # For a container to opt-into this workload, the pod should be configured with the annotation $activation_annotation (key only, value is ignored). | ||
398 | # To customize per-container, an annotation of the form $annotation_prefix.$resource/$ctrName = "value" can be specified | ||
399 | # signifying for that resource type to override the default value. | ||
400 | # If the annotation_prefix is not present, every container in the pod will be given the default values. | ||
401 | # Example: | ||
402 | # [crio.runtime.workloads.workload-type] | ||
403 | # activation_annotation = "io.crio/workload" | ||
404 | # annotation_prefix = "io.crio.workload-type" | ||
405 | # [crio.runtime.workloads.workload-type.resources] | ||
406 | # cpuset = 0 | ||
407 | # cpushares = "0-1" | ||
408 | # Where: | ||
409 | # The workload name is workload-type. | ||
410 | # To specify, the pod must have the "io.crio.workload" annotation (this is a precise string match). | ||
411 | # This workload supports setting cpuset and cpu resources. | ||
412 | # annotation_prefix is used to customize the different resources. | ||
413 | # To configure the cpu shares a container gets in the example above, the pod would have to have the following annotation: | ||
414 | # "io.crio.workload-type/$container_name = {"cpushares": "value"}" | ||
415 | |||
416 | |||
417 | # The crio.image table contains settings pertaining to the management of OCI images. | ||
418 | # | ||
419 | # CRI-O reads its configured registries defaults from the system wide | ||
420 | # containers-registries.conf(5) located in /etc/containers/registries.conf. If | ||
421 | # you want to modify just CRI-O, you can change the registries configuration in | ||
422 | # this file. Otherwise, leave insecure_registries and registries commented out to | ||
423 | # use the system's defaults from /etc/containers/registries.conf. | ||
105 | [crio.image] | 424 | [crio.image] |
106 | 425 | ||
107 | # default_transport is the prefix we try prepending to an image name if the | 426 | # Default transport for pulling images from a remote container storage. |
108 | # image name as we receive it can't be parsed as a valid source reference | ||
109 | default_transport = "docker://" | 427 | default_transport = "docker://" |
110 | 428 | ||
111 | # pause_image is the image which we use to instantiate infra containers. | 429 | # The path to a file containing credentials necessary for pulling images from |
112 | pause_image = "kubernetes/pause" | 430 | # secure registries. The file is similar to that of /var/lib/kubelet/config.json |
431 | global_auth_file = "" | ||
113 | 432 | ||
114 | # pause_command is the command to run in a pause_image to have a container just | 433 | # The image used to instantiate infra containers. |
115 | # sit there. If the image contains the necessary information, this value need | 434 | # This option supports live configuration reload. |
116 | # not be specified. | 435 | pause_image = "k8s.gcr.io/pause:3.6" |
436 | |||
437 | # The path to a file containing credentials specific for pulling the pause_image from | ||
438 | # above. The file is similar to that of /var/lib/kubelet/config.json | ||
439 | # This option supports live configuration reload. | ||
440 | pause_image_auth_file = "" | ||
441 | |||
442 | # The command to run to have a container stay in the paused state. | ||
443 | # When explicitly set to "", it will fallback to the entrypoint and command | ||
444 | # specified in the pause image. When commented out, it will fallback to the | ||
445 | # default: "/pause". This option supports live configuration reload. | ||
117 | pause_command = "/pause" | 446 | pause_command = "/pause" |
118 | 447 | ||
119 | # signature_policy is the name of the file which decides what sort of policy we | 448 | # Path to the file which decides what sort of policy we use when deciding |
120 | # use when deciding whether or not to trust an image that we've pulled. | 449 | # whether or not to trust an image that we've pulled. It is not recommended that |
121 | # Outside of testing situations, it is strongly advised that this be left | 450 | # this option be used, as the default behavior of using the system-wide default |
122 | # unspecified so that the default system-wide policy will be used. | 451 | # policy (i.e., /etc/containers/policy.json) is most often preferred. Please |
452 | # refer to containers-policy.json(5) for more details. | ||
123 | signature_policy = "" | 453 | signature_policy = "" |
124 | 454 | ||
125 | # image_volumes controls how image volumes are handled. | 455 | # List of registries to skip TLS verification for pulling images. Please |
126 | # The valid values are mkdir and ignore. | 456 | # consider configuring the registries via /etc/containers/registries.conf before |
127 | image_volumes = "mkdir" | 457 | # changing them here. |
128 | |||
129 | # insecure_registries is used to skip TLS verification when pulling images. | ||
130 | insecure_registries = [ | 458 | insecure_registries = [ |
131 | ] | 459 | ] |
132 | 460 | ||
133 | # registries is used to specify a comma separated list of registries to be used | 461 | # Controls how image volumes are handled. The valid values are mkdir, bind and |
134 | # when pulling an unqualified image (e.g. fedora:rawhide). | 462 | # ignore; the latter will ignore volumes entirely. |
135 | registries = ['docker.io', 'registry.fedoraproject.org', 'registry.access.redhat.com'] | 463 | image_volumes = "mkdir" |
464 | |||
465 | # Temporary directory to use for storing big files | ||
466 | big_files_temporary_dir = "" | ||
136 | 467 | ||
137 | # The "crio.network" table contains settings pertaining to the | 468 | # The crio.network table containers settings pertaining to the management of |
138 | # management of CNI plugins. | 469 | # CNI plugins. |
139 | [crio.network] | 470 | [crio.network] |
140 | 471 | ||
141 | # network_dir is is where CNI network configuration | 472 | # The default CNI network name to be selected. If not set or "", then |
142 | # files are stored. | 473 | # CRI-O will pick-up the first one found in network_dir. |
474 | # cni_default_network = "" | ||
475 | |||
476 | # Path to the directory where CNI configuration files are located. | ||
143 | network_dir = "/etc/cni/net.d/" | 477 | network_dir = "/etc/cni/net.d/" |
144 | 478 | ||
145 | # plugin_dir is is where CNI plugin binaries are stored. | 479 | # Paths to directories where CNI plugin binaries are located. |
146 | plugin_dir = "/opt/cni/bin" | 480 | plugin_dirs = [ |
481 | "/opt/cni/bin/", | ||
482 | ] | ||
483 | |||
484 | # A necessary configuration for Prometheus based metrics retrieval | ||
485 | [crio.metrics] | ||
486 | |||
487 | # Globally enable or disable metrics support. | ||
488 | enable_metrics = false | ||
489 | |||
490 | # Specify enabled metrics collectors. | ||
491 | # Per default all metrics are enabled. | ||
492 | # It is possible, to prefix the metrics with "container_runtime_" and "crio_". | ||
493 | # For example, the metrics collector "operations" would be treated in the same | ||
494 | # way as "crio_operations" and "container_runtime_crio_operations". | ||
495 | metrics_collectors = [ | ||
496 | "operations", | ||
497 | "operations_latency_microseconds_total", | ||
498 | "operations_latency_microseconds", | ||
499 | "operations_errors", | ||
500 | "image_pulls_by_digest", | ||
501 | "image_pulls_by_name", | ||
502 | "image_pulls_by_name_skipped", | ||
503 | "image_pulls_failures", | ||
504 | "image_pulls_successes", | ||
505 | "image_pulls_layer_size", | ||
506 | "image_layer_reuse", | ||
507 | "containers_oom_total", | ||
508 | "containers_oom", | ||
509 | "processes_defunct", | ||
510 | "operations_total", | ||
511 | "operations_latency_seconds", | ||
512 | "operations_latency_seconds_total", | ||
513 | "operations_errors_total", | ||
514 | "image_pulls_bytes_total", | ||
515 | "image_pulls_skipped_bytes_total", | ||
516 | "image_pulls_failure_total", | ||
517 | "image_pulls_success_total", | ||
518 | "image_layer_reuse_total", | ||
519 | "containers_oom_count_total", | ||
520 | ] | ||
521 | |||
522 | # The port on which the metrics server will listen. | ||
523 | metrics_port = 9090 | ||
524 | |||
525 | # Local socket path to bind the metrics server to | ||
526 | metrics_socket = "" | ||
527 | |||
528 | # The certificate for the secure metrics server. | ||
529 | # If the certificate is not available on disk, then CRI-O will generate a | ||
530 | # self-signed one. CRI-O also watches for changes of this path and reloads the | ||
531 | # certificate on any modification event. | ||
532 | metrics_cert = "" | ||
533 | |||
534 | # The certificate key for the secure metrics server. | ||
535 | # Behaves in the same way as the metrics_cert. | ||
536 | metrics_key = "" | ||
537 | |||
538 | # A necessary configuration for OpenTelemetry trace data exporting | ||
539 | [crio.tracing] | ||
540 | |||
541 | # Globally enable or disable exporting OpenTelemetry traces. | ||
542 | enable_tracing = false | ||
543 | |||
544 | # Address on which the gRPC trace collector listens on. | ||
545 | tracing_endpoint = "0.0.0.0:4317" | ||
546 | |||
547 | # Number of samples to collect per million spans. | ||
548 | tracing_sampling_rate_per_million = 0 | ||
549 | |||
550 | # Necessary information pertaining to container and pod stats reporting. | ||
551 | [crio.stats] | ||
552 | |||
553 | # The number of seconds between collecting pod and container stats. | ||
554 | # If set to 0, the stats are collected on-demand instead. | ||
555 | stats_collection_period = 0 | ||
556 | |||