{"id":12708,"date":"2025-12-20T11:49:39","date_gmt":"2025-12-20T06:19:39","guid":{"rendered":"https:\/\/www.youstable.com\/blog\/?p=12708"},"modified":"2025-12-24T16:17:47","modified_gmt":"2025-12-24T10:47:47","slug":"what-is-kubernetes-on-linux-server","status":"publish","type":"post","link":"https:\/\/www.youstable.com\/blog\/what-is-kubernetes-on-linux-server","title":{"rendered":"What is Kubernetes on Linux Server? Step-by-Step Learning Guide"},"content":{"rendered":"\n<p><strong>Kubernetes on a Linux server<\/strong> is the practice of running the Kubernetes container orchestration platform on Linux hosts to deploy, scale, and manage containerized applications.<\/p>\n\n\n\n<p>It uses a control plane and worker nodes, supports container runtimes like containerd, and automates scheduling, networking, storage, updates, and self-healing across one or many servers. Getting started with Kubernetes on a Linux server can feel complex, but with the right guidance it\u2019s straightforward and rewarding. <\/p>\n\n\n\n<p>This guide explains Kubernetes architecture, prerequisites, a clean kubeadm installation on Ubuntu\/Debian-based systems, production hardening, and real-world tips from hands-on hosting experience\u2014so you can run reliable clusters on bare metal or virtual machines with confidence.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"what-is-kubernetes-and-how-it-works-on-linux\"><strong>What is Kubernetes and How it Works on Linux<\/strong>?<\/h2>\n\n\n\n<div class=\"wp-block-media-text has-media-on-the-right is-stacked-on-mobile\"><div class=\"wp-block-media-text__content\">\n<p>Kubernetes (K8s) is an open-source system that automates deployment, scaling, and management of containerized applications. On Linux, Kubernetes runs as system services that coordinate workloads across a cluster of nodes. <\/p>\n<\/div><figure class=\"wp-block-media-text__media\"><img loading=\"lazy\" decoding=\"async\" width=\"1168\" height=\"784\" src=\"https:\/\/www.youstable.com\/blog\/wp-content\/uploads\/2025\/12\/What-Is-Kubernetes-and-How-It-Works-on-Linux-1.png\" alt=\"What Is Kubernetes and How It Works on Linux\" class=\"wp-image-13011 size-full\" srcset=\"https:\/\/www.youstable.com\/blog\/wp-content\/uploads\/2025\/12\/What-Is-Kubernetes-and-How-It-Works-on-Linux-1.png 1168w, https:\/\/www.youstable.com\/blog\/wp-content\/uploads\/2025\/12\/What-Is-Kubernetes-and-How-It-Works-on-Linux-1-150x101.png 150w\" sizes=\"auto, (max-width: 1168px) 100vw, 1168px\" \/><\/figure><\/div>\n\n\n\n<p>You interact with it via <code>kubectl<\/code> to submit desired state (YAML manifests); Kubernetes reconciles actual state to match your intent.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"kubernetes-architecture-simple-overview\"><strong>Kubernetes Architecture (Simple Overview)<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Control plane<\/strong> (usually on one or more Linux servers): <em>kube-apiserver<\/em> (front door), <em>etcd<\/em> (key-value store), <em>kube-scheduler<\/em> (pod placement), <em>kube-controller-manager<\/em> (reconciliation logic), optional <em>cloud-controller-manager<\/em>.<\/li>\n\n\n\n<li><strong>Worker nodes<\/strong>: Run <em>kubelet<\/em> (node agent), <em>kube-proxy<\/em> (service networking), and a container runtime (commonly <em>containerd<\/em>). They host your Pods, which are the smallest deployable units.<\/li>\n\n\n\n<li><strong>Cluster add\u2011ons<\/strong>: CNI networking (Calico, Cilium, Flannel), DNS\/CoreDNS, metrics-server, Ingress controller (NGINX, Traefik), storage drivers (CSI).<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"key-kubernetes-objects-youll-use\"><strong>Key Kubernetes Objects You\u2019ll Use<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Pod<\/strong>: One or more containers that share networking and storage.<\/li>\n\n\n\n<li><strong>Deployment<\/strong>: Manages stateless Pods with rolling updates and rollbacks.<\/li>\n\n\n\n<li><strong>Service<\/strong>: Stable virtual IP and DNS name to reach Pods (ClusterIP, NodePort, LoadBalancer).<\/li>\n\n\n\n<li><strong>Ingress<\/strong>: HTTP\/HTTPS routing to Services with TLS termination.<\/li>\n\n\n\n<li><strong>ConfigMap\/Secret<\/strong>: Inject configuration and sensitive data.<\/li>\n\n\n\n<li><strong>PersistentVolume (PV)\/Claim (PVC)<\/strong>: Durable storage via CSI drivers.<\/li>\n<\/ul>\n\n\n\n<p>Quick note: Docker is a toolchain for building and running containers. Kubernetes is the orchestrator. Today, Kubernetes prefers CRI-compatible runtimes like containerd; you can still build images with Docker and run them on Kubernetes via containerd.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"prerequisites-for-running-kubernetes-on-a-linux-server\"><strong>Prerequisites for Running Kubernetes on a Linux Server<\/strong><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"system-requirements-minimum-and-practical\"><strong>System Requirements (Minimum and Practical)<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Control plane node<\/strong>: 2 vCPU, 4\u20138 GB RAM (minimum); 40+ GB SSD; <a href=\"https:\/\/www.youstable.com\/blog\/configure-nginx-on-linux\/\">Ubuntu 22.04 LTS or Debian<\/a> 12; stable network; NTP\/time sync.<\/li>\n\n\n\n<li><strong>Worker node<\/strong>: 2 vCPU, 4+ GB RAM (more for production workloads); 40+ GB SSD.<\/li>\n\n\n\n<li><strong>Kernel features<\/strong>: <code>br_netfilter<\/code>, <code>overlay<\/code>, iptables (nft or legacy) properly configured.<\/li>\n\n\n\n<li><strong>Swap disabled<\/strong>: Kubernetes requires swap off (unless specially configured).<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"networking-and-required-ports\"><strong>Networking and Required Ports<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Control plane: <\/strong>6443\/TCP (API server) open to nodes; etcd peer ports open between control planes.<\/li>\n\n\n\n<li><strong>Workers:<\/strong> allow node-to-node Pod traffic per your CNI (often 4789\/UDP for VXLAN or BPF-based flows for Cilium).<\/li>\n\n\n\n<li><strong>Ingress and apps:<\/strong> expose 80\/443 or app ports via Ingress\/Service as needed.<\/li>\n\n\n\n<li>Ensure <code>sysctl<\/code> values route bridged traffic through iptables and enable IP forwarding.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"security-and-os-tuning\"><strong>Security and OS Tuning<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Create a non-root sudo user for ops; use <a href=\"https:\/\/www.youstable.com\/blog\/how-to-add-ssh-keys-to-github-account\/\">SSH keys<\/a>, disable password logins.<\/li>\n\n\n\n<li>Keep the OS updated; pin Kubernetes versions to avoid surprise upgrades.<\/li>\n\n\n\n<li>Use <code>systemd<\/code> cgroups in containerd for Kubernetes compatibility.<\/li>\n\n\n\n<li>Plan DNS, internal domains, and TLS early; enable time sync (chrony\/systemd-timesyncd).<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"step-by-step-install-kubernetes-on-a-linux-server-kubeadm\"><strong>Step-by-Step: Install Kubernetes on a Linux Server (kubeadm)<\/strong><\/h2>\n\n\n\n<p>The following concise steps target Ubuntu\/Debian hosts using containerd. Run on all nodes unless noted. Replace versions to match your target Kubernetes minor release.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"1-prepare-the-os\"><strong>1) Prepare the OS<\/strong><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo swapoff -a\nsudo sed -i.bak '\/ swap \/ s\/^\\(.*\\)$\/#\\1\/' \/etc\/fstab\n\ncat &lt;&lt;'EOF' | sudo tee \/etc\/modules-load.d\/k8s.conf\noverlay\nbr_netfilter\nEOF\nsudo modprobe overlay\nsudo modprobe br_netfilter\n\ncat &lt;&lt;'EOF' | sudo tee \/etc\/sysctl.d\/99-kubernetes-cri.conf\nnet.bridge.bridge-nf-call-iptables = 1\nnet.bridge.bridge-nf-call-ip6tables = 1\nnet.ipv4.ip_forward = 1\nEOF\nsudo sysctl --system<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"2-install-containerd-and-configure-systemd-cgroups\"><strong>2) Install containerd and configure systemd cgroups<\/strong><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo apt-get update\nsudo apt-get install -y ca-certificates curl gnupg apt-transport-https\nsudo apt-get install -y containerd\n\n# Generate default config and enable systemd cgroups\nsudo mkdir -p \/etc\/containerd\ncontainerd config default | sudo tee \/etc\/containerd\/config.toml &gt; \/dev\/null\nsudo sed -i 's\/SystemdCgroup = false\/SystemdCgroup = true\/' \/etc\/containerd\/config.toml\n\nsudo systemctl enable --now containerd<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"3-install-kubeadm-kubelet-and-kubectl\"><strong>3) Install kubeadm, kubelet, and kubectl<\/strong><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo mkdir -p \/etc\/apt\/keyrings\ncurl -fsSL https:\/\/pkgs.k8s.io\/core:\/stable:\/v1.30\/deb\/Release.key | \\\n  sudo gpg --dearmor -o \/etc\/apt\/keyrings\/kubernetes-apt-keyring.gpg\necho 'deb &#91;signed-by=\/etc\/apt\/keyrings\/kubernetes-apt-keyring.gpg] https:\/\/pkgs.k8s.io\/core:\/stable:\/v1.30\/deb\/ \/' | \\\n  sudo tee \/etc\/apt\/sources.list.d\/kubernetes.list\n\nsudo apt-get update\nsudo apt-get install -y kubelet kubeadm kubectl\nsudo apt-mark hold kubelet kubeadm kubectl<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"4-initialize-the-control-plane-run-only-on-the-first-control-node\"><strong>4) Initialize the control plane (run only on the first control node)<\/strong><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code># Replace CIDR with your CNI's default (e.g., Calico often 192.168.0.0\/16)\nsudo kubeadm init --pod-network-cidr=192.168.0.0\/16\n\n# Configure kubectl for your user\nmkdir -p $HOME\/.kube\nsudo cp -i \/etc\/kubernetes\/admin.conf $HOME\/.kube\/config\nsudo chown $(id -u):$(id -g) $HOME\/.kube\/config<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"5-install-a-cni-plugin-networking\"><strong>5) Install a CNI plugin (networking)<\/strong><\/h3>\n\n\n\n<p><strong>Choose one:<\/strong> Calico (policy-rich), Cilium (eBPF performance\/observability), or Flannel (simple). Example with Calico:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>kubectl apply -f https:\/\/raw.githubusercontent.com\/projectcalico\/calico\/v3.27.3\/manifests\/calico.yaml<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"6-join-worker-nodes\"><strong>6) Join worker nodes<\/strong><\/h3>\n\n\n\n<p>On each worker, use the join command printed by <code>kubeadm init<\/code>. If you lost it, create a new token:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>kubeadm token create --print-join-command<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"7-deploy-a-test-workload\"><strong>7) Deploy a test workload<\/strong><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>kubectl create deployment hello --image=nginx:1.25\nkubectl expose deployment hello --port=80 --type=NodePort\nkubectl get pods -o wide\nkubectl get svc hello<\/code><\/pre>\n\n\n\n<p>Access the NodePort from any node\u2019s IP and the listed port, or install an Ingress controller and create an Ingress for clean HTTP routing.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"production-considerations-for-linux-based-kubernetes\"><strong>Production Considerations for Linux-Based Kubernetes<\/strong><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"high-availability-and-upgrades\"><strong>High Availability and Upgrades<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Run 3 control plane nodes for quorum; keep etcd local and back it up regularly.<\/li>\n\n\n\n<li><strong>Stagger upgrades:<\/strong> upgrade control planes first, then workers. Use <code>kubeadm upgrade<\/code> and drain nodes gracefully.<\/li>\n\n\n\n<li>Spread nodes across failure domains (different hosts\/racks\/availability zones).<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"networking-ingress-and-load-balancing\"><strong>Networking, Ingress, and Load Balancing<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Select a CNI that aligns with your needs: <\/strong>Calico (NetworkPolicy), Cilium (eBPF, Hubble), Flannel (simplicity).<\/li>\n\n\n\n<li>Install an Ingress controller (NGINX or Traefik) for HTTP\/HTTPS and Let\u2019s Encrypt automation.<\/li>\n\n\n\n<li>On bare metal, emulate cloud LoadBalancer with MetalLB; otherwise use NodePort or external reverse proxies.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"storage-and-data-durability\"><strong>Storage and Data Durability<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Use CSI drivers for dynamic volumes (Rook-Ceph, OpenEBS, NFS, or your SAN\/NAS vendor driver).<\/li>\n\n\n\n<li>Separate ephemeral Pod storage from persistent data; monitor disk IO and inodes.<\/li>\n\n\n\n<li>Back up etcd and application data; test restores regularly.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"security-hardening\"><strong>Security Hardening<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Enable RBAC; use least-privilege ServiceAccounts and scoped Roles.<\/li>\n\n\n\n<li>Enforce admission controls: Pod Security admission (Baseline\/Restricted), image signing\/verification where possible.<\/li>\n\n\n\n<li>Encrypt Secrets at rest; consider KMS providers. Restrict etcd access and secure backups.<\/li>\n\n\n\n<li>Apply NetworkPolicies to default-deny and allow only required traffic.<\/li>\n\n\n\n<li>Scan images (Trivy, Clair) and pin to immutable tags; avoid running as root; drop unnecessary Linux capabilities.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"observability-and-reliability\"><strong>Observability and Reliability<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Metrics and alerts:<\/strong> Prometheus + Alertmanager; visualize with Grafana.<\/li>\n\n\n\n<li><strong>Logging: <\/strong>Fluent Bit\/Vector + Elasticsearch\/OpenSearch or cloud logging.<\/li>\n\n\n\n<li><strong>Autoscaling: <\/strong>enable metrics-server, use HPA\/VPA; cluster autoscaler if on a platform with elastic nodes.<\/li>\n\n\n\n<li><strong>Resilience:<\/strong> liveness\/readiness\/startup probes, PodDisruptionBudgets, affinity\/anti-affinity, and topology spread.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"common-pitfalls-and-troubleshooting-tips\"><strong>Common Pitfalls and Troubleshooting Tips<\/strong><\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Pods not scheduling<\/strong>: Check <code>kubectl get nodes<\/code> and <code>taints<\/code>. Ensure CNI installed; control plane taints block apps unless tolerated.<\/li>\n\n\n\n<li><strong>Network issues<\/strong>: Verify <code>br_netfilter<\/code>, sysctls, firewall rules, and CNI DaemonSets. Confirm Pod IPs and routing with <code>kubectl get pods -o wide<\/code>.<\/li>\n\n\n\n<li><strong>Image pull errors<\/strong>: Set imagePullSecrets for private registries; confirm DNS\/CoreDNS works.<\/li>\n\n\n\n<li><strong>Kubelet not ready<\/strong>: Mismatch in cgroups; ensure containerd SystemdCgroup=true and restart services.<\/li>\n\n\n\n<li><strong>Cluster certificates expired<\/strong>: Use <code>kubeadm certs check-expiration<\/code> and rotate before outage windows.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"when-to-use-managed-services-or-a-hosting-partner\"><strong>When to Use Managed Services or a Hosting Partner<\/strong><\/h2>\n\n\n\n<p>Self-managing Kubernetes on Linux offers control and efficiency, but it demands steady ops discipline: patching, backups, security, and on-call troubleshooting. If your team prefers to focus on applications, consider a managed Kubernetes option or a provider that delivers Kubernetes-ready Linux servers with pre-tuned networking, storage, and monitoring.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"faqs\"><strong>FAQs: <\/strong><\/h2>\n\n\n<div id=\"rank-math-faq\" class=\"rank-math-block\">\n<div class=\"rank-math-list \">\n<div id=\"faq-question-1765614674027\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \" class=\"rank-math-question \" id=\"can-i-run-kubernetes-on-a-single-linux-server\"><strong>Can I run Kubernetes on a single Linux server?<\/strong><\/h3>\n<div class=\"rank-math-answer \">\n\n<p>Yes. You can run a single-node cluster for development by initializing with <code>kubeadm init<\/code> and then removing the control-plane taint so it schedules workloads locally. For production, add separate worker nodes and implement high availability for the control plane and etcd.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-question-1765614700507\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \" class=\"rank-math-question \" id=\"is-docker-required-for-kubernetes-on-linux\"><strong>Is Docker required for Kubernetes on Linux?<\/strong><\/h3>\n<div class=\"rank-math-answer \">\n\n<p>No. Kubernetes now prefers CRI-compatible runtimes like <code>containerd<\/code> or <code>CRI-O<\/code>. You can still build images with Docker and push them to a registry; the cluster will run them through containerd.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-question-1765614715146\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \" class=\"rank-math-question \" id=\"what-are-the-minimum-requirements-for-a-small-cluster\"><strong>What are the minimum requirements for a small cluster?<\/strong><\/h3>\n<div class=\"rank-math-answer \">\n\n<p>A practical start is one control plane (2 vCPU, 4\u20138 GB RAM) and two workers (each 2 vCPU, 4+ GB RAM) with SSDs, swap disabled, and a CNI like Calico or Cilium. For resilience, move to three control planes and enterprise-grade storage.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-question-1765614728899\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \" class=\"rank-math-question \" id=\"how-do-i-expose-my-app-to-the-internet-on-bare-metal\"><strong>How do I expose my app to the internet on bare metal?<\/strong><\/h3>\n<div class=\"rank-math-answer \">\n\n<p>Install an Ingress controller (NGINX or Traefik), assign public DNS to node IPs or a load balancer, and use MetalLB for type LoadBalancer services. Terminate TLS via Ingress with Let\u2019s Encrypt and automate certificate renewals.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-question-1765614744389\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \" class=\"rank-math-question \" id=\"whats-the-best-way-to-learn-kubernetes-on-linux-safely\"><strong>What\u2019s the best way to learn Kubernetes on Linux safely?<\/strong><\/h3>\n<div class=\"rank-math-answer \">\n\n<p>Start with a lab: three small VMs, kubeadm install, Calico networking, and a sample app. Add metrics-server, set resource requests\/limits, and practice deployments, rollbacks, and NetworkPolicies. Once confident, design HA, backups, and monitoring before moving to production hardware or cloud.<\/p>\n\n<\/div>\n<\/div>\n<\/div>\n<\/div>","protected":false},"excerpt":{"rendered":"<p>Kubernetes on a Linux server is the practice of running the Kubernetes container orchestration platform on Linux hosts to deploy, [&hellip;]<\/p>\n","protected":false},"author":21,"featured_media":15590,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[350,1195],"tags":[],"class_list":["post-12708","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-knowledgebase","category-blogging"],"acf":[],"featured_image_src":"https:\/\/www.youstable.com\/blog\/wp-content\/uploads\/2025\/12\/What-Is-Kubernetes-on-Linux-Server-1.jpg","author_info":{"display_name":"Sanjeet Chauhan","author_link":"https:\/\/www.youstable.com\/blog\/author\/sanjeet"},"_links":{"self":[{"href":"https:\/\/www.youstable.com\/blog\/wp-json\/wp\/v2\/posts\/12708","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.youstable.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.youstable.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.youstable.com\/blog\/wp-json\/wp\/v2\/users\/21"}],"replies":[{"embeddable":true,"href":"https:\/\/www.youstable.com\/blog\/wp-json\/wp\/v2\/comments?post=12708"}],"version-history":[{"count":11,"href":"https:\/\/www.youstable.com\/blog\/wp-json\/wp\/v2\/posts\/12708\/revisions"}],"predecessor-version":[{"id":15591,"href":"https:\/\/www.youstable.com\/blog\/wp-json\/wp\/v2\/posts\/12708\/revisions\/15591"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.youstable.com\/blog\/wp-json\/wp\/v2\/media\/15590"}],"wp:attachment":[{"href":"https:\/\/www.youstable.com\/blog\/wp-json\/wp\/v2\/media?parent=12708"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.youstable.com\/blog\/wp-json\/wp\/v2\/categories?post=12708"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.youstable.com\/blog\/wp-json\/wp\/v2\/tags?post=12708"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}