{"id":16470,"date":"2021-06-22T07:02:04","date_gmt":"2021-06-22T05:02:04","guid":{"rendered":"https:\/\/www.dbi-services.com\/blog\/kubernetes-from-docker-to-containerd\/"},"modified":"2021-06-22T07:02:04","modified_gmt":"2021-06-22T05:02:04","slug":"kubernetes-from-docker-to-containerd","status":"publish","type":"post","link":"https:\/\/www.dbi-services.com\/blog\/kubernetes-from-docker-to-containerd\/","title":{"rendered":"Kubernetes : from Docker to containerd"},"content":{"rendered":"<p>Kubernetes is very popular and well-known open-source orchestration platform for containers. Very dynamic ecosystem, the release cycle is also very fast.<br \/>\nSix months passed since the K8s team announced the dockershim will be deprecated and the 1.22 release deadline is approaching.<br \/>\nAs they informed in their quite detailed post in early Dec. 2020, Docker support will be removed in 1.22 :\u00a0<a href=\"https:\/\/kubernetes.io\/blog\/2020\/12\/02\/dont-panic-kubernetes-and-docker\/\">https:\/\/kubernetes.io\/blog\/2020\/12\/02\/dont-panic-kubernetes-and-docker\/<\/a><br \/>\nWe are here today in order to see how we can migrate, with minimal overhead, a Kubernetes cluster setup to use Docker as container runtime into a up-to-date cluster using containerd instead, and ready for future releases.<\/p>\n<h3>From Docker to containerd migration<\/h3>\n<p>This cluster is setup on latest Ubuntu LTS release, 20.04.2, but steps described here are easily adaptable to other Linux flavors, like RedHat or CentOS.<\/p>\n<p><a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/Docker_containerd_cluster_initial-1.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-50504 size-full\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/Docker_containerd_cluster_initial-1.png\" alt=\"\" width=\"1057\" height=\"75\" \/><\/a><\/p>\n<p>We are going to proceed first with the workers and then the master.<\/p>\n<p>Let&#8217;s drain the worker1.<\/p>\n<p><a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/Docker_containerd_worker1_drain.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-50505 size-full\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/Docker_containerd_worker1_drain.png\" alt=\"\" width=\"719\" height=\"133\" \/><\/a><\/p>\n<p>Move to worker1 now.<br \/>\nWhen you installed Docker on your nodes, containerd was installed too.<br \/>\nTo confirm that statement, you can try to check the containerd service status.<\/p>\n<p><a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/Docker_containerd_containerd_status.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-50506 size-full\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/Docker_containerd_containerd_status.png\" alt=\"\" width=\"696\" height=\"104\" \/><\/a><\/p>\n<p>Before doing any activity, stop kubelet :<\/p>\n<p><a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/Docker_containerd_kubelet_stop.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-50507 size-full\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/Docker_containerd_kubelet_stop.png\" alt=\"\" width=\"1181\" height=\"158\" \/><\/a><\/p>\n<p>When installed through Docker, containerd got its CRI plugin disabled.<br \/>\nUpdate its config file accordingly which sits in \/etc\/containerd\/config.toml and comment the line containing disabled_plugins = [&#8220;cri&#8221;]<\/p>\n<p><a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/Docker_containerd_containerd_config.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-50510 size-full\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/Docker_containerd_containerd_config.png\" alt=\"\" width=\"539\" height=\"463\" \/><\/a><\/p>\n<p>Once the configuration is updated, restart the containerd service.<\/p>\n<p><a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/Docker_containerd_restart_containerd.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-50513\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/Docker_containerd_restart_containerd.jpg\" alt=\"\" width=\"800\" height=\"161\" \/><\/a><\/p>\n<p>Now it&#8217;s time to update kubelet to tell him to use containerd as CRI runtime instead of Docker. For that purpose, two arguments were implemented.<br \/>\nWhen you navigate to the kubelet reference page on the official website, you&#8217;ll get a better overview : <a href=\"https:\/\/kubernetes.io\/docs\/reference\/command-line-tools-reference\/kubelet\">https:\/\/kubernetes.io\/docs\/reference\/command-line-tools-reference\/kubelet<\/a><\/p>\n<p><a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/Docker_containerd_kubelet_cli_args.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-50508 size-full\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/Docker_containerd_kubelet_cli_args.png\" alt=\"\" width=\"1224\" height=\"177\" \/><\/a><\/p>\n<p>We would need to update both (note kubelet defaulting to Docker !)<\/p>\n<p>New arguments values would be for containerd :<br \/>\n<code>--container-runtime=remote --container-runtime-endpoint=unix:\/\/\/run\/containerd\/containerd.sock<\/code><\/p>\n<p>Those arguments are defined the kubelet drop-in file for systemd. Open the \/etc\/systemd\/system\/kubelet.service.d\/10-kubeadm.conf<br \/>\nCheck the content. On default installations, the KUBELET_EXTRA_ARGS is not defined, you would need to add it as a new line in the file. Your updated configuration file should be similar to the following :<\/p>\n<p><a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/Docker_containerd_kubelet_args.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-50509 size-full\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/Docker_containerd_kubelet_args.png\" alt=\"\" width=\"1003\" height=\"233\" \/><\/a><\/p>\n<p>Inform systemd we&#8217;ve updated the configuration and restart the kubelet.<\/p>\n<p><a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/Docker_containerd_restart_kubelet.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-50512 size-full\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/Docker_containerd_restart_kubelet.png\" alt=\"\" width=\"1708\" height=\"390\" \/><\/a>If the systemctl daemon-reload is not performed, you&#8217;ll be warned by the system:<\/p>\n<p><a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/Docker_containerd_daemon_reload.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-50511 size-full\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/Docker_containerd_daemon_reload.png\" alt=\"\" width=\"1019\" height=\"14\" \/><\/a><\/p>\n<p>To summarize : we&#8217;ve updated containerd to be ready to be used as CRI runtime, we&#8217;ve told kubelet to use containerd instead of Docker. Time is now to switch back to the master, check if things have changed and move on !<\/p>\n<p><a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/Docker_containerd_cluster_final.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-50514 size-full\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/Docker_containerd_cluster_final.png\" alt=\"\" width=\"1187\" height=\"74\" \/><\/a><\/p>\n<p>Surprise ! Well, not a suprise because we expected this : Kubernetes is reporting now that our worker1 node is running on containerd instead of Docker. Pay attention to the last column.<\/p>\n<p>We are ready now to bring back the worker1 into the cluster. For that, you need to uncordon :<\/p>\n<p><a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/docker_containerd_uncordon_worker1.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-50520 size-full\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/docker_containerd_uncordon_worker1.png\" alt=\"\" width=\"392\" height=\"30\" \/><\/a><\/p>\n<p>Repeat this with worker2, and then master, and you&#8217;ll be ready.<\/p>\n<p>Our cluster is fully operational, using containerd :<\/p>\n<p><a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/docker_containerd_cluster_fully_migrated.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-50521 size-full\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/docker_containerd_cluster_fully_migrated.png\" alt=\"\" width=\"1204\" height=\"77\" \/><\/a><\/p>\n<h3>Leaving Docker installed ?<\/h3>\n<p>Note that with the activities we performed here, we left Docker installed on each nodes. containerd was installed as a part of the installation of Docker.<br \/>\nIf you plan to remove Docker completely, you would need to install containerd as a standalone package. This can be done using package through the standard Docker repository.<br \/>\nAnother solution is to download containerd binaries from the official website: <a href=\"https:\/\/containerd.io\/downloads\/\">https:\/\/containerd.io\/downloads\/<\/a><br \/>\nIn that case, you may need to generate the containerd config file using the command:<br \/>\n<code>containerd config default &gt; \/etc\/containerd\/config.toml<\/code><\/p>\n<h3>The ctr command<\/h3>\n<p>Now we don&#8217;t use anymore docker, the docker cli command won&#8217;t list any container. By using containerd, we can now use the ctr command, the containerd cli tool used to interact with containerd.<br \/>\nLike with docker, with the ctr command, you can list \/ create \/ delete containers, import \/ export \/ pull images, and many more.<\/p>\n<p><a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/docker_containerd_ctr_containers_ls.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-50522 size-full\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/docker_containerd_ctr_containers_ls.png\" alt=\"\" width=\"1412\" height=\"242\" \/><\/a>Note the namespace terminology here. Namespaces in containerd are not the same namespaces used in Kubernetes.<\/p>\n<p>With ctr, you can also list pulled images:<\/p>\n<p><a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/docker_containerd_ctr_images_ls.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-50523 size-full\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/docker_containerd_ctr_images_ls.png\" alt=\"\" width=\"1919\" height=\"303\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<p>By migrating your cluster away from docker, you&#8217;ll be protected against the deprecation of one of the core component, scheduled in the upcoming release.<br \/>\nBut containerd also provide additional flexibility.<br \/>\nIn a second episode, we will learn how to setup Kubernetes to use containerd, with not only runC as OCI runtime but also KataContainers.<br \/>\nStay connected !<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Kubernetes is very popular and well-known open-source orchestration platform for containers. Very dynamic ecosystem, the release cycle is also very fast. Six months passed since the K8s team announced the dockershim will be deprecated and the 1.22 release deadline is approaching. As they informed in their quite detailed post in early Dec. 2020, Docker support [&hellip;]<\/p>\n","protected":false},"author":109,"featured_media":16471,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1320,1522],"tags":[],"type_dbi":[],"class_list":["post-16470","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-devops","category-kubernetes"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.2 (Yoast SEO v27.2) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Kubernetes : from Docker to containerd - dbi Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.dbi-services.com\/blog\/kubernetes-from-docker-to-containerd\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Kubernetes : from Docker to containerd\" \/>\n<meta property=\"og:description\" content=\"Kubernetes is very popular and well-known open-source orchestration platform for containers. Very dynamic ecosystem, the release cycle is also very fast. Six months passed since the K8s team announced the dockershim will be deprecated and the 1.22 release deadline is approaching. As they informed in their quite detailed post in early Dec. 2020, Docker support [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dbi-services.com\/blog\/kubernetes-from-docker-to-containerd\/\" \/>\n<meta property=\"og:site_name\" content=\"dbi Blog\" \/>\n<meta property=\"article:published_time\" content=\"2021-06-22T05:02:04+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/Docker_containerd_cluster_initial-1.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1057\" \/>\n\t<meta property=\"og:image:height\" content=\"75\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"DevOps\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"DevOps\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/kubernetes-from-docker-to-containerd\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/kubernetes-from-docker-to-containerd\/\"},\"author\":{\"name\":\"DevOps\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/4cd1b5f8a3de93f05a16ab8d7d2b7735\"},\"headline\":\"Kubernetes : from Docker to containerd\",\"datePublished\":\"2021-06-22T05:02:04+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/kubernetes-from-docker-to-containerd\/\"},\"wordCount\":711,\"commentCount\":0,\"image\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/kubernetes-from-docker-to-containerd\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/Docker_containerd_cluster_initial-1.png\",\"articleSection\":[\"DevOps\",\"Kubernetes\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/kubernetes-from-docker-to-containerd\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/kubernetes-from-docker-to-containerd\/\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/kubernetes-from-docker-to-containerd\/\",\"name\":\"Kubernetes : from Docker to containerd - dbi Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/kubernetes-from-docker-to-containerd\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/kubernetes-from-docker-to-containerd\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/Docker_containerd_cluster_initial-1.png\",\"datePublished\":\"2021-06-22T05:02:04+00:00\",\"author\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/4cd1b5f8a3de93f05a16ab8d7d2b7735\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/kubernetes-from-docker-to-containerd\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/kubernetes-from-docker-to-containerd\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/kubernetes-from-docker-to-containerd\/#primaryimage\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/Docker_containerd_cluster_initial-1.png\",\"contentUrl\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/Docker_containerd_cluster_initial-1.png\",\"width\":1057,\"height\":75},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/kubernetes-from-docker-to-containerd\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\/\/www.dbi-services.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Kubernetes : from Docker to containerd\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#website\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/\",\"name\":\"dbi Blog\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.dbi-services.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/4cd1b5f8a3de93f05a16ab8d7d2b7735\",\"name\":\"DevOps\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/secure.gravatar.com\/avatar\/cdd2dd7441774355062c0f0f68612296b059cd1e2ff6c7af0b15dba0ed64a85f?s=96&d=mm&r=g\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/cdd2dd7441774355062c0f0f68612296b059cd1e2ff6c7af0b15dba0ed64a85f?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/cdd2dd7441774355062c0f0f68612296b059cd1e2ff6c7af0b15dba0ed64a85f?s=96&d=mm&r=g\",\"caption\":\"DevOps\"},\"url\":\"https:\/\/www.dbi-services.com\/blog\/author\/devops\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Kubernetes : from Docker to containerd - dbi Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.dbi-services.com\/blog\/kubernetes-from-docker-to-containerd\/","og_locale":"en_US","og_type":"article","og_title":"Kubernetes : from Docker to containerd","og_description":"Kubernetes is very popular and well-known open-source orchestration platform for containers. Very dynamic ecosystem, the release cycle is also very fast. Six months passed since the K8s team announced the dockershim will be deprecated and the 1.22 release deadline is approaching. As they informed in their quite detailed post in early Dec. 2020, Docker support [&hellip;]","og_url":"https:\/\/www.dbi-services.com\/blog\/kubernetes-from-docker-to-containerd\/","og_site_name":"dbi Blog","article_published_time":"2021-06-22T05:02:04+00:00","og_image":[{"width":1057,"height":75,"url":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/Docker_containerd_cluster_initial-1.png","type":"image\/png"}],"author":"DevOps","twitter_card":"summary_large_image","twitter_misc":{"Written by":"DevOps","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.dbi-services.com\/blog\/kubernetes-from-docker-to-containerd\/#article","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/kubernetes-from-docker-to-containerd\/"},"author":{"name":"DevOps","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/4cd1b5f8a3de93f05a16ab8d7d2b7735"},"headline":"Kubernetes : from Docker to containerd","datePublished":"2021-06-22T05:02:04+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/kubernetes-from-docker-to-containerd\/"},"wordCount":711,"commentCount":0,"image":{"@id":"https:\/\/www.dbi-services.com\/blog\/kubernetes-from-docker-to-containerd\/#primaryimage"},"thumbnailUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/Docker_containerd_cluster_initial-1.png","articleSection":["DevOps","Kubernetes"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.dbi-services.com\/blog\/kubernetes-from-docker-to-containerd\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.dbi-services.com\/blog\/kubernetes-from-docker-to-containerd\/","url":"https:\/\/www.dbi-services.com\/blog\/kubernetes-from-docker-to-containerd\/","name":"Kubernetes : from Docker to containerd - dbi Blog","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/kubernetes-from-docker-to-containerd\/#primaryimage"},"image":{"@id":"https:\/\/www.dbi-services.com\/blog\/kubernetes-from-docker-to-containerd\/#primaryimage"},"thumbnailUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/Docker_containerd_cluster_initial-1.png","datePublished":"2021-06-22T05:02:04+00:00","author":{"@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/4cd1b5f8a3de93f05a16ab8d7d2b7735"},"breadcrumb":{"@id":"https:\/\/www.dbi-services.com\/blog\/kubernetes-from-docker-to-containerd\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dbi-services.com\/blog\/kubernetes-from-docker-to-containerd\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.dbi-services.com\/blog\/kubernetes-from-docker-to-containerd\/#primaryimage","url":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/Docker_containerd_cluster_initial-1.png","contentUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/Docker_containerd_cluster_initial-1.png","width":1057,"height":75},{"@type":"BreadcrumbList","@id":"https:\/\/www.dbi-services.com\/blog\/kubernetes-from-docker-to-containerd\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.dbi-services.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Kubernetes : from Docker to containerd"}]},{"@type":"WebSite","@id":"https:\/\/www.dbi-services.com\/blog\/#website","url":"https:\/\/www.dbi-services.com\/blog\/","name":"dbi Blog","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.dbi-services.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/4cd1b5f8a3de93f05a16ab8d7d2b7735","name":"DevOps","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/cdd2dd7441774355062c0f0f68612296b059cd1e2ff6c7af0b15dba0ed64a85f?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/cdd2dd7441774355062c0f0f68612296b059cd1e2ff6c7af0b15dba0ed64a85f?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/cdd2dd7441774355062c0f0f68612296b059cd1e2ff6c7af0b15dba0ed64a85f?s=96&d=mm&r=g","caption":"DevOps"},"url":"https:\/\/www.dbi-services.com\/blog\/author\/devops\/"}]}},"_links":{"self":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/16470","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/users\/109"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/comments?post=16470"}],"version-history":[{"count":0,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/16470\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media\/16471"}],"wp:attachment":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media?parent=16470"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/categories?post=16470"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/tags?post=16470"},{"taxonomy":"type","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/type_dbi?post=16470"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}