{"id":14195,"date":"2025-12-27T12:15:02","date_gmt":"2025-12-27T06:45:02","guid":{"rendered":"https:\/\/www.youstable.com\/blog\/?p=14195"},"modified":"2025-12-27T12:15:05","modified_gmt":"2025-12-27T06:45:05","slug":"create-kubernetes-on-linux","status":"publish","type":"post","link":"https:\/\/www.youstable.com\/blog\/create-kubernetes-on-linux","title":{"rendered":"How to Create Kubernetes on Linux Server in 2026? &#8211; (Beginner Friendly Guide)"},"content":{"rendered":"\n<p><strong>To create Kubernetes on a Linux server<\/strong>, prepare the OS (disable swap, enable br_netfilter), install a CRI such as containerd, then install kubeadm, kubelet, and kubectl. Initialize the control plane with kubeadm init, apply a CNI plugin (Calico or Flannel), and join worker nodes using the kubeadm join command. <\/p>\n\n\n\n<p>Validate nodes and deploy your first app. In this guide, you\u2019ll learn how to set up Kubernetes on a Linux server step-by-step using kubeadm. <\/p>\n\n\n\n<p>We\u2019ll cover <strong>Ubuntu\/Debian and RHEL\/Rocky<\/strong> Linux paths, install containerd, configure networking, and build a production-ready foundation. If you\u2019re new to <strong>Kubernetes on Linux server<\/strong>, this tutorial keeps it clear, accurate, and beginner-friendly.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"what-youll-build-and-who-this-is-for\"><strong>What You\u2019ll Build and Who This is For<\/strong>?<\/h2>\n\n\n\n<p>You\u2019ll build a Kubernetes cluster with one control plane node and one or more worker nodes using kubeadm and containerd. <\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"800\" height=\"533\" src=\"https:\/\/www.youstable.com\/blog\/wp-content\/uploads\/2025\/12\/image-107.png\" alt=\"Create Kubernetes on Linux\" class=\"wp-image-14540\" srcset=\"https:\/\/www.youstable.com\/blog\/wp-content\/uploads\/2025\/12\/image-107.png 800w, https:\/\/www.youstable.com\/blog\/wp-content\/uploads\/2025\/12\/image-107-150x100.png 150w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/figure>\n\n\n\n<p>This is ideal for developers, sysadmins, and teams who want hands-on control without relying on a <a href=\"https:\/\/www.youstable.com\/blog\/benefits-of-fully-managed-dedicated-server\/\"><strong>fully managed<\/strong><\/a> service. We\u2019ll keep commands reproducible and defaults sensible so you can grow the cluster later.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"prerequisites-checklist\"><strong>Prerequisites Checklist<\/strong><\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Linux: <\/strong>Ubuntu 22.04+\/20.04+, Debian 11+, Rocky Linux 9\/8, RHEL 9\/8 (root or sudo)<\/li>\n\n\n\n<li><strong>Hardware:<\/strong> Minimum 2 vCPU and 4 GB RAM for control plane; 2 GB RAM per worker (more is better)<\/li>\n\n\n\n<li><strong>Networking:<\/strong> Static or reserved IPs, outbound internet, required ports open (6443\/tcp API server; 10250\/tcp kubelet; 10251\u201310259\/tcp control plane; etcd 2379\u20132380\/tcp)<\/li>\n\n\n\n<li><strong>Time sync:<\/strong> NTP via systemd-timesyncd or chrony (cluster components are sensitive to clock drift)<\/li>\n\n\n\n<li><strong>Swap disabled:<\/strong> Kubernetes requires swap off<\/li>\n\n\n\n<li><strong>Primary keyword focus:<\/strong> Kubernetes on Linux server (plus \u201cinstall Kubernetes on Ubuntu,\u201d \u201ckubeadm tutorial,\u201d \u201cKubernetes cluster setup\u201d)<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"high-level-steps\"><strong>High-Level Steps<\/strong><\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Prepare each node (swap off, kernel modules, sysctl)<\/li>\n\n\n\n<li>Install containerd and configure the systemd cgroup driver<\/li>\n\n\n\n<li>Install kubeadm, kubelet, kubectl<\/li>\n\n\n\n<li>Initialize the control plane (kubeadm init)<\/li>\n\n\n\n<li>Install a CNI plugin (Calico or Flannel)<\/li>\n\n\n\n<li>Join worker nodes (kubeadm join)<\/li>\n\n\n\n<li>Validate and deploy a sample application<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"step-by-step-create-kubernetes-on-linux-server\"><strong>Step-by-Step: Create Kubernetes on Linux Server<\/strong><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"step-1-system-preparation-all-nodes\"><strong>Step 1 \u2014 System Preparation (All Nodes)<\/strong><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code># 1) Disable swap (required)\nsudo swapoff -a\nsudo sed -i '\/ swap \/ s\/^\\(.*\\)$\/#\\1\/g' \/etc\/fstab\n\n# 2) Load kernel modules and set sysctl\ncat &lt;&lt;EOF | sudo tee \/etc\/modules-load.d\/k8s.conf\noverlay\nbr_netfilter\nEOF\n\nsudo modprobe overlay\nsudo modprobe br_netfilter\n\ncat &lt;&lt;EOF | sudo tee \/etc\/sysctl.d\/k8s.conf\nnet.bridge.bridge-nf-call-iptables = 1\nnet.bridge.bridge-nf-call-ip6tables = 1\nnet.ipv4.ip_forward = 1\nEOF\n\nsudo sysctl --system\n\n# 3) Ensure time sync is active (choose one)\n# Ubuntu\/Debian (systemd-timesyncd)\ntimedatectl show | grep NTPSynchronized || sudo timedatectl set-ntp true\n\n# RHEL\/Rocky (chrony)\nsudo systemctl enable --now chronyd || true<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"step-2-install-and-configure-containerd-all-nodes\"><strong>Step 2 \u2014 Install and Configure containerd (All Nodes)<\/strong><\/h3>\n\n\n\n<p>containerd is a reliable, Kubernetes-supported container runtime. We\u2019ll enable the systemd cgroup driver for consistency with kubelet.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Ubuntu\/Debian\nsudo apt-get update\nsudo apt-get install -y containerd\n\n# RHEL\/Rocky\nsudo dnf install -y containerd || sudo yum install -y containerd\n\n# Configure containerd with 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\n# Start and enable\nsudo systemctl enable --now containerd<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"step-3-install-kubeadm-kubelet-and-kubectl-all-nodes\"><strong>Step 3 \u2014 Install kubeadm, kubelet, and kubectl (All Nodes)<\/strong><\/h3>\n\n\n\n<p>We\u2019ll use the official Kubernetes repositories from pkgs.k8s.io to ensure consistent versions. You can pin a specific minor version if needed.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Ubuntu\/Debian\nsudo apt-get update\nsudo apt-get install -y apt-transport-https ca-certificates curl gpg\nsudo mkdir -p \/etc\/apt\/keyrings\ncurl -fsSL https:\/\/pkgs.k8s.io\/core:\/stable:\/v1.30\/deb\/Release.key | \\\n  gpg --dearmor | sudo tee \/etc\/apt\/keyrings\/kubernetes-apt-keyring.gpg &gt; \/dev\/null\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\nsudo apt-get update\nsudo apt-get install -y kubelet kubeadm kubectl\nsudo apt-mark hold kubelet kubeadm kubectl\n\n# RHEL\/Rocky\ncat &lt;&lt;EOF | sudo tee \/etc\/yum.repos.d\/kubernetes.repo\n&#91;kubernetes]\nname=Kubernetes\nbaseurl=https:\/\/pkgs.k8s.io\/core:\/stable:\/v1.30\/rpm\/\nenabled=1\ngpgcheck=1\ngpgkey=https:\/\/pkgs.k8s.io\/core:\/stable:\/v1.30\/rpm\/repodata\/repomd.xml.key\nEOF\n\nsudo dnf install -y kubelet kubeadm kubectl --disableexcludes=kubernetes || \\\nsudo yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes\n\nsudo systemctl enable kubelet<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"step-4-initialize-the-control-plane-control-node-only\"><strong>Step 4 \u2014 Initialize the Control Plane (Control Node Only)<\/strong><\/h3>\n\n\n\n<p>Pick a pod CIDR aligned with your CNI choice. Calico works well with 192.168.0.0\/16; Flannel commonly uses 10.244.0.0\/16.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Example with Calico-compatible pod CIDR\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\n\n# Save the join command (shown at the end of kubeadm init)\n# Example:\n# kubeadm join &lt;CONTROL_PLANE_IP:6443&gt; --token &lt;token&gt; \\\n#   --discovery-token-ca-cert-hash sha256:&lt;hash&gt;<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"step-5-install-a-cni-plugin-networking\"><strong>Step 5 \u2014 Install a CNI Plugin (Networking)<\/strong><\/h3>\n\n\n\n<p>Kubernetes needs a Container Network Interface (CNI) to route pod traffic. Choose one and apply its manifest.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Calico (features: NetworkPolicy, IPAM, eBPF modes):<\/strong><\/li>\n<\/ul>\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<ul class=\"wp-block-list\">\n<li><strong>Flannel (simple overlay networking):<\/strong><\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>kubectl apply -f https:\/\/raw.githubusercontent.com\/flannel-io\/flannel\/master\/Documentation\/kube-flannel.yml<\/code><\/pre>\n\n\n\n<p><strong>Wait until all core pods in kube-system are Running before proceeding:<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>kubectl get pods -n kube-system -w<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"step-6-join-worker-nodes\"><strong>Step 6 \u2014 Join Worker Nodes<\/strong><\/h3>\n\n\n\n<p>Run the join command from Step 4 on each worker node. If you lost it, create a new token:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo kubeadm token create --print-join-command\n# Run the printed command on each worker<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"step-7-validate-the-cluster\"><strong>Step 7 \u2014 Validate the Cluster<\/strong><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>kubectl get nodes -o wide\nkubectl get pods -A\nkubectl cluster-info<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"deploy-a-sample-app-and-expose-it\"><strong>Deploy a Sample App and Expose It<\/strong><\/h2>\n\n\n\n<p>Let\u2019s deploy NGINX and expose it via a NodePort service to verify scheduling, networking, and service routing.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Create a deployment\nkubectl create deployment web --image=nginx:stable --replicas=2\n\n# Expose as a NodePort (pick a fixed port if you like)\nkubectl expose deployment web --port=80 --target-port=80 --type=NodePort\n\nkubectl get svc web -o wide\n# Access via: http:\/\/&lt;any_worker_node_ip&gt;:&lt;nodeport&gt;<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"troubleshooting-common-issues-and-quick-fixes\"><strong>Troubleshooting: Common Issues and Quick Fixes<\/strong><\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Swap not disabled: <\/strong>kubeadm will fail. Fix: <code>sudo swapoff -a<\/code> and comment swap in <code>\/etc\/fstab<\/code>.<\/li>\n\n\n\n<li><strong>cgroup driver mismatch:<\/strong> Ensure containerd uses systemd cgroups (we set <code>SystemdCgroup = true<\/code>), then <code>sudo systemctl restart containerd kubelet<\/code>.<\/li>\n\n\n\n<li><strong>Networking\/CNI not ready:<\/strong> Wait for CNI pods to be Running. Confirm pod CIDR matches your CNI manifest.<\/li>\n\n\n\n<li><strong>Firewall blocks: <\/strong>Open 6443\/tcp (API), 10250\/tcp (kubelet), and CNI ranges. For Flannel\/Calico, allow UDP 8472 (VXLAN) if applicable.<\/li>\n\n\n\n<li><strong>Time drift:<\/strong> Ensure NTP is synchronized on all nodes; restart kubelet if certificates\/time were corrected.<\/li>\n\n\n\n<li><strong>Reset a failed install:<\/strong> <code>sudo kubeadm reset -f<\/code>, remove <code>~\/.kube\/config<\/code> if needed, then retry.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"best-practices-for-production-ready-kubernetes-on-linux\"><strong>Best Practices for Production-Ready Kubernetes on Linux<\/strong><\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Harden the OS:<\/strong> Minimal packages, automatic security updates, and SSH key-only auth.<\/li>\n\n\n\n<li><strong>Enable audit logs and RBAC:<\/strong> Track API usage and enforce least privilege.<\/li>\n\n\n\n<li><strong>Resource requests\/limits:<\/strong> Prevent noisy-neighbor issues and enable cluster autoscaling later.<\/li>\n\n\n\n<li><strong>NetworkPolicies:<\/strong> Restrict pod-to-pod traffic; Calico makes this straightforward.<\/li>\n\n\n\n<li><strong>Use namespaces and quotas:<\/strong> Organize teams\/apps and cap usage.<\/li>\n\n\n\n<li><strong>Storage:<\/strong> Integrate a CSI driver (e.g., OpenEBS, Longhorn, or cloud provider\u2019s CSI) for dynamic PVCs.<\/li>\n\n\n\n<li><strong>Backups:<\/strong> Schedule etcd backups and store them off-node; test restores regularly.<\/li>\n\n\n\n<li><strong>HA control plane:<\/strong> Run 3 control plane nodes and an external etcd for mission-critical workloads.<\/li>\n\n\n\n<li><strong>Monitoring\/Logging:<\/strong> Prometheus\/Grafana for metrics, Loki or Elasticsearch for logs.<\/li>\n\n\n\n<li><strong>Upgrade strategy:<\/strong> Upgrade one minor version at a time; cordon\/drain nodes safely.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"install-kubernetes-on-ubuntu-vs-rhel-whats-different\"><strong>Install Kubernetes on Ubuntu vs. RHEL: What\u2019s Different?<\/strong><\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Repositories:<\/strong> Ubuntu uses APT with pkgs.k8s.io; RHEL\/Rocky uses DNF\/YUM with the equivalent repo.<\/li>\n\n\n\n<li><strong>Time sync:<\/strong> systemd-timesyncd (Ubuntu) vs chrony (RHEL\/Rocky).<\/li>\n\n\n\n<li><strong>Packages:<\/strong> containerd is available on both; older RHEL versions might need extras repos enabled.<\/li>\n\n\n\n<li><strong>SELinux:<\/strong> On RHEL\/Rocky, prefer to keep SELinux enforcing and use a CNI that supports it (Calico works well).<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"self-managed-vs-managed-kubernetes-which-should-you-choose\"><strong>Self-Managed vs. Managed Kubernetes: Which Should You Choose?<\/strong><\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Choose self-managed when you need full control, custom networking\/storage, or air-gapped clusters.<\/li>\n\n\n\n<li>Choose managed (EKS\/GKE\/AKS) for faster ops, reduced maintenance, and built-in integrations.<\/li>\n\n\n\n<li><strong>Hybrid approach:<\/strong> Use a trusted hosting provider to supply optimized Linux servers, private networking, and SLAs while you keep kubeadm-level control.<\/li>\n<\/ul>\n\n\n\n<p>At YouStable, we provision high-frequency VPS and bare-metal servers tuned for Kubernetes on Linux server\u2014with fast NVMe storage, low-latency networking, and optional private VLANs. If you want a ready-to-run base image with containerd and kernel modules pre-configured, our support team can help you bootstrap faster.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"real-world-tips-from-12plus-years-in-hosting\"><strong>Real World Tips from 12+ Years in Hosting<\/strong><\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Pin versions for predictable rollouts. Test upgrades in staging and snapshot etcd before production changes.<\/li>\n\n\n\n<li>Use labels and taints to control scheduling (e.g., dedicate nodes for ingresses or stateful workloads).<\/li>\n\n\n\n<li>Keep images small and signed. Use a private registry with admission controls and image scanning.<\/li>\n\n\n\n<li>Segment networks. Put nodes on private subnets and restrict API access with firewalls\/security groups.<\/li>\n\n\n\n<li>Automate node bootstrapping with cloud-init or Ansible so adding capacity is one command away.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"faqs\"><strong>FAQ&#8217;s<\/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-1765959180787\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \" class=\"rank-math-question \" id=\"what-is-the-easiest-way-to-install-kubernetes-on-ubuntu\"><strong>What is the easiest way to install Kubernetes on Ubuntu?<\/strong><\/h3>\n<div class=\"rank-math-answer \">\n\n<p>The simplest path is kubeadm with containerd. Disable swap, configure kernel modules, install kubelet\/kubeadm\/kubectl from pkgs.k8s.io, run kubeadm init on the control plane, apply a CNI, and join workers. It\u2019s fast, standard, and matches upstream docs.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-question-1765959200132\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \" class=\"rank-math-question \" id=\"which-cni-plugin-should-i-use-calico-or-flannel\"><strong>Which CNI plugin should I use: Calico or Flannel?<\/strong><\/h3>\n<div class=\"rank-math-answer \">\n\n<p>Use Calico if you want NetworkPolicies, advanced routing, or eBPF-based performance. Choose Flannel for simple, low-overhead networking. Both are stable and widely used; Calico is more feature-rich for production controls.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-question-1765959208777\" 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 by tainting removal on the control plane and scheduling workloads there. For learning or small dev tasks it\u2019s fine, but production needs multiple nodes for availability and scaling.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-question-1765959216375\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \" class=\"rank-math-question \" id=\"how-do-i-upgrade-my-kubeadm-cluster-safely\"><strong>How do I upgrade my kubeadm cluster safely?<\/strong><\/h3>\n<div class=\"rank-math-answer \">\n\n<p>Upgrade one minor version at a time. Update the repo to the target version, upgrade kubeadm, then the control plane, and finally workers. Cordon\/drain nodes before upgrading, and confirm CNI\/CSI compatibility. Always back up etcd first.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-question-1765959225091\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \" class=\"rank-math-question \" id=\"whats-the-difference-between-docker-and-containerd-in-kubernetes\"><strong>What\u2019s the difference between Docker and containerd in Kubernetes?<\/strong><\/h3>\n<div class=\"rank-math-answer \">\n\n<p>Kubernetes talks to a CRI runtime. containerd is CRI-compliant and lightweight; Docker is a higher-level tool that now uses containerd underneath. For Kubernetes, using containerd directly is simpler and officially recommended.<\/p>\n\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"conclusion\"><strong>Conclusion<\/strong><\/h2>\n\n\n\n<p>That\u2019s how to create Kubernetes on a Linux server using kubeadm and containerd. You prepared the OS, installed Kubernetes components, bootstrapped the control plane, added networking, joined workers, and deployed an app. Need optimized infrastructure for your cluster? YouStable\u2019s Kubernetes-ready servers make it easy to go from plan to production with confidence.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>To create Kubernetes on a Linux server, prepare the OS (disable swap, enable br_netfilter), install a CRI such as containerd, [&hellip;]<\/p>\n","protected":false},"author":21,"featured_media":16359,"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],"tags":[],"class_list":["post-14195","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-knowledgebase"],"acf":[],"featured_image_src":"https:\/\/www.youstable.com\/blog\/wp-content\/uploads\/2025\/12\/How-to-Create-Kubernetes-on-Linux-Server.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\/14195","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=14195"}],"version-history":[{"count":6,"href":"https:\/\/www.youstable.com\/blog\/wp-json\/wp\/v2\/posts\/14195\/revisions"}],"predecessor-version":[{"id":16360,"href":"https:\/\/www.youstable.com\/blog\/wp-json\/wp\/v2\/posts\/14195\/revisions\/16360"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.youstable.com\/blog\/wp-json\/wp\/v2\/media\/16359"}],"wp:attachment":[{"href":"https:\/\/www.youstable.com\/blog\/wp-json\/wp\/v2\/media?parent=14195"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.youstable.com\/blog\/wp-json\/wp\/v2\/categories?post=14195"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.youstable.com\/blog\/wp-json\/wp\/v2\/tags?post=14195"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}