单机部署Kubernetes:从入门到实践的完整指南
2025.09.17 10:41浏览量:2简介:本文详细介绍了单机部署Kubernetes的完整流程,涵盖环境准备、组件安装、集群配置与验证等关键步骤,适合开发者与运维人员快速上手实践。
一、单机部署Kubernetes的适用场景与核心价值
单机部署Kubernetes(Single-Node Kubernetes)并非传统生产环境的高可用方案,但其独特的轻量化特性使其在开发测试、边缘计算、教学演示等场景中具有显著优势。对于开发者而言,单机环境可快速验证应用与Kubernetes的兼容性,避免依赖云服务商的免费额度或复杂配置;对于运维人员,它是学习Kubernetes核心机制(如Pod调度、Service发现)的理想沙箱;在边缘计算场景中,资源受限的设备(如工业网关、IoT设备)可通过单机Kubernetes实现容器化应用的统一管理。
与多节点集群相比,单机部署的核心价值在于资源占用低(仅需2核4G内存即可运行基础组件)、配置简单(无需处理网络分区、存储卷挂载等复杂问题)、隔离性强(完全独立的控制平面与数据平面)。但需注意,单机环境缺乏高可用性,节点故障会导致整个集群不可用,因此仅适用于非生产环境。
二、环境准备:硬件与软件要求
硬件配置建议
- CPU:至少2核(推荐4核以支持并发测试)
- 内存:4GB(基础组件运行),8GB以上(同时运行多个Pod)
- 磁盘:20GB以上可用空间(需存储镜像、日志等数据)
- 网络:支持桥接或NAT模式的虚拟网卡(若使用虚拟机)
软件依赖清单
- 操作系统:Ubuntu 20.04/22.04 LTS(推荐)或CentOS 7/8
- 容器运行时:containerd(v1.6+)或Docker(需配置CRI插件)
- 网络插件:Calico或Flannel(单机环境可简化配置)
- 工具链:kubectl(v1.26+)、cfssl(证书生成)、helm(可选)
三、部署流程:分步详解
1. 安装容器运行时(以containerd为例)
# 安装依赖sudo apt-get update && sudo apt-get install -y \apt-transport-https ca-certificates curl software-properties-common# 添加containerd仓库并安装curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpgecho "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/nullsudo apt-get update && sudo apt-get install -y containerd.io# 配置containerdsudo mkdir -p /etc/containerdcontainerd config default | sudo tee /etc/containerd/config.toml# 修改配置以支持Kubernetes(禁用cgroup v2检查)sudo sed -i 's/SystemdCgroup = false/SystemdCgroup = true/' /etc/containerd/config.tomlsudo systemctl restart containerd
2. 安装Kubernetes核心组件
# 添加Kubernetes仓库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、kubectlsudo apt-get update && sudo apt-get install -y \kubelet=1.26.0-00 kubeadm=1.26.0-00 kubectl=1.26.0-00sudo apt-mark hold kubelet kubeadm kubectl
3. 初始化单节点集群
# 使用kubeadm初始化(忽略Swap警告)sudo kubeadm init --pod-network-cidr=10.244.0.0/16 --ignore-preflight-errors=Swap# 配置kubectlmkdir -p $HOME/.kubesudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/configsudo chown $(id -u):$(id -g) $HOME/.kube/config# 部署网络插件(以Calico为例)kubectl create -f https://raw.githubusercontent.com/projectcalico/calico/v3.25.0/manifests/tigera-operator.yamlkubectl create -f https://raw.githubusercontent.com/projectcalico/calico/v3.25.0/manifests/custom-resources.yaml
4. 验证集群状态
# 检查节点状态kubectl get nodes# 预期输出:NAME STATUS ROLES AGE VERSION# node1 Ready control-plane 5m v1.26.0# 检查核心组件Podkubectl get pods -n kube-system# 确保coredns、calico-node等Pod处于Running状态
四、常见问题与解决方案
1. 初始化失败(如imagePullBackOff)
- 原因:未配置镜像仓库镜像或网络无法访问
k8s.gcr.io。 - 解决:
# 修改kubeadm配置文件(/etc/kubeadm/config.yaml)apiVersion: kubeadm.k8s.io/v1beta3imageRepository: registry.aliyuncs.com/google_containers# 重新初始化sudo kubeadm reset -fsudo kubeadm init --config /etc/kubeadm/config.yaml
2. 容器无法访问网络
- 原因:未正确配置CNI插件或防火墙规则。
- 解决:
# 检查Calico Pod日志kubectl logs -n kube-system calico-node-xxxx# 临时关闭防火墙(测试用)sudo ufw disable
3. 资源不足导致Pod调度失败
- 原因:单机环境资源有限,默认请求可能过高。
- 解决:
# 修改Deployment的resources配置resources:requests:cpu: "100m"memory: "128Mi"limits:cpu: "500m"memory: "512Mi"
五、进阶优化建议
持久化存储:使用
hostPath或本地PV为单机环境提供存储:apiVersion: v1kind: PersistentVolumemetadata:name: local-pvspec:capacity:storage: 10GiaccessModes:- ReadWriteOncehostPath:path: /mnt/data
监控集成:通过Prometheus Operator部署轻量级监控:
helm repo add prometheus-community https://prometheus-community.github.io/helm-chartshelm install prometheus prometheus-community/kube-prometheus-stack --set prometheus.prometheusSpec.retention=1d
多版本共存:使用
kubeadm config images pull --kubernetes-version=v1.27.0预拉取不同版本镜像,通过修改/etc/kubernetes/manifests/下的静态Pod定义实现版本切换。
六、总结与展望
单机部署Kubernetes为开发者提供了一个低门槛、高灵活性的实验平台。通过本文的步骤,读者可在1小时内完成从环境准备到集群验证的全流程。未来,随着Kubernetes对轻量级场景的优化(如K3s、MicroK8s),单机部署将进一步简化,成为物联网、CI/CD流水线等领域的标准工具。建议读者在此基础上探索Operator开发、服务网格集成等高级主题,深化对云原生生态的理解。

发表评论
登录后可评论,请前往 登录 或 注册