{"id":11387,"date":"2025-02-26T11:17:17","date_gmt":"2025-02-26T11:17:17","guid":{"rendered":"https:\/\/putridparrot.com\/blog\/?p=11387"},"modified":"2025-02-26T11:17:17","modified_gmt":"2025-02-26T11:17:17","slug":"kubernetes-system-pods","status":"publish","type":"post","link":"https:\/\/putridparrot.com\/blog\/kubernetes-system-pods\/","title":{"rendered":"Kubernetes system pods"},"content":{"rendered":"<p>Most of the time we&#8217;re going to be primarily (or only) be interested in our application and the pods related to it, but ofcourse Kubernetes also runs &#8220;system pods&#8221;, for example kube-dns, kube-scheduler etc.<\/p>\n<p>To get a list of these pods, run the following<\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\r\nkubectl get pods -n kube-system\r\n<\/pre>\n<p>or for fuller information use<\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\r\nkubectl get pods -n kube-system -o wide\r\n<\/pre>\n<p>On my system, running k8s via Docker Desktop, I&#8217;m seeing <em>coredns<\/em>, <em>etcd<\/em>, <em>kube-apiserver<\/em>, <em>kube-controller-manager<\/em>, <em>kube-proxy<\/em>, <em>stage-provisioner<\/em> and , <em>vpnkit-controller<\/em>.<\/p>\n<p>Let&#8217;s see what these are used for<\/p>\n<ul>\n<li><strong>coredns<\/strong> &#8211; as the name suggests, this provides DNS within the cluster, this enables service discovery and name resolution.<\/li>\n<li><strong>etcd<\/strong> &#8211; this store cluster data such as configuration and resources state, it&#8217;s a distributed key-value store.<\/li>\n<li><strong>kube-apiservice<\/strong> &#8211; this handles requests from users and tools such as kubectl.<\/li>\n<li><strong>kube-controller-manager<\/strong> &#8211; this runs controllers that monitor the state of the cluster, including things like replication and endpoints controllers etc.<\/li>\n<li><strong>kube-proxy<\/strong> &#8211; this maintains network rules on nodes, enabling communication between pods and also outside of the cluster.<\/li>\n<li><strong>stage-provisioner<\/strong> &#8211; this handles provisioning of storage, including volumes.<\/li>\n<li><strong>vpnkit-controller<\/strong> &#8211; this is part of Docker Desktop, so likely only seen in this usage. It ensures network traffic is properly routed.<\/li>\n<\/ul>\n<p>A couple of system level pods not showing on my system are<\/p>\n<ul>\n<li><strong>kubelet<\/strong> &#8211; this runs on each node ensuring the containers are running within the pods.<\/li>\n<li><strong>metrics-server<\/strong> &#8211; this collects and aggregates resource usage, this is used for auto-scaling.<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Most of the time we&#8217;re going to be primarily (or only) be interested in our application and the pods related to it, but ofcourse Kubernetes also runs &#8220;system pods&#8221;, for example kube-dns, kube-scheduler etc. To get a list of these pods, run the following kubectl get pods -n kube-system or for fuller information use kubectl [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[314],"tags":[],"class_list":["post-11387","post","type-post","status-publish","format-standard","hentry","category-kubernetes"],"jetpack_sharing_enabled":true,"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/putridparrot.com\/blog\/wp-json\/wp\/v2\/posts\/11387","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/putridparrot.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/putridparrot.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/putridparrot.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/putridparrot.com\/blog\/wp-json\/wp\/v2\/comments?post=11387"}],"version-history":[{"count":2,"href":"https:\/\/putridparrot.com\/blog\/wp-json\/wp\/v2\/posts\/11387\/revisions"}],"predecessor-version":[{"id":11389,"href":"https:\/\/putridparrot.com\/blog\/wp-json\/wp\/v2\/posts\/11387\/revisions\/11389"}],"wp:attachment":[{"href":"https:\/\/putridparrot.com\/blog\/wp-json\/wp\/v2\/media?parent=11387"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/putridparrot.com\/blog\/wp-json\/wp\/v2\/categories?post=11387"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/putridparrot.com\/blog\/wp-json\/wp\/v2\/tags?post=11387"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}