Sunday, October 29, 2023

Kubernetes, Docker, CRI, ContainerD

K8s 1.24 has removed default "dockershim" proxy interface for Docker, 
and instead using only ContainerD, that is CRI compatible.
No harm, docker images are supported as usual, just more efficient.

Container Runtime Interface (CRI) | Kubernetes

"The CRI is a plugin interface which enables the kubelet to use a wide variety of container runtimes, without having a need to recompile the cluster components.

You need a working container runtime on each Node in your cluster, so that the kubelet can launch Pods and their containers.

The Container Runtime Interface (CRI) is the main protocol for the communication between the kubelet and Container Runtime.

The Kubernetes Container Runtime Interface (CRI) defines the main gRPC protocol for the communication between the cluster components kubelet and container runtime"

sqlite-zstd: row-level compression for SQLite

 sqlite-zstd: Transparent dictionary-based row-level compression for SQLite - An sqlite extension written in Rust to reduce the database size without losing functionality - phiresky's blog

data is a json blob from the perspective of SQLite, but it is parsed into a strictly typed structure in the Rust application code.

phiresky/sqlite-zstd: Transparent dictionary-based row-level compression for SQLite

@GitHub, Rust, LGPL

Depending on the data, this can reduce the size of the database by 80% while keeping performance mostly the same (or even improving it, since the data to be read from disk is smaller).

Note that a compression VFS such as might be suited better depending on the use case. That has very different tradeoffs and capabilities, but the end result is similar.

mlin/sqlite_zstd_vfs: SQLite3 extension for read/write storage compression with Zstandard

Never Too Rich Or Thin: Compress Sqlite 80% | Hackaday