单机部署Kubernetes:从入门到实践的完整指南
2025.09.17 10:41浏览量:0简介:本文详细介绍了单机部署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.gpg
echo "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/null
sudo apt-get update && sudo apt-get install -y containerd.io
# 配置containerd
sudo mkdir -p /etc/containerd
containerd config default | sudo tee /etc/containerd/config.toml
# 修改配置以支持Kubernetes(禁用cgroup v2检查)
sudo sed -i 's/SystemdCgroup = false/SystemdCgroup = true/' /etc/containerd/config.toml
sudo 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、kubectl
sudo apt-get update && sudo apt-get install -y \
kubelet=1.26.0-00 kubeadm=1.26.0-00 kubectl=1.26.0-00
sudo apt-mark hold kubelet kubeadm kubectl
3. 初始化单节点集群
# 使用kubeadm初始化(忽略Swap警告)
sudo kubeadm init --pod-network-cidr=10.244.0.0/16 --ignore-preflight-errors=Swap
# 配置kubectl
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
# 部署网络插件(以Calico为例)
kubectl create -f https://raw.githubusercontent.com/projectcalico/calico/v3.25.0/manifests/tigera-operator.yaml
kubectl 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
# 检查核心组件Pod
kubectl get pods -n kube-system
# 确保coredns、calico-node等Pod处于Running状态
四、常见问题与解决方案
1. 初始化失败(如imagePullBackOff
)
- 原因:未配置镜像仓库镜像或网络无法访问
k8s.gcr.io
。 - 解决:
# 修改kubeadm配置文件(/etc/kubeadm/config.yaml)
apiVersion: kubeadm.k8s.io/v1beta3
imageRepository: registry.aliyuncs.com/google_containers
# 重新初始化
sudo kubeadm reset -f
sudo 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: v1
kind: PersistentVolume
metadata:
name: local-pv
spec:
capacity:
storage: 10Gi
accessModes:
- ReadWriteOnce
hostPath:
path: /mnt/data
监控集成:通过Prometheus Operator部署轻量级监控:
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
helm 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开发、服务网格集成等高级主题,深化对云原生生态的理解。
发表评论
登录后可评论,请前往 登录 或 注册