for example, can I have one pod running docker and another running cri-o?
I am new to the world of kubernetes and I've not been able to find the answer in the documentation.
for example, can I have one pod running docker and another running cri-o?
I am new to the world of kubernetes and I've not been able to find the answer in the documentation.
In Kubernetes version 1.20 you have concept of a RuntimeClass. This basically tells Kubernetes, on a Pod level, which container engine to use to run the pod.
You can set a different RuntimeClass between different Pods to provide a balance of performance versus security. For example, if part of your workload deserves a high level of information security assurance, you might choose to schedule those Pods so that they run in a container runtime that uses hardware virtualization. You'd then benefit from the extra isolation of the alternative runtime, at the expense of some additional overhead.
You can also use RuntimeClass to run different Pods with the same container runtime but with different settings.
With this in place, you can use concept such as a micro-VM / lightweight-VM to run a pod. This concept is not particular to Kubernetes or container orchestration, but really comes from the related world of sandboxing applications (eg. as a browser security enhancement for opening attachments from untrusted websites). See for example this comparison of micro-VMs for application sandboxing.
For Kubernetes, technologies such as gVisor and Kata (and other; see the Container Runtime landscape on CNCF) aim to provide value.
The capabilities that are made available will be heavily dependent on the Kubernetes distribution and how its VM infrastructure has been setup.