OCI, CRI, ??: Making Sense of the Container Runtime Landscape in Kubernetes - Phil Estes, IBM

CNCF [Cloud Native Computing Foundation]
13 Dec 201922:33

Summary

TLDRThe speaker discusses the evolution and standardization of container runtimes, emphasizing the importance of the Open Container Initiative (OCI) in creating a common ground for various runtimes and images. They highlight Docker's impact on popularizing containers but also note the emergence of alternatives like ContainerD, CRI-O, and rkt. The talk delves into Kubernetes' reliance on the Container Runtime Interface (CRI) for container management, showcasing how different runtimes can integrate with Kubernetes. The speaker also touches on ongoing work within the OCI, such as image signing and the potential for further standardization, aiming to simplify choices for developers and operators.

Takeaways

  • πŸ“š The presentation aims to clarify the evolution of container runtimes and demystify terms like OCI and CRI.
  • πŸ’‘ Docker popularized container usage with simple commands that made it easy to run services like Redis or Nginx in milliseconds.
  • πŸš€ Docker is not the only container runtime; alternatives like rkt, Cloud Foundry, LXE, lxd, singularity, and more have been developed for various use cases.
  • πŸ”— The Open Container Initiative (OCI) was created to standardize container runtimes and image formats, ensuring interoperability among different tools.
  • πŸ“ˆ The OCI has led to the development of the runtime-spec and runc, which are widely recognized and used in the industry.
  • πŸ›  The Container Runtime Interface (CRI) was introduced to allow Kubernetes to work with any container runtime that implements the CRI API.
  • πŸ”„ Kubernetes itself does not run containers; it relies on a container runtime to manage the execution of containers.
  • πŸ”„ Different runtimes like Docker, containerd, and CRI-O are implementing the CRI to work with Kubernetes.
  • πŸ‘₯ The industry is moving towards more standardization in areas like artifacts, image signing, and distribution specs within the OCI.
  • πŸ”’ There is a growing interest in enhanced container isolation and security, with projects like gVisor and Kata Containers gaining attention.
  • πŸ”„ CRI-O and containerd are becoming more popular as default runtimes in Kubernetes environments, especially in managed services and cloud platforms.

Q & A

  • What was the main goal of the talk on container runtimes?

    -The main goal was to help the audience understand the current state of container runtimes, demystify terms like OCI and CRI, and provide informative content on the topic in an engaging way.

  • What is the significance of Docker's introduction in 2014-2015?

    -Docker's introduction was significant because it brought simplicity and standardization to container usage with commands like 'docker run', making it easier for developers to deploy services quickly and efficiently.

  • Why did CoreOS develop Rocket as an alternative to Docker?

    -CoreOS developed Rocket as an alternative to Docker to offer new ideas and a different approach to connecting developers with the features of the Linux kernel, such as namespaces and cgroups.

  • What is the purpose of the Open Container Initiative (OCI)?

    -The purpose of the OCI is to create a common specification for container runtimes and image formats, allowing for interoperability among different tools and ensuring a consistent definition of what it means to have a container.

  • What does the Container Runtime Interface (CRI) provide for Kubernetes?

    -The CRI provides an abstraction layer for container runtimes, allowing Kubernetes to interact with different runtimes through a standardized API, thus enabling the orchestration of containers without being tied to a specific runtime.

  • Why was the CRI interface introduced in Kubernetes?

    -The CRI interface was introduced to simplify the integration of Kubernetes with various container runtimes, avoiding the need for multiple code bases and ensuring a consistent way to manage container operations.

  • What is the current state of container runtime usage in Kubernetes?

    -Docker remains the most commonly used runtime, but other runtimes like containerd, CRI-O, and others are gaining traction, especially as they become default options in managed Kubernetes services and meet the needs of different use cases.

  • What is the role of the Runtime Class in Kubernetes?

    -Runtime Class in Kubernetes allows users to specify which container runtime should be used for a particular pod, providing flexibility in choosing the right runtime for different workloads.

  • How does the talk address the topic of container security?

    -The talk touches on the topic of container security by mentioning the interest in image signing and the work being done around artifacts and standard media types, indicating a growing focus on securing containers in production environments.

  • What are some of the ongoing efforts within the OCI?

    -Ongoing efforts within the OCI include finalizing the distribution spec, standardizing image signing processes, and exploring new ideas for container images, such as OCI v2, which aims to address current challenges and user needs.

Outlines

00:00

πŸ˜€ Introduction to Container Runtimes and Standards

The speaker aims to clarify the current state of container runtimes, demystify terms such as OCI (Open Container Initiative) and CRI (Container Runtime Interface), and provide informative insights into the evolution of container technology. The talk acknowledges Docker's significant impact on popularizing container usage with its simple commands, but also highlights that Docker is not the sole runtime. Other runtimes like rkt, Cloud Foundry, LXE, lxd, singularity, and more have contributed to the diversity of the container ecosystem. The emergence of OCI was crucial in establishing a common ground for container runtimes and image formats, promoting interoperability among different tools.

05:03

πŸ˜‰ The Role of OCI in Standardizing Container Technologies

This section delves into the role of the OCI in fostering a unified approach to containerization. It discusses the development of a runtime specification and an image format that has led to the creation of tools like 'runc' and the distribution specification for interacting with registries. The speaker also touches on the ongoing work within OCI to standardize areas such as artifacts, image signing for security, and the distribution specification. The goal is to streamline the container ecosystem and ensure that different tools and runtimes can work together seamlessly.

10:04

πŸŽ“ Understanding Kubernetes and the CRI Interface

The speaker explains that Kubernetes itself does not run containers; it relies on a container runtime to perform this task. Initially, Docker was the default runtime, but with the emergence of other runtimes, the need for a standardized interface arose. This led to the creation of the CRI in 2016, which abstracts the container runtime interactions with Kubernetes. The speaker outlines the responsibilities defined by the CRI API and how different runtimes can integrate with Kubernetes by responding to these API calls.

15:05

πŸš€ Current Landscape of Container Runtime Implementations

The speaker provides an overview of the current landscape of container runtime implementations, with a focus on how different runtimes like Docker, containerd, and CRI-O have adapted to work with Kubernetes through the CRI interface. It also mentions the development of shim APIs that allow for richer communication between runtimes and isolators like Kata Containers or AWS Firecracker. The concept of runtime classes in Kubernetes is introduced, which allows for specifying the runtime for individual pods, and the speaker references a recent report that shows Docker as the dominant runtime in current Kubernetes clusters.

20:09

πŸ›‘οΈ Security and the Future of Container Runtimes

In this segment, the speaker discusses the growing interest in enhancing container security, especially with the use of sandboxing and additional isolation techniques. The speaker references a recent tweet and Atlassian's use of Kata Containers for added security in their pipelines. There is also mention of the ongoing discussions within the OCI to standardize image signing and the exploration of new models for container images. The speaker emphasizes the importance of having a common understanding and standardization to simplify choices and operations for users and operators.

πŸ€” The Importance of Choice and Standardization in the Container Ecosystem

The speaker concludes by emphasizing the importance of having informed choices in the container ecosystem. The talk highlights the need for standardization to simplify decision-making and to provide a clear path forward for users and operators. The speaker encourages the audience to consider factors such as sandboxing, isolation, compatibility with Kubernetes releases, and security when choosing a runtime. The goal is to maintain momentum within the OCI to address ongoing challenges and to ensure that the container ecosystem remains user-friendly and efficient.

Mindmap

Keywords

πŸ’‘Container Runtimes

Container Runtimes refer to the software systems that are responsible for running containerized applications. They manage the container's life cycle, including instantiation, execution, and communication with other containers. In the video's context, the speaker aims to demystify the evolution and current state of container runtimes, discussing their significance in the development and operation of containerized applications. The script mentions Docker, rkt, and containerd as examples of different container runtimes.

πŸ’‘OCI (Open Container Initiative)

The Open Container Initiative is a project aimed at creating open industry standards for container formats and runtimes. The OCI ensures that different container solutions can work together despite being developed by various organizations. In the script, the speaker explains that OCI was born out of the need for a unified approach to defining what a container is, how to run it, and how to distribute container images, leading to the creation of a runtime spec and an image format spec.

πŸ’‘CRI (Container Runtime Interface)

The Container Runtime Interface is a standard defined by Kubernetes that allows different container runtimes to interface with Kubernetes. It abstracts the details of the underlying container runtime from the orchestration system, enabling Kubernetes to work with various runtimes as long as they implement the CRI. The script discusses how CRI was introduced to accommodate the growing number of container runtimes and to avoid the need for Kubernetes to have specific integrations for each runtime.

πŸ’‘Docker

Docker is a widely used containerization platform that allows developers to package applications and their dependencies into a standardized unit called a container. Docker introduced simple commands like 'docker run' that made it easy to start and manage containers. The script mentions Docker's role in popularizing container technology and its integration with Kubernetes through the Docker shim and later through the CRI.

πŸ’‘rkt (Rocket)

rkt, also known as Rocket, was an alternative container runtime developed by CoreOS. It was designed with a focus on providing additional features and ideas for container management compared to Docker. The script refers to rkt as one of the early competitors to Docker and part of the broader ecosystem of container runtimes that existed before standardization efforts like OCI.

πŸ’‘containerd

containerd is an industry-standard container runtime that provides the core container lifecycle operations required by Kubernetes. It was developed to be a lower-level, more modular runtime that could be integrated with higher-level orchestration systems. The script discusses containerd's role in the Kubernetes ecosystem, its adoption as a CRI implementation, and its use as a runtime by various cloud providers.

πŸ’‘CRI-O

CRI-O is an open-source Kubernetes CRI implementation that provides a production-ready Kubernetes container runtime. It is designed to be lightweight and to integrate well with Kubernetes. The script mentions CRI-O as one of the major implementers of the CRI, highlighting its use in environments like Red Hat's OpenShift.

πŸ’‘Kubernetes

Kubernetes is an open-source container orchestration system for automating application deployment, scaling, and management. It was designed to be runtime-agnostic, meaning it can work with different container runtimes as long as they adhere to the CRI. The script explains that Kubernetes itself does not run containers but relies on a container runtime to perform these tasks.

πŸ’‘Sandbox Isolation

Sandbox isolation refers to a security mechanism that isolates container processes from each other and from the host system. It is a method to enhance security by ensuring that each container operates in a restricted environment. The script touches on the topic of sandbox isolation in the context of additional isolation layers like gVisor and Kata Containers, which provide stronger isolation than traditional container runtimes.

πŸ’‘OCI Runtime Spec

The OCI Runtime Spec is a specification within the Open Container Initiative that defines the runtime configuration and requirements for running containers. It standardizes how containers should be executed and managed, ensuring compatibility across different runtimes. The script discusses the OCI Runtime Spec as a key outcome of the OCI's efforts to standardize container operations.

πŸ’‘Container Registries

Container registries are repositories where container images are stored and distributed. They play a crucial role in the container ecosystem by facilitating the sharing and management of container images. The script mentions registries like Docker Hub, Google Container Registry, and others, and discusses the OCI's work on a distribution spec to standardize interactions with these registries.

Highlights

The goal is to demystify container runtimes and terms like OCI and CRI, providing an informative session.

Container concepts like namespaces and cgroups existed before Docker but gained popularity with Docker's simple commands.

Docker's introduction in 2014-2015 was pivotal in making container technology widely accessible to developers.

Other container runtimes like rkt, Cloud Foundry, LXE, lxd, singularity, and more have also been developed.

The Open Container Initiative (OCI) was created to standardize container runtimes and image formats.

OCI has led to the development of a runtime spec and an image format, promoting interoperability among tools.

Kubernetes relies on container runtimes to manage containers but does not have its own runtime.

The Container Runtime Interface (CRI) was introduced to abstract container runtime interactions with Kubernetes.

Docker, containerd, and CRI-O are major implementers of the CRI, allowing for a variety of runtimes to be used with Kubernetes.

Runtime class in Kubernetes allows specifying which runtime should be used for a particular pod.

OCI aims to standardize areas like artifacts, image signing, and distribution specs for better security.

CRI-O has been integrated into various Kubernetes services and platforms, including managed services from cloud providers.

The choice of container runtime can depend on factors like performance, stability, extensibility, and compatibility.

Increased interest in additional isolation layers like sandboxing for security purposes in container deployments.

CRI tool 'crictl' allows operators to interact with different container runtimes without specific client tooling knowledge.

OCI has had a significant impact by creating a level playing field and promoting interoperability in the container ecosystem.

The talk emphasizes the importance of OCI and CRI in making pluggable runtimes a reality in Kubernetes clusters.

Transcripts

play00:01

my goal is in 25 minutes which is goes

play00:05

by fairly quickly with the topic is to

play00:09

kind of help you see why we are where we

play00:11

are with container runtimes demystify

play00:15

some terms like OCI and CRI and

play00:18

hopefully make that at least a little

play00:20

bit informative and not just a bunch of

play00:23

boring information and so we'll see see

play00:27

how we do on that so clearly even though

play00:32

those of you who are maybe have a deeper

play00:37

layer of understanding about what what

play00:38

we even call containers that they're

play00:40

made up of see groups and namespaces and

play00:42

and that these concepts and technologies

play00:46

have existed quite a while before docker

play00:48

so for example some of the namespaces

play00:51

and the Linux kernel have been there for

play00:52

over a decade but I think we can't all

play00:55

agree that it was docker in 2014 2015

play00:59

coming on the stage and sort of exciting

play01:02

the developers mind with the simplicity

play01:04

of some of these commands you see on the

play01:06

screen now all of a sudden I just type

play01:09

docker run and some sort of standard

play01:11

open-source software package like Redis

play01:14

or my sequel or Apache or nginx and in

play01:19

less than you know 500 milliseconds this

play01:22

service is running and that was magical

play01:24

for for lots of developers and so that's

play01:28

kind of become synonymous with

play01:30

containers in the last four or five

play01:33

years but that doesn't mean that docker

play01:35

is the only container runtime in fact

play01:38

soon after docker came on the scene core

play01:40

OS had some other ideas about how to

play01:44

actually connect a developer with some

play01:47

of those features in the Linux kernel

play01:48

the same features built around the same

play01:50

namespaces and C groups but they came

play01:53

out with rocket with some new ideas

play01:55

since then container D crea there was a

play01:59

there was a great talk in here earlier

play02:01

about cat o we'll talk about sandbox and

play02:04

isolation a little bit later in the talk

play02:07

but even Cloud Foundry and there were

play02:10

some talks that referred to Cloud

play02:11

Foundry here earlier today

play02:13

Cloud Foundry under the covers was

play02:15

packaging up and using these same

play02:16

features below their their platform as a

play02:22

service model to run containers as well

play02:24

and even stepping away from kind of this

play02:27

docker application model LXE and lxd

play02:31

have been around produced by canonical

play02:33

and a team there for a number of years

play02:35

and the high-performance computing space

play02:37

has also been interested in containers

play02:39

with tools like singularity and some

play02:42

others and so in this kind of explosion

play02:47

of runtimes and and ideas for how to use

play02:50

containers obviously the the market

play02:55

didn't want there to be a hundred

play02:57

different ideas of what it meant to be a

play02:58

container or how to run a container how

play03:01

to create a container image and so

play03:03

that's really how the OCI was born was

play03:06

this idea could we all get together and

play03:08

even if there are different runtimes

play03:10

that exists in different ways of

play03:12

building and running containers could we

play03:15

all agree on a specification for what

play03:17

that means to have a a runtime and an

play03:20

image format and how to distribute those

play03:22

images and so many of us got together

play03:26

and were involved in founding that in

play03:28

2015 many member companies have joined

play03:32

since and out of that has come a runtime

play03:35

spec which is at a1 oh really since the

play03:38

middle of 2017 a implementation of that

play03:42

called run see that many of you have

play03:44

heard of you know that at least you

play03:47

probably know that when you run docker

play03:48

that talks to container D and container

play03:51

D drives run C and also an image format

play03:55

that has then led to the distribution

play03:58

spec so how do I talk to a registry and

play04:01

so docker obviously had a way to do that

play04:05

that many people again use docker pull

play04:08

docker push these are registry

play04:10

operations and so now that is also part

play04:13

of the OCI and we're hoping to finalize

play04:15

the one o virgin of the distribution

play04:17

spec next year so again the idea bring

play04:23

all these communities together to an

play04:25

agreement what it means

play04:27

to have a image what it means to run a

play04:30

container and then people can go

play04:32

different directions and as long as

play04:33

they're OCI compliant we can actually

play04:35

have interoperability among many many

play04:38

different tools and so I would say you

play04:43

know in the years that followed we're in

play04:46

a pretty good place with this common

play04:47

substrate of container runtimes and

play04:50

container registries that are meeting

play04:52

these OCI specs and the specs that are

play04:54

in process and these drive how we

play04:57

actually run containers on Linux and

play04:59

also Microsoft has evolved and the OSI

play05:02

high specs also provide a way to talk

play05:05

about how we run containers on Windows

play05:08

and so you can think of that kind of

play05:10

bubbling up to again this mix of

play05:13

runtimes whether we're talking about

play05:14

cata

play05:15

containers or Nadler container to your

play05:18

docker cRIO and then of course there are

play05:21

many many different registries there are

play05:23

some in the CN CF like project harbor

play05:25

docker hub is a instance of an open

play05:29

source project called docker

play05:30

distribution all the major cloud

play05:33

providers have registries some of them

play05:35

have been written themselves jay frog

play05:38

has a registry queda i/o is recently

play05:42

open sourced so again we're at this

play05:44

place where thankfully you as a

play05:46

developer an operator you don't have to

play05:48

worry about whether your developers are

play05:50

using docker container D or creo or

play05:52

whether they're playing around with cata

play05:54

containers or AWS firecracker we can

play05:58

actually interoperate you know your

play06:00

container image and docker hub can also

play06:02

be pushed to clay it can also be pushed

play06:04

to Asher's or IBM cloud registry and so

play06:08

that's a great place so that's really

play06:10

what we intended to do with the OCI when

play06:13

we started in 2015 but just to give you

play06:16

a little taste that we aren't done yet

play06:19

we'd like to see more areas sort of

play06:22

standardized and finalized things that

play06:24

are in process there's some great works

play06:26

around artifacts that was added to the

play06:28

OCI this year it's the idea that you

play06:32

know just have to store layers and image

play06:34

configs and registries maybe you'd like

play06:37

to sort helmet charts or C NAB like the

play06:39

other talk that's

play06:40

right now or maybe you'd like to include

play06:44

a bill of materials like the SPD acts

play06:46

format so there's some great work about

play06:49

defining sort of standard media types

play06:51

and how registries would implement

play06:52

understanding them searching them like I

play06:55

said we'd like to finish the

play06:56

distribution spec this year there's a

play06:59

lot of interest in image signing so

play07:01

security in kubernetes and containers is

play07:05

a hot topic and so there's a set of of

play07:07

registry operators who would like to say

play07:10

it'd be nice we have these CN CF

play07:12

projects notary tough and Red Hat also

play07:17

has a PGP based signing process so I

play07:20

believe there was actually a meeting

play07:22

yesterday in the u.s. time that I wasn't

play07:25

able to attend to kind of kick off this

play07:27

new topic about image signing and see if

play07:30

we can agree on what it looks like to

play07:32

sign an image run c1o is finally

play07:36

finishing up like I said the

play07:38

distribution spec what comes after one

play07:41

so kind of one plus and then a lot of

play07:43

new ideas have been presented in the

play07:45

last year about container images have we

play07:47

picked the best model for how we create

play07:49

these tarballs of layers and so there's

play07:52

a lot of great information if you go

play07:54

searching on sort of OCI v2 which is not

play07:57

an official name of any kind of spec but

play07:59

just kind of a moniker for those

play08:01

discussions so that's kind of a

play08:05

whirlwind tour of OCI why it was created

play08:08

what it's done what we're still trying

play08:09

to do let's turn our attention to

play08:12

kubernetes so you probably know this but

play08:17

just in case you don't kubernetes has

play08:19

never had a run time in kubernetes

play08:21

itself it doesn't know how to run

play08:23

containers it's an Orchestrator it's

play08:26

always relied on some container run time

play08:29

to do the work of actually running your

play08:31

containers since the earliest days of

play08:35

kubernetes that was docker via this

play08:37

docker shim code which you can still

play08:40

find if you go out and github poke down

play08:43

in the kubernetes code base you can find

play08:46

the docker shim code that drives the dr

play08:48

engine to do things like when you start

play08:50

a pod docker

play08:52

has to actually start that container

play08:54

has to interact with the couplet about

play08:58

statistics operations like stopping

play09:01

removing etc pulling images from the

play09:04

registry and so again this is kind of

play09:07

where we were

play09:09

again as other runtimes appeared on the

play09:11

scene there were variants of this like

play09:14

rocket Nettie's to use rocket as the

play09:17

runtime but as the idea of more runtimes

play09:23

were kind of on the horizon it was clear

play09:26

that it wasn't going to be feasible to

play09:28

keep kind of integrating code with the

play09:30

couplet and container runtimes and sort

play09:32

of having this mess of different code

play09:34

bases and and trees for different

play09:36

runtimes and so the CRI interface the

play09:40

container runtime interface was

play09:41

announced in late 2016 as a way to

play09:44

abstract out the idea of a container

play09:47

runtime and how it interfaces to

play09:49

kubernetes so a set of responsibilities

play09:52

defined by the CRI API would be given

play09:56

and if you are a runtime and wanted to

play09:58

plug into cuber days all you have to do

play09:59

is respond to the CRI API calls start

play10:03

stop remove pull image etc then you can

play10:07

go read up on sort of that whole

play10:09

interface spec and there again continues

play10:12

to be growth there and changes over time

play10:14

as a new features are requested for how

play10:17

kubernetes interacts and what kind of

play10:19

information needs to be shared between

play10:21

kubernetes and runtimes so kind of the

play10:26

current landscape today of who is

play10:28

actually implementing this interface

play10:31

obviously docker continues to be

play10:33

somewhat a default many people still use

play10:37

the docker engine docker shim is sort of

play10:40

grandfathered in it's not a real sort of

play10:42

CRI implementation but when we talk

play10:45

about kubernetes using runtimes

play10:47

it makes sense for us to list it but CRI

play10:50

and creo are kind of the the major

play10:53

implementers of the CRI today I also

play10:56

breakout container D to show that you

play10:59

can run other Isolators underneath

play11:01

container D you can also do some of

play11:03

these under creo simply by just

play11:06

replacing run C with other

play11:07

binary's but container d developed a

play11:10

shim api so that there could actually be

play11:13

sort of a richer level of communication

play11:16

between the runtime and these Isolators

play11:19

like cata or firecracker or Google's G

play11:22

Weiser singularity which I mentioned

play11:25

maybe you haven't heard of it from the

play11:28

high-performance computing space they

play11:30

created a runtime specific to the needs

play11:33

of HPC cluster workloads but over time

play11:38

they added OCI compliance and then more

play11:41

recently last year they added an

play11:42

implementation of the CRI that again if

play11:46

you wanted a kubernetes cluster in an

play11:49

HPC environment and your choice was

play11:51

singularity you can now actually plug

play11:53

that into a kubernetes cluster and that

play11:55

will drive singularity to do those

play11:57

operations on containers if you were

play12:01

creating your own cluster the way you

play12:02

would do this sort of if you're

play12:04

following Kelsey Hightower's kubernetes

play12:08

the hard way when you start the Kubla

play12:09

you can actually point it at a runtime

play12:11

point it to the socket that's going to

play12:13

actually respond to the CRI API and then

play12:17

we don't have a ton of time to go into

play12:19

runtime class but that's a feature

play12:22

slightly newer that then allows you to

play12:25

actually register runtimes with

play12:26

kubernetes and use that as a way like in

play12:30

your pod spec to say actually I would

play12:32

like this pod run with this runtime and

play12:35

then you can interface with container D

play12:37

for example to place a specific workload

play12:41

on firecracker or a cat or G visor so

play12:44

that's kind of the the path to using

play12:46

different runtimes within kubernetes

play12:50

obviously if you're using a managed

play12:51

service from one of the cloud providers

play12:53

if your company's operations team is

play12:57

running your clusters they're going to

play12:58

make this choice for you and you're

play13:00

going to default to whatever runtime

play13:02

that they choose for your needs so kind

play13:06

of where we are today Cystic just put

play13:10

out a report I think within the last

play13:12

month or so and this was a graphic that

play13:15

they added to that report which has a

play13:18

little more detail sort of textually if

play13:20

you want to follow through to this link

play13:22

you can read more about it but not

play13:25

totally unexpected

play13:26

then again docker has been the default

play13:28

runtime under so many clusters operated

play13:33

and in production today that that as you

play13:37

would expect docker is the lion's share

play13:39

of results in their survey container D

play13:43

up to 18% and crea 4% and growing again

play13:48

creo has become the default in Red Hat's

play13:51

OpenShift

play13:52

and so you can expect that that number

play13:54

will grow as well so we put out a blog

play13:59

post early last year just talking about

play14:01

our work to integrate container D so I'm

play14:03

a maintainer in the CNC F container D

play14:05

project and so you can read more about

play14:09

our work to bring that to GA and that's

play14:12

led to IBM's managed kubernetes service

play14:15

ease in container D is a runtime gke has

play14:18

it as an option and then last week at a

play14:21

BBS reinvent Amazon announced that they

play14:26

were using container D with as the

play14:29

default runtime for Fargate and so we

play14:32

see again a lot of movement in the space

play14:34

as people make other choices and sort of

play14:36

defaulting to docker and so be

play14:39

interesting in a year to see where this

play14:41

goes now in 25 minutes it's really

play14:45

almost impossible to kind of detail why

play14:48

would I choose if it was up to me if I

play14:51

was creating the clusters why would I

play14:53

choose different runtimes there's

play14:55

obviously maybe a myriad of choices

play14:58

around performance or stability

play15:00

extensibility maybe you're really

play15:03

interested in your runtime being

play15:05

directly compatible to a kubernetes

play15:07

release and so the creo team has made

play15:10

that kind of a tenant of how they exist

play15:14

so creo 1.16 you know for sure that was

play15:17

tested fully ended and passes all the

play15:20

sweets for kubernetes 1.16 maybe you're

play15:23

interested in additional isolation like

play15:25

cata nabla G visor etc etc I did try and

play15:32

sort of answer these questions in a talk

play15:34

at

play15:36

coupe con San Diego last month so you

play15:39

can watch that or see the slides as well

play15:41

if you want to dig deeper into that

play15:43

topic I would like to highlight that

play15:46

there is increased interest in this

play15:49

whole idea of maybe default container

play15:52

isolation isn't enough for my workloads

play15:55

for my threat models and so there's a

play15:58

lot of people in the security community

play16:00

talking about this such as this tweet

play16:01

that came out around coupe con last

play16:05

month and again it was an area I would

play16:08

because I've worked in run times I've

play16:11

been interested to see sort of the

play16:12

announcements and the the rollouts of

play16:14

different use cases and if you were in

play16:18

this room a few hours ago

play16:20

Atlassian talked about their use of cata

play16:23

which was quite interesting as a

play16:26

additional isolation layer in their

play16:28

pipelines capability so I read an

play16:31

article in info queue published in

play16:33

October again a lot more detail about

play16:36

why are people interested in sandboxes

play16:38

who's using them and kind of where where

play16:40

they might be going from here so the

play16:43

good news is no matter who's choosing a

play16:46

runtime there's a there's a way to

play16:51

interface with it that doesn't rely on

play16:53

your operators having to know the the

play16:56

client tooling or the specifics of a

play16:58

specific runtime and so that tool is

play17:01

called CRI CTL and so if your cloud

play17:05

provider creates you a kubernetes

play17:08

cluster and gives you access to a worker

play17:10

node hopefully you'd be able to find

play17:12

this command and you can start talking

play17:14

directly to the CRI socket four-year

play17:18

runtime so no matter if that's docker

play17:19

carrillo container d you can do things

play17:22

that sort of feel natural things you'd

play17:25

expect to do like PS commands there's

play17:28

some sort of special commands with extra

play17:30

characters like stop p4 stop a pod

play17:33

versus topic container removing pulling

play17:36

images listing images so again this is a

play17:39

way for your operators to again abstract

play17:42

away from this idea that we have to know

play17:45

exactly the runtime and so you can read

play17:48

there's

play17:49

a user guide the CRI team for container

play17:52

D put together and obviously the code

play17:54

for that is within kubernetes so I think

play18:01

you know summarizing what I hope to have

play18:05

to have shared is that the OCI was a

play18:07

really valuable step in kind of this

play18:10

explosion of interest in the container

play18:12

ecosystem to have a level playing field

play18:14

so that we're not all fighting each

play18:16

other with different tool choices that

play18:18

mean we can't work together so the fact

play18:21

that that as of you know these last few

play18:24

years that that we don't have to worry

play18:26

about whether our developers are using

play18:28

the same exact runtime as our operations

play18:31

or production team and these higher

play18:33

layer layer as abstractions can have

play18:37

real interoperability that that's been

play18:40

proven and the fact that we got all the

play18:43

right people together to collaborate and

play18:45

put that together hopefully means we've

play18:48

delivered on kind of maybe making the

play18:50

runtime space boring after all the talk

play18:52

of sort of the container runtime wars of

play18:55

of 2015 another I think sort of side

play19:00

effect which I call the network effect

play19:02

of having this this positive peer

play19:06

pressure to be OCI compliant is that the

play19:09

LXE team and the singularity team added

play19:13

OCI compatibility to their runtimes

play19:16

which are not necessarily docker like

play19:18

and so that was great to see that the

play19:23

expectation is that in the container

play19:25

ecosystem OCI compliance is valuable and

play19:29

useful for users and so add to that the

play19:33

CRI and we really have gotten to the

play19:36

place where sort of plug ability with

play19:38

your kubernetes cluster is a reality and

play19:41

again we can hear from other talks that

play19:44

people are actually using these features

play19:45

they're actually doing this and

play19:47

implementing this again whenever we I

play19:51

think some things that are still in

play19:53

progress choice is always confusing

play19:57

because people want to know why what

play19:59

should I choose just tell me the right

play20:01

answer and

play20:02

it's not always easy in a world where

play20:03

there's lots of choices and so one of

play20:09

the reasons I give this talk and

play20:10

hopefully others are sharing their

play20:13

experiences is so people have some data

play20:15

and some information to make these

play20:17

choices themselves and so it doesn't

play20:18

become just a a crazy set of choices and

play20:22

and confusing decisions so hopefully

play20:26

we're helping users make those choices

play20:27

to determine you know do I need

play20:30

sandboxing isolation like G Weiser

play20:32

ricotta are the default runtimes good

play20:35

enough for my use cases what are the

play20:37

threat models and again there's a lot

play20:39

going on the security space in

play20:40

kubernetes to try and help people figure

play20:43

those things out I think also in a world

play20:46

where a lot of this is still maturing is

play20:49

obviously companies do like common

play20:51

tooling choices enterprises like to know

play20:54

that people are sort of all using a

play20:56

standardized thing so in a world where

play20:58

we're seeing a lot of docker migration

play21:01

to other other tools and other platforms

play21:05

you know where where do we send people

play21:07

for this kind of docker run use case

play21:10

that everyone has sort of accepted over

play21:12

the years and then finally as I tried to

play21:16

hint at I think we're trying to keep

play21:19

momentum in the OCI for challenges that

play21:21

still exists things that are still of

play21:23

interest to users to standardize so

play21:26

though for example we don't have a

play21:28

myriad of choices if I use Azure

play21:31

registry or IBM cloud or Google that we

play21:34

have different ways to sign images or to

play21:36

verify or validate images and so

play21:38

hopefully the OCI will continue on being

play21:41

a valuable place where we have those

play21:44

discussions figure out a common path

play21:46

forward and and make this

play21:48

straightforward for users and operators

play21:51

to continue using these valuable tools

play21:54

so with that that's what I wanted to

play21:57

share today we have a two and a half

play22:00

minutes officially on the clock but it's

play22:03

also break time in a few minutes so I'm

play22:06

happy to answer questions here I'm happy

play22:08

just to to hang around so anyone have a

play22:11

burning question before we officially

play22:13

close

play22:15

and I can barely see but I'm happy to

play22:20

pass a mic if if so and I think people

play22:24

are maybe more interested in break-in

play22:26

questions so let's end there and thanks

play22:29

very much for listening

play22:30

[Applause]

Rate This
β˜…
β˜…
β˜…
β˜…
β˜…

5.0 / 5 (0 votes)

Related Tags
Container RuntimesDockerOCICRIKubernetesCloud FoundrySandbox IsolationLinux NamespacesDeveloper ToolsTech InnovationIndustry Standards