Kubernetes 单机部署全攻略:从环境搭建到集群管理
2025.09.17 10:41浏览量:0简介:本文详细阐述Kubernetes单机部署的完整流程,涵盖环境准备、组件安装、配置优化及故障排查,为开发者提供可落地的实践指南。
Kubernetes 单机部署全攻略:从环境准备到集群管理
在开发测试、本地实验或资源受限的边缘计算场景中,Kubernetes单机部署成为一种高效且经济的解决方案。通过单节点集群,开发者可以在不依赖云服务的情况下快速验证应用架构、测试编排功能,甚至构建轻量级生产环境。本文将从环境准备、组件安装、配置优化到故障排查,系统梳理Kubernetes单机部署的全流程,并提供可落地的实践建议。
一、环境准备:基础条件与工具选择
1.1 硬件与系统要求
单机部署Kubernetes对硬件的要求相对灵活,但需满足最低配置:
- CPU:建议4核及以上(测试环境可放宽至2核,但性能受限)
- 内存:8GB以上(若同时运行应用负载,建议16GB)
- 磁盘:至少40GB可用空间(用于存储镜像、日志及数据)
- 操作系统:推荐Linux(如Ubuntu 20.04/22.04、CentOS 7/8),Windows需通过WSL2或虚拟机支持
1.2 依赖工具安装
- 容器运行时:Docker(默认)或containerd(更轻量)。以Docker为例:
# Ubuntu示例
sudo apt update
sudo apt install -y docker.io
sudo systemctl enable --now docker
- Kubernetes工具链:
kubeadm
(集群管理)、kubelet
(节点代理)、kubectl
(命令行工具)。可通过Kubernetes官方仓库安装:curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-archive-keyring.gpg
echo "deb [signed-by=/etc/apt/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list
sudo apt update
sudo apt install -y kubelet kubeadm kubectl
sudo systemctl enable kubelet
1.3 网络与防火墙配置
- 关闭Swap:Kubernetes要求禁用Swap以避免内存管理冲突。
sudo swapoff -a
# 永久禁用(编辑/etc/fstab,注释swap行)
- 防火墙规则:开放必要的端口(如6443-Kubernetes API、10250-Kubelet、30000-32767-NodePort)。
sudo ufw allow 6443/tcp
sudo ufw allow 10250/tcp
sudo ufw enable
二、单机集群初始化:kubeadm的精准配置
2.1 初始化控制平面
使用kubeadm init
启动单节点集群,需指定--control-plane-endpoint
为本地回环地址(127.0.0.1)并跳过网络插件安装(单机场景可后续手动配置):
sudo kubeadm init --pod-network-cidr=10.244.0.0/16 --control-plane-endpoint=127.0.0.1 --ignore-preflight-errors=Swap
- 关键参数说明:
--pod-network-cidr
:指定Pod网络范围(需与后续CNI插件兼容)。--ignore-preflight-errors=Swap
:强制忽略Swap检查(生产环境不推荐)。
2.2 配置kubectl
初始化完成后,将admin.conf
文件复制到用户目录并设置环境变量:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
验证集群状态:
kubectl get nodes
# 输出应显示"Ready"状态
三、网络与存储配置:单机环境优化
3.1 安装CNI网络插件
单机部署推荐使用轻量级CNI插件(如Flannel或Calico):
# Flannel示例
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
- 验证网络:
kubectl get pods -n kube-system
# 检查flannel-daemonset是否运行
3.2 本地存储方案
单机场景下,可配置hostPath
或本地PV(PersistentVolume)供应用使用:
# 示例:创建hostPath类型的PV
apiVersion: v1
kind: PersistentVolume
metadata:
name: local-pv
spec:
capacity:
storage: 10Gi
accessModes:
- ReadWriteOnce
hostPath:
path: /data/local-pv
应用可通过PVC(PersistentVolumeClaim)动态绑定。
四、应用部署与测试:验证集群功能
4.1 部署示例应用
以Nginx为例,验证集群的Pod调度与服务暴露能力:
kubectl create deployment nginx --image=nginx:latest
kubectl expose deployment nginx --port=80 --type=NodePort
获取访问地址:
kubectl get svc nginx
# 输出中的NODE_PORT即为外部访问端口
4.2 监控与日志
- 内置监控:通过
kubectl top nodes
查看资源使用。 - 日志收集:使用
kubectl logs <pod-name>
查看容器日志。
五、故障排查与优化建议
5.1 常见问题处理
- Pod卡在Pending状态:检查资源不足或网络插件未就绪。
kubectl describe pod <pod-name>
- API服务不可用:验证
kube-apiserver
日志(journalctl -u kubelet
)。
5.2 性能优化
- 资源限制:通过
LimitRange
和ResourceQuota
控制资源使用。 - 镜像缓存:配置本地镜像仓库(如Harbor)加速部署。
六、适用场景与扩展建议
6.1 典型应用场景
- 开发测试:快速验证CI/CD流程。
- 边缘计算:在资源受限设备上运行轻量级服务。
- 教学演示:低成本展示Kubernetes核心功能。
6.2 扩展方向
- 多节点集群:通过
kubeadm join
添加工作节点。 - 高可用改造:配置etcd集群和控制平面冗余。
结语
Kubernetes单机部署通过简化集群架构,为开发者提供了低门槛的实践平台。从环境准备到应用部署,本文系统梳理了关键步骤与优化策略,帮助读者在本地环境中高效运行Kubernetes。未来,随着容器技术的演进,单机部署将进一步融合轻量化运行时(如CRI-O)和自动化工具(如K3s),为边缘计算和IoT场景提供更灵活的解决方案。
发表评论
登录后可评论,请前往 登录 或 注册