optimizing for production workloads dan walsh red hat
play

Optimizing for Production Workloads Dan Walsh Red Hat @rhatdan - PowerPoint PPT Presentation

Optimizing for Production Workloads Dan Walsh Red Hat @rhatdan Samuel Ortiz @sameo PDF PDF Linux PDF Linux Containers What do you need to run a container Standard Definition of what makes up a container image. OCI Image Bundle


  1. Optimizing for Production Workloads Dan Walsh Red Hat @rhatdan Samuel Ortiz @sameo

  2. PDF

  3. PDF Linux

  4. PDF Linux Containers

  5. What do you need to run a container Standard Definition of what makes up a container image. ● OCI Image Bundle Definition ○

  6. What do you need to run a container` Standard Definition of what makes up a container image. ● OCI Image Bundle Definition ○ Mechanism to pull images from a container registry to the host ● github.com/containers/image ○

  7. What do you need to run a container Standard Definition of what a container image is ● OCI Image Bundle Definition ○ Mechanism to pull images from a container registry to the host ● github.com/containers/image ○ ● Ability to explode images onto COW file systems on disk github.com/containers/storage ○

  8. What do you need to run a container Standard Definition of what a container image is ● OCI Image Bundle Definition ○ Mechanism to pull images from a container registry to the host ● github.com/containers/image ○ ● Ability to explode images onto COW file systems on disk github.com/containers/storage ○ Standard mechanism for running a container ● ○ OCI Runtime Spec (1.0) runc default implementation of OCI Runtime Spec (Same tool Docker uses to run containers) ○

  9. #nobigfatdaemons

  10. What does OpenShift/Kubernetes need to run a container? CRI - Container Runtime Interface #nobigfatdaemons

  11. What does Kubernetes need to run a container? CRI - Container Runtime Interface Kubernetes tells CRI to run Container Image: #nobigfatdaemons

  12. What does Kubernetes need to run a container? CRI - Container Runtime Interface Kubernetes tells CRI to run Container Image: ● CRI needs to pull image from Container Registry #nobigfatdaemons

  13. What does Kubernetes need to run a container? CRI - Container Runtime Interface Kubernetes tells CRI to run Container Image: ● CRI needs to pull image from Container Registry ● CRI Needs to store image on COW File system #nobigfatdaemons

  14. What does Kubernetes need to run a container? CRI - Container Runtime Interface Kubernetes tells CRI to run Container Image: ● CRI needs to pull image from Container Registry ● CRI Needs to store image on COW File system ● CRI Needs to execute OCI Runtime #nobigfatdaemons

  15. Introducing CRI-O CRI-O - OCI-based implementation of Kubernetes Container Runtime Interface Scope tied to kubernetes CRI ● ● Only supported user is kubernetes Uses standard components as building blocks ● “Nothing more, Nothing Less” #nobigfatdaemons

  16. #nobigfatdaemons

  17. #nobigfatdaemons

  18. #nobigfatdaemons

  19. S W A R M #nobigfatdaemons

  20. S W A R M #nobigfatdaemons

  21. M O B Y #nobigfatdaemons

  22. M O B Y #nobigfatdaemons

  23. M O B Y #nobigfatdaemons

  24. #nobigfatdaemons

  25. Overview of additional components oci-runtime-tools library is used to generate OCI configs for containers ● #nobigfatdaemons

  26. Overview of additional components oci-runtime-tools library is used to generate OCI configs for containers ● CNI is used for setting up networking ● ○ Tested with Flannel, Weave and openshift-sdn #nobigfatdaemons

  27. Overview of additional components oci-runtime-tools library is used to generate OCI configs for containers ● CNI is used for setting up networking ● ○ Tested with Flannel, Weave and openshift-sdn conmon is a utility for: ● Monitoring ○ Logging ○ Handling tty ○ Serving attach clients ○ Detecting and reporting OOM ○ #nobigfatdaemons

  28. Pod architecture (runc) conmon conmon conmon Infra Container Container A Container B (runc) (runc) Pod (ipc, net, pid namespaces, cgroups) #nobigfatdaemons

  29. Pod architecture (Kata Containers) conmon conmon kata-shim kata-shim Container A Container B (kata-runtime) (kata-runtime) Virtual Machine (ipc, net, pid namespaces, cgroups) #nobigfatdaemons Pod (net namespace, cgroups)

  30. Architecture #nobigfatdaemons

  31. Status All e2e, cri-tools, integration (>500) tests passing. ● No PRs merged without passing all the tests. ○ #nobigfatdaemons

  32. Status All e2e, cri-tools, integration (>500) tests passing. ● No PRs merged without passing all the tests. ○ 1.0.7 (kube 1.7.x) supported. ● Currently available as tech preview in Openshift 3.7 on RHEL, Tech Preview ○ #nobigfatdaemons

  33. Status All e2e, cri-tools, integration (>500) tests passing. ● No PRs merged without passing all the tests. ○ 1.0.7 (kube 1.7.x) supported. ● Currently available as tech preview in Openshift 3.7 on RHEL, Tech Preview ○ ● 1.8.4 (kube 1.8.x) supported. Available for OpenShift origin 3.8. ○ Running on Openshift Online Now ○ #nobigfatdaemons

  34. Status All e2e, cri-tools, integration (>500) tests passing. ● No PRs merged without passing all the tests. ○ 1.0.7 (kube 1.7.x) supported. ● Currently available as tech preview in Openshift 3.7 on RHEL, Tech Preview ○ ● 1.8.4 (kube 1.8.x) supported. Available for OpenShift origin 3.8. ○ Running on Openshift Online Now ○ 1.9.1-1 (kube 1.9.x) released. ● CRI-O will be fully supported in OpenShift 3.9 along with docker. ○ #nobigfatdaemons

  35. Status All e2e, cri-tools, integration (>500) tests passing. ● No PRs merged without passing all the tests. ○ 1.0.7 (kube 1.7.x) supported. ● Currently available as tech preview in Openshift 3.7 on RHEL, Tech Preview ○ ● 1.8.4 (kube 1.8.x) supported. Available for OpenShift origin 3.8. ○ Running on Openshift Online Now ○ 1.9.1-1 (kube 1.9.x) released. ● CRI-O will be fully supported in OpenShift 3.9 along with docker. ○ ● Goal for Openshift 3.10 is to fully support CRI-O by default. #nobigfatdaemons

  36. Status All e2e, cri-tools, integration (>500) tests passing. ● No PRs merged without passing all the tests. ○ 1.0.7 (kube 1.7.x) supported. ● Currently available as tech preview in Openshift 3.7 on RHEL, Tech Preview ○ ● 1.8.4 (kube 1.8.x) supported. Available for OpenShift origin 3.8. ○ Running on Openshift Online Now ○ 1.9.1-1 (kube 1.9.x) released. ● CRI-O will be fully supported in OpenShift 3.9 along with docker. ○ ● Goal for Openshift 3.10 is to fully support CRI-O by default. Maintainers/contributors from Red Hat, Intel, Lyft, SUSE and many others. ● #nobigfatdaemons

  37. Status CRI-O is now powering nodes on OpenShift Online. #nobigfatdaemons

  38. " CRI-O just works for them, so they haven’t had much to say" #nobigfatdaemons

  39. Making running containers in production boring #nobigfatdaemons

  40. #nobigfatdaemons

  41. What else does OpenShift need? Ability to build container images ● Ability to push container images to container registries ● #nobigfatdaemons

  42. #nobigfatdaemons

  43. Introducing Buildah https://github.com/projectatomic/buildah #nobigfatdaemons

  44. Coreutils for building containers. Simple interface #nobigfatdaemons

  45. Coreutils for building containers. Simple interface # ctr=$(buildah from fedora) #nobigfatdaemons

  46. Coreutils for building containers. Simple interface # ctr=$(buildah from fedora) # mnt=$(buildah mount $ctr) #nobigfatdaemons

  47. #nobigfatdaemons

  48. Coreutils for building containers. Simple interface # ctr=$(buildah from fedora) # mnt=$(buildah mount $ctr) # cp -R src $mnt #nobigfatdaemons

  49. Coreutils for building containers. Simple interface # ctr=$(buildah from fedora) # mnt=$(buildah mount $ctr) # cp -R src $mnt # dnf install --installroot=$mnt httpd #nobigfatdaemons

  50. Coreutils for building containers. Simple interface # ctr=$(buildah from fedora) # mnt=$(buildah mount $ctr) # cp -R src $mnt # dnf install --installroot=$mnt httpd # make install DESTDIR=$mnt #nobigfatdaemons

  51. Coreutils for building containers. Simple interface # ctr=$(buildah from fedora) # mnt=$(buildah mount $ctr) # cp -R src $mnt # dnf install --installroot=$mnt httpd # make install DESTDIR=$mnt # buildah config --enrtrypoint=/usr/sbin/test.sh --env foo=bar $ctr #nobigfatdaemons

  52. Coreutils for building containers. Simple interface # ctr=$(buildah from fedora) # mnt=$(buildah mount $ctr) # cp -R src $mnt # dnf install --installroot=$mnt httpd # make install DESTDIR=$mnt # buildah config --enrtrypoint=/usr/sbin/test.sh --env foo=bar $ctr # buildah commit $ctr myhttpd #nobigfatdaemons

  53. Coreutils for building containers. Simple interface # ctr=$(buildah from fedora) # mnt=$(buildah mount $ctr) # cp -R src $mnt # dnf install --installroot=$mnt httpd # make install DESTDIR=$mnt # buildah config --enrtrypoint=/usr/sbin/test.sh --env foo=bar $ctr # buildah commit $ctr myhttpd # buildah push myhttpd docker://rhatdan/myhttpd #nobigfatdaemons

  54. Dan Wait! #nobigfatdaemons

  55. Dan Wait! What about Dockerfile????? #nobigfatdaemons

  56. Buildah also supports Dockerfile buildah build-using-dockerfile -f Dockerfile . #nobigfatdaemons

  57. Buildah also supports Dockerfile buildah build-using-dockerfile -f Dockerfile . Or for those lazy ones: buildah bud -f Dockerfile . #nobigfatdaemons

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend