Options for Kubernetes-CRI (Container Runtime Interface)

Docker has been used for a long time with Kubelet and Kubernetes. However, recently Docker announced that it would cut support for kubelet.

Because of this, this blog intends to present existing options to assume this role with Kubernetes. All Kubernetes needs is a Container Runtime Interface (CRI), for that there are several portable software for the IBM Power architecture (ppc64le), as it will be presented throughout the post.

Main Runtimes

Through the Open Source community it is possible to find some packages like: Containerd-CRI, Cri-O e Gvisor. All packages have the function of providing the support that Kubernetes needs, and some of them even have extra and more specialized features.

For most of these packages it was possible to port to the Power architecture, however, as will be presented later, some were not possible to perform portability.

Containerd-CRI

Description and Portability

CRI is a Containerd plugin for Kubernetes, it is a Container Runtime Interface (CRI) implemented to interact with Kubelet in the creation of containers using Containerd as Runtime.

The software does not have official support for the IBM Power architecture, despite that, OpenPower Lab did a build job and made the package functional in Power. In addition, we offer the package in the following formats: binary, .rpm and .deb.

Build

The construction of the package was done following the recipe for CI/CD of the package, it is possible to obtain it through the GitHub. Based on it, we make the package available in binary format which can be obtained through FTP. The rest of the packages, available for Debian and RHEL based distros, can be installed through OPenPower lab repository.

Cri-O

Description and Portability

Cri-O is a CRI (Container Runtime Interface) implementation, being a lighter alternative to Docker as a Runtime. Since Docker is no longer an option, it becomes one of the lightest options available.

The software does not have official support for the IBM Power architecture, despite that, OpenPower Lab did a build job and made the package functional in Power. In addition, the package is available in binary version and in .deb format. Although it was not possible to generate the .rpm package, it is still possible to install the package with the installation of the binary.

Build

The construction of the package can be obtained through build. The binary can be obtained by FTP, despite this, it is necessary to install the prerequisites. The .deb format can be installed via the OPenPower lab repository.

Install

It was not possible to convert the binary to the RPM Package Manager, so the only way to install these systems is to install the binary. Before installing the binary it is necessary to install the prerequisites. After installing the prerequisites, just use the command below:

sudo tar -C / -xzvf crio-1.20.0.linux-ppc64le.tar.gz

Confirm the installation by executing the command:

crio --version

Gvisor

Description and Portability

GVisor is a software widely used by the community, it is focused on integration with Docker and Kubernetes. The code is written in GO, uses Bazel to build the source code and generate the binary. However, Bazel requires several build files, and supported architectures must be specified. However, the Gvisor only has reference to AMD (x86_64).

As such, Bazel is unable to generate the binary for IBM Power (ppc64le). Therefore, Gvisor does not have support for the Power architecture, and portability is considered as difficult and necessary reverse engineering work in the source code.

  • The OpenPower Lab repository contains several Open-Source software for Power. See the list of available packages.
  • See more about the lab’s work and our research by reading other posts.
Avatar
Júnior Santos
Computer Science undergrad student

I’m an undergrad student in Computer Science at UNICAMP that loves GNU/Linux and programming.