logo

单机部署Kubernetes:轻量级环境的完整实践指南

作者:梅琳marlin2025.09.17 10:41浏览量:0

简介:本文详细阐述单机部署Kubernetes的完整流程,涵盖环境准备、组件配置、网络优化及故障排查等关键环节,为开发者提供可复用的轻量级K8s环境搭建方案。

一、单机部署Kubernetes的核心价值与适用场景

云计算与容器化技术深度融合的当下,单机部署Kubernetes(K8s)凭借其轻量化、资源可控和快速验证的特性,成为开发者测试环境、教学实验及边缘计算场景的首选方案。相较于生产环境的多节点集群,单机部署通过模拟K8s核心功能,可在单台物理机或虚拟机上实现完整的容器编排能力。

典型应用场景

  1. 开发测试环境:快速验证K8s资源定义(如Deployment、Service)的语法正确性
  2. 教育学习:通过最小化环境理解K8s组件交互机制
  3. CI/CD流水线:为持续集成提供轻量级K8s沙盒环境
  4. 边缘计算:在资源受限的嵌入式设备上运行基础K8s功能

二、环境准备与前置条件

1. 硬件配置要求

组件 最低配置 推荐配置
CPU 2核 4核(支持超线程)
内存 4GB 8GB+
磁盘 40GB(SSD优先) 100GB+
网络 千兆以太网 万兆或无线高速网络

关键注意点

  • 需启用CPU虚拟化支持(Intel VT-x/AMD-V)
  • 关闭SELinux或设置为Permissive模式(setenforce 0
  • 配置静态IP地址避免DHCP变更导致服务中断

2. 操作系统选择

推荐使用以下Linux发行版:

  • Ubuntu 22.04 LTS:官方支持完善,包管理便捷
  • CentOS Stream 9:企业级稳定性,兼容RHEL生态
  • Alpine Linux:极简系统,适合资源受限场景

系统初始化步骤

  1. # 更新系统包
  2. sudo apt update && sudo apt upgrade -y # Ubuntu
  3. sudo dnf update -y # CentOS
  4. # 安装依赖工具
  5. sudo apt install -y curl wget conntrack socat ebtables iptables # Ubuntu
  6. sudo dnf install -y curl wget conntrack socat ebtables iptables-nftables # CentOS

三、核心组件部署方案

1. 容器运行时选择

运行时 优势 部署命令
containerd CRI标准实现,性能优异 `curl -fsSL https://get.docker.com sh`(含containerd)
cri-o 专注于K8s的轻量级运行时 sudo dnf install cri-o -y

配置示例(containerd)

  1. # /etc/containerd/config.toml
  2. [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc]
  3. runtime_type = "io.containerd.runc.v2"
  4. [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options]
  5. SystemdCgroup = true

2. kubeadm部署流程

标准化安装步骤

  1. 安装K8s工具链
    ```bash

    添加K8s仓库

    curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
    echo “deb https://apt.kubernetes.io/ kubernetes-xenial main” | sudo tee /etc/apt/sources.list.d/kubernetes.list

安装kubeadm/kubelet/kubectl

sudo apt install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl

  1. 2. 初始化控制平面
  2. ```bash
  3. sudo kubeadm init --pod-network-cidr=10.244.0.0/16 \
  4. --service-cidr=10.96.0.0/12 \
  5. --kubernetes-version=v1.28.0
  1. 配置kubeconfig
    1. mkdir -p $HOME/.kube
    2. sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
    3. sudo chown $(id -u):$(id -g) $HOME/.kube/config

3. 网络插件部署

Calico部署示例

  1. kubectl create -f https://raw.githubusercontent.com/projectcalico/calico/v3.26.1/manifests/calico.yaml

验证网络连通性

  1. kubectl run -it --image busybox:1.28 --restart=Never dns-test -- nslookup kubernetes.default

四、优化与故障排查

1. 资源优化策略

  • 节点资源预留

    1. # /var/lib/kubelet/config.yaml
    2. apiVersion: kubelet.config.k8s.io/v1beta1
    3. kind: KubeletConfiguration
    4. reservedSystemCPUs: "0-1" # 保留前2个CPU核心
    5. systemReserved:
    6. cpu: "500m"
    7. memory: "512Mi"
  • 动态资源分配

    1. # 启用CPU/内存动态管理
    2. echo "KUBELET_EXTRA_ARGS=\"--cpu-manager-policy=static --reserved-cpus=0\"" | sudo tee /etc/default/kubelet
    3. sudo systemctl restart kubelet

2. 常见故障解决方案

问题1:Node状态NotReady

  1. # 检查coredns日志
  2. kubectl -n kube-system logs -l k8s-app=kube-dns
  3. # 验证网络插件状态
  4. kubectl get daemonset -n kube-system calico-node

问题2:Pod无法调度

  1. # 检查节点资源
  2. kubectl describe nodes | grep -A 10 Allocated
  3. # 手动标记节点可调度
  4. kubectl taint nodes <node-name> node-role.kubernetes.io/control-plane:NoSchedule-

五、进阶实践建议

  1. 多版本共存:使用kubeadm config images pull预下载指定版本镜像
  2. 持久化存储:通过hostPath或本地PV实现单机存储

    1. apiVersion: v1
    2. kind: PersistentVolume
    3. metadata:
    4. name: local-pv
    5. spec:
    6. capacity:
    7. storage: 10Gi
    8. accessModes:
    9. - ReadWriteOnce
    10. hostPath:
    11. path: /mnt/data
  3. 监控集成:部署Prometheus Operator轻量版

    1. kubectl apply -f https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/main/manifests/setup/prometheus-operator.yaml

通过上述方案,开发者可在单台服务器上构建功能完整的Kubernetes环境,既满足日常开发测试需求,又为深入理解K8s架构提供实践平台。实际部署时建议结合具体业务场景调整资源配置参数,并定期验证环境稳定性。

相关文章推荐

发表评论