{"id":13231,"date":"2025-12-16T11:06:44","date_gmt":"2025-12-16T05:36:44","guid":{"rendered":"https:\/\/www.youstable.com\/blog\/?p=13231"},"modified":"2025-12-16T11:06:47","modified_gmt":"2025-12-16T05:36:47","slug":"use-kubernetes-on-linux","status":"publish","type":"post","link":"https:\/\/www.youstable.com\/blog\/use-kubernetes-on-linux","title":{"rendered":"How to Use Kubernetes on Linux Server 2026? &#8211; (Step by Step Installation Guide)"},"content":{"rendered":"\n<p><strong>To use Kubernetes on a Linux server<\/strong>, install a container runtime <strong>(containerd)<\/strong>, set up kubeadm, kubelet, and kubectl, initialize a control plane with kubeadm init, install a CNI plugin for networking, then join worker nodes and deploy workloads with kubectl. This guide walks you through a secure, production ready setup, end-to-end.<\/p>\n\n\n\n<p>If you\u2019re wondering how to use Kubernetes on a Linux server, this beginner friendly tutorial covers everything from prerequisites and installation to deploying apps, networking, storage, and <strong>day-2 operations<\/strong>..<\/p>\n\n\n\n<p>We\u2019ll use <strong>kubeadm on Ubuntu\/Debian<\/strong>, highlight best practices, and show commands that work on most Linux distributions.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"what-is-kubernetes-and-why-run-it-on-a-linux-server\"><strong>What is Kubernetes and Why Run it on a Linux Server?<\/strong><\/h2>\n\n\n\n<p>Kubernetes <strong>(K8s)<\/strong> is an open source system for orchestrating containers across multiple servers. It automates deployment, scaling, high availability, and failover.<\/p>\n\n\n\n<p>Running Kubernetes on Linux gives you full control over performance, cost, and security ideal for self hosted apps, edge deployments, labs, and production clusters in your own data center or VPS environment.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"search-intent-learn-install-and-operate-kubernetes-on-linux\"><strong>Search Intent: Learn, Install, and Operate Kubernetes on Linux<\/strong><\/h2>\n\n\n\n<p>Based on common queries (e.g., \u201cinstall Kubernetes Ubuntu,\u201d \u201ckubeadm tutorial,\u201d \u201cKubernetes cluster setup\u201d), readers want a practical, <a href=\"https:\/\/www.youstable.com\/blog\/fix-high-cpu-usage-on-vps-servers\/\">step-by-step guide<\/a> that also covers networking, storage, access, and troubleshooting. That\u2019s exactly what this guide provides, aligned with current Kubernetes best practices and real-world hosting experience.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"prerequisites-and-planning\"><strong>Prerequisites and Planning<\/strong><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"system-requirements\"><strong>System Requirements<\/strong><\/h3>\n\n\n\n<p>Use at least 2 Linux servers (1 control plane, 1 worker). For learning, a single node works, but multi-node is better.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>OS:<\/strong> Ubuntu 22.04+ or Debian 12+ (RHEL\/CentOS\/Rocky\/Alma supported with minor changes)<\/li>\n\n\n\n<li><strong>CPU\/RAM: <\/strong>Control plane (2 vCPU, 4\u20138 GB RAM); Worker (2 vCPU, 4 GB RAM) minimum<\/li>\n\n\n\n<li><strong>Storage:<\/strong> 40+ GB disk per node<\/li>\n\n\n\n<li><strong>Network:<\/strong> Stable connectivity between nodes; open required ports<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"architecture-overview\"><strong>Architecture Overview<\/strong><\/h3>\n\n\n\n<p>Kubernetes has a control plane (API server, scheduler, controller manager, etcd) and worker nodes running kubelet and a container runtime. kubeadm bootstraps the cluster; kubectl manages it. A CNI plugin provides Pod networking; optional Ingress routes HTTP\/HTTPS traffic.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"networking-and-dns\"><strong>Networking and DNS<\/strong><\/h3>\n\n\n\n<p>Pick a Pod CIDR compatible with your CNI (e.g., 192.168.0.0\/16 for Calico). Ensure hostname resolution works. If using a firewall or cloud security groups, open Kubernetes ports (6443, 2379-2380, 10250-10259, 30000-32767 on workers).<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"security-baseline\"><strong>Security Baseline<\/strong><\/h3>\n\n\n\n<p>Use unique <a href=\"https:\/\/www.youstable.com\/blog\/how-to-add-ssh-keys-to-github-account\/\">SSH keys<\/a>, disable password SSH, keep OS packages updated, and enable automatic security patches. Plan for a non-root user with sudo and configure time sync (chrony or systemd-timesyncd) across nodes.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"step-by-step-install-kubernetes-on-linux-kubeadm\"><strong>Step-by-Step: Install Kubernetes on Linux (kubeadm)<\/strong><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"step-1-prepare-the-os\"><strong>Step 1: Prepare the OS<\/strong><\/h3>\n\n\n\n<p>Run these on all nodes (control plane and workers). Commands shown for Ubuntu\/Debian.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo swapoff -a\nsudo sed -i.bak '\/ swap \/ s\/^\\(.*\\)$\/#\\1\/g' \/etc\/fstab\n\n# Load kernel modules\ncat &lt;&lt;EOF | sudo tee \/etc\/modules-load.d\/k8s.conf\noverlay\nbr_netfilter\nEOF\nsudo modprobe overlay\nsudo modprobe br_netfilter\n\n# Sysctl params required by Kubernetes networking\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=\"step-2-install-containerd-container-runtime\"><strong>Step<\/strong> <strong>2: Install containerd (container runtime)<\/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 lsb-release\n\n# Install containerd\nsudo apt-get install -y containerd\n\n# Generate default config and enable systemd cgroup driver\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=\"step-3-install-kubeadm-kubelet-kubectl\"><strong>Step<\/strong> <strong>3: Install kubeadm, kubelet, kubectl<\/strong><\/h3>\n\n\n\n<p>Use the official Kubernetes apt repository. Replace v1.30 with your target minor version if needed.<\/p>\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 | 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\/ \/\" | 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\n\nsudo systemctl enable --now kubelet<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"step-4-initialize-the-control-plane\"><strong>Step<\/strong> <strong>4: Initialize the control plane<\/strong><\/h3>\n\n\n\n<p>Run on the control plane node. We set a Pod network CIDR compatible with Calico.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo kubeadm init --pod-network-cidr=192.168.0.0\/16<\/code><\/pre>\n\n\n\n<p>After success, configure kubectl for your user:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>mkdir -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=\"step-5-install-a-cni-plugin-calico\"><strong>Step<\/strong> <strong>5<\/strong>: <strong>Install a CNI plugin (Calico)<\/strong><\/h3>\n\n\n\n<p>Calico provides networking and policy. Apply the manifest from the upstream repository.<\/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\n\n# Wait for nodes and core pods to become Ready\nkubectl get nodes -o wide\nkubectl get pods -A<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"step-6-join-worker-nodes\"><strong>Step<\/strong> <strong>6: Join worker nodes<\/strong><\/h3>\n\n\n\n<p>Run the join command shown by kubeadm init on each worker. 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\n# Run the output on the worker node(s)<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"step-7-verify-the-cluster\"><strong>Step<\/strong> <strong>7: Verify the cluster<\/strong><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>kubectl get nodes\nkubectl get pods -A\nkubectl cluster-info\nkubectl describe node &lt;node-name&gt;<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"deploy-your-first-application\"><strong>Deploy Your First Application<\/strong><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"create-a-namespace\"><strong>Create a namespace<\/strong><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>kubectl create namespace demo<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"deploy-nginx-with-a-service\"><strong>Deploy NGINX with a Service<\/strong><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>cat &lt;&lt;EOF | kubectl apply -n demo -f -\napiVersion: apps\/v1\nkind: Deployment\nmetadata:\n  name: web\nspec:\n  replicas: 2\n  selector:\n    matchLabels:\n      app: web\n  template:\n    metadata:\n      labels:\n        app: web\n    spec:\n      containers:\n      - name: nginx\n        image: nginx:1.25\n        ports:\n        - containerPort: 80\n---\napiVersion: v1\nkind: Service\nmetadata:\n  name: web-svc\nspec:\n  type: NodePort\n  selector:\n    app: web\n  ports:\n  - port: 80\n    targetPort: 80\n    nodePort: 30080\nEOF\n\nkubectl get svc -n demo -o wide<\/code><\/pre>\n\n\n\n<p>Access the app via any node\u2019s IP on port 30080 (e.g., http:\/\/NODE_IP:30080). For local testing without NodePort, use:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>kubectl -n demo port-forward svc\/web-svc 8080:80\n# Browse http:\/\/127.0.0.1:8080<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"day-2-basics-storage-ingress-security-and-observability\"><strong>Day 2 Basics: Storage, Ingress, Security, and Observability<\/strong><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"storage-and-persistence\"><strong>Storage and Persistence<\/strong><\/h3>\n\n\n\n<p>For real workloads, use a CSI driver for dynamic PersistentVolumes (e.g., Longhorn, OpenEBS, or your cloud provider\u2019s CSI). For quick tests, hostPath works but isn\u2019t suitable for production.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Example PVC (needs a default StorageClass in the cluster)\ncat &lt;&lt;EOF | kubectl apply -n demo -f -\napiVersion: v1\nkind: PersistentVolumeClaim\nmetadata:\n  name: data-pvc\nspec:\n  accessModes: &#91;\"ReadWriteOnce\"]\n  resources:\n    requests:\n      storage: 5Gi\nEOF<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"ingress-for-http-https\"><strong>Ingress for HTTP\/HTTPS<\/strong><\/h3>\n\n\n\n<p>Install an ingress controller (e.g., NGINX Ingress Controller) and create Ingress resources to route traffic to Services using hostnames and TLS certificates (<a href=\"https:\/\/www.youstable.com\/blog\/what-is-lets-encrypt-on-linux-server\/\">Let\u2019s Encrypt<\/a> via cert-manager).<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"rbac-and-service-accounts\"><strong>RBAC and Service Accounts<\/strong><\/h3>\n\n\n\n<p>Follow least privilege with Role\/ClusterRole and bindings. Create a ServiceAccount per app that needs API access, and scope permissions tightly.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>kubectl create sa reader -n demo\nkubectl create role pod-reader --verb=get,list,watch --resource=pods -n demo\nkubectl create rolebinding reader-binding --role=pod-reader --serviceaccount=demo:reader -n demo<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"observability-metrics-and-logs\"><strong>Observability: Metrics and Logs<\/strong><\/h3>\n\n\n\n<p>Install metrics-server for resource metrics; use kubectl top to view usage. For logging and tracing, consider Prometheus, Grafana, and OpenTelemetry. Even small clusters benefit from node and pod-level dashboards.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>kubectl apply -f https:\/\/github.com\/kubernetes-sigs\/metrics-server\/releases\/latest\/download\/components.yaml\nkubectl top nodes\nkubectl top pods -A<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"security-and-best-practices\"><strong>Security and Best Practices<\/strong><\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Use the systemd cgroup driver for kubelet and containerd (already configured above).<\/li>\n\n\n\n<li>Set resource requests\/limits for every container to avoid noisy-neighbor issues.<\/li>\n\n\n\n<li>Enforce Pod Security Standards and NetworkPolicies to segment traffic by namespace\/app.<\/li>\n\n\n\n<li>Rotate kubeadm tokens, TLS certs, and kubeconfig files; restrict access to admin.conf.<\/li>\n\n\n\n<li>Regularly apply OS and Kubernetes updates; cordon and drain nodes before maintenance.<\/li>\n\n\n\n<li>Back up etcd (control plane) regularly and test restores.<\/li>\n\n\n\n<li>Use separate namespaces, apply quotas, and label everything (team, env, app, version).<\/li>\n\n\n\n<li>Prefer Ingress + certificates for public endpoints; avoid exposing NodePort to the internet.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"troubleshooting-cheatsheet\"><strong>Troubleshooting Cheatsheet<\/strong><\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Node not Ready:<\/strong> check kubelet logs and containerd status<br><pre class=\"wp-block-code\"><code>systemctl status kubelet containerd<br>journalctl -u kubelet -f<\/code><\/pre><\/li>\n\n\n\n<li><strong>Pods Pending:<\/strong> inspect events, check CNI plugin<br><pre class=\"wp-block-code\"><code>kubectl get pods -A -o wide<br>kubectl describe pod &lt;name&gt; -n &lt;ns&gt;<br>kubectl get pods -n kube-system<\/code><\/pre><\/li>\n\n\n\n<li><strong>Networking issues:<\/strong> verify kernel modules and sysctl, confirm Pod CIDR matches CNI<br><pre class=\"wp-block-code\"><code>lsmod | grep br_netfilter<br>sysctl net.ipv4.ip_forward<br>kubectl get nodes -o jsonpath='{.items[*].spec.podCIDR}'<\/code><\/pre><\/li>\n\n\n\n<li><strong>Join failures:<\/strong> regenerate token and CA cert hash<br><pre class=\"wp-block-code\"><code>kubeadm token create --print-join-command<\/code><\/pre><\/li>\n\n\n\n<li><strong>API server unreachable:<\/strong> check port 6443, control-plane health, and etcd<br><pre class=\"wp-block-code\"><code>kubectl cluster-info<br>kubectl get componentstatuses<br>docker\/ctr\/crictl logs for apiserver<\/code><\/pre><\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"costs-and-hosting-considerations\"><strong>Costs and Hosting Considerations<\/strong><\/h2>\n\n\n\n<p>Kubernetes runs great on VPS or <a href=\"https:\/\/www.youstable.com\/blog\/secure-dedicated-server\/\">dedicated servers<\/a>. Plan CPU, RAM, and SSD IOPS for your workload mix, and keep room for overhead (control plane, CNI, observability). For public exposure, place an edge proxy or <a href=\"https:\/\/www.youstable.com\/blog\/install-load-balancer-on-linux\/\">load balancer<\/a> in front of the cluster and harden network policies.<\/p>\n\n\n\n<p>If you want Kubernetes-ready Linux servers with clean networking, IPv4\/IPv6, and 24\/7 support, YouStable offers high-performance VPS and bare-metal plans ideal for kubeadm clusters. Prefer a hands-off approach? Ask about our managed Kubernetes options\u2014installation, monitoring, backups, and security handled by experts.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"upgrades-and-maintenance\"><strong>Upgrades and Maintenance<\/strong><\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Control plane:<\/strong> cordon and drain worker workloads if needed, then run kubeadm upgrade plan\/apply.<\/li>\n\n\n\n<li><strong>Workers:<\/strong> drain, upgrade kubelet\/kubeadm, restart, and uncordon.<\/li>\n\n\n\n<li><strong>Version skew:<\/strong> keep kubelet within one minor version of the control plane.<\/li>\n\n\n\n<li>Backup etcd before upgrades, and test rollbacks in staging.<\/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-1765793413852\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \" class=\"rank-math-question \" id=\"is-docker-required-to-run-kubernetes-on-linux\"><strong>Is Docker required to run Kubernetes on Linux?<\/strong><\/h3>\n<div class=\"rank-math-answer \">\n\n<p>No. Kubernetes uses the Container Runtime Interface (CRI). containerd is the recommended runtime and works natively. You don\u2019t need the Docker Engine to run Kubernetes, though you can build images with Docker on your workstation.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-question-1765793423232\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \" class=\"rank-math-question \" id=\"whats-the-easiest-way-to-install-kubernetes-on-ubuntu\"><strong>What\u2019s the easiest way to install Kubernetes on Ubuntu?<\/strong><\/h3>\n<div class=\"rank-math-answer \">\n\n<p>kubeadm is the standard path: install containerd, add the official Kubernetes repository, install kubeadm\/kubelet\/kubectl, initialize the control plane, apply a CNI plugin, and join workers. For single-node testing, tools like kind or Minikube are even faster.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-question-1765793430049\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \" class=\"rank-math-question \" id=\"which-cni-plugin-should-i-choose-calico-cilium-or-flannel\"><strong>Which CNI plugin should I choose: Calico, Cilium, or Flannel?<\/strong><\/h3>\n<div class=\"rank-math-answer \">\n\n<p>For simplicity and NetworkPolicy support, Calico is a strong default. Cilium adds eBPF-powered features and deep observability. Flannel is lightweight but limited. Match the plugin to your needs and test performance and features before production.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-question-1765793437711\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \" class=\"rank-math-question \" id=\"how-do-i-expose-services-to-the-internet-securely\"><strong>How do I expose services to the internet securely?<\/strong><\/h3>\n<div class=\"rank-math-answer \">\n\n<p>Use an Ingress controller behind a cloud or hardware load balancer. Terminate TLS with cert-manager for automatic certificates. Apply NetworkPolicies and WAF rules as needed. Avoid exposing NodePort directly to the public internet.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-question-1765793446314\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \" class=\"rank-math-question \" id=\"should-i-run-kubernetes-myself-or-use-a-managed-service\"><strong>Should I run Kubernetes myself or use a managed service?<\/strong><\/h3>\n<div class=\"rank-math-answer \">\n\n<p>Self-managed clusters give control and can reduce costs, but require time and expertise. Managed services (or managed nodes on your servers) cover installation, upgrades, security, and monitoring. If you prefer support-backed, Kubernetes-ready Linux servers, YouStable can help with both DIY and managed options.<\/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><strong>We covered a complete workflow:<\/strong> prepare Linux, install containerd and kubeadm, bootstrap the control plane, join workers, deploy apps, add storage and ingress, and secure and observe the cluster. With this foundation, you can scale confidently and adapt Kubernetes to your on prem or cloud environment.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>To use Kubernetes on a Linux server, install a container runtime (containerd), set up kubeadm, kubelet, and kubectl, initialize a [&hellip;]<\/p>\n","protected":false},"author":21,"featured_media":13780,"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-13231","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\/What-Is-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\/13231","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=13231"}],"version-history":[{"count":5,"href":"https:\/\/www.youstable.com\/blog\/wp-json\/wp\/v2\/posts\/13231\/revisions"}],"predecessor-version":[{"id":13786,"href":"https:\/\/www.youstable.com\/blog\/wp-json\/wp\/v2\/posts\/13231\/revisions\/13786"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.youstable.com\/blog\/wp-json\/wp\/v2\/media\/13780"}],"wp:attachment":[{"href":"https:\/\/www.youstable.com\/blog\/wp-json\/wp\/v2\/media?parent=13231"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.youstable.com\/blog\/wp-json\/wp\/v2\/categories?post=13231"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.youstable.com\/blog\/wp-json\/wp\/v2\/tags?post=13231"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}