logo

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为例:
    1. # Ubuntu示例
    2. sudo apt update
    3. sudo apt install -y docker.io
    4. sudo systemctl enable --now docker
  • Kubernetes工具链kubeadm(集群管理)、kubelet(节点代理)、kubectl(命令行工具)。可通过Kubernetes官方仓库安装:
    1. curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-archive-keyring.gpg
    2. 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
    3. sudo apt update
    4. sudo apt install -y kubelet kubeadm kubectl
    5. sudo systemctl enable kubelet

1.3 网络与防火墙配置

  • 关闭Swap:Kubernetes要求禁用Swap以避免内存管理冲突。
    1. sudo swapoff -a
    2. # 永久禁用(编辑/etc/fstab,注释swap行)
  • 防火墙规则:开放必要的端口(如6443-Kubernetes API、10250-Kubelet、30000-32767-NodePort)。
    1. sudo ufw allow 6443/tcp
    2. sudo ufw allow 10250/tcp
    3. sudo ufw enable

二、单机集群初始化:kubeadm的精准配置

2.1 初始化控制平面

使用kubeadm init启动单节点集群,需指定--control-plane-endpoint为本地回环地址(127.0.0.1)并跳过网络插件安装(单机场景可后续手动配置):

  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文件复制到用户目录并设置环境变量:

  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

验证集群状态:

  1. kubectl get nodes
  2. # 输出应显示"Ready"状态

三、网络与存储配置:单机环境优化

3.1 安装CNI网络插件

单机部署推荐使用轻量级CNI插件(如Flannel或Calico):

  1. # Flannel示例
  2. kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
  • 验证网络
    1. kubectl get pods -n kube-system
    2. # 检查flannel-daemonset是否运行

3.2 本地存储方案

单机场景下,可配置hostPath或本地PV(PersistentVolume)供应用使用:

  1. # 示例:创建hostPath类型的PV
  2. apiVersion: v1
  3. kind: PersistentVolume
  4. metadata:
  5. name: local-pv
  6. spec:
  7. capacity:
  8. storage: 10Gi
  9. accessModes:
  10. - ReadWriteOnce
  11. hostPath:
  12. path: /data/local-pv

应用可通过PVC(PersistentVolumeClaim)动态绑定。

四、应用部署与测试:验证集群功能

4.1 部署示例应用

以Nginx为例,验证集群的Pod调度与服务暴露能力:

  1. kubectl create deployment nginx --image=nginx:latest
  2. kubectl expose deployment nginx --port=80 --type=NodePort

获取访问地址:

  1. kubectl get svc nginx
  2. # 输出中的NODE_PORT即为外部访问端口

4.2 监控与日志

  • 内置监控:通过kubectl top nodes查看资源使用。
  • 日志收集:使用kubectl logs <pod-name>查看容器日志。

五、故障排查与优化建议

5.1 常见问题处理

  • Pod卡在Pending状态:检查资源不足或网络插件未就绪。
    1. kubectl describe pod <pod-name>
  • API服务不可用:验证kube-apiserver日志(journalctl -u kubelet)。

5.2 性能优化

  • 资源限制:通过LimitRangeResourceQuota控制资源使用。
  • 镜像缓存:配置本地镜像仓库(如Harbor)加速部署。

六、适用场景与扩展建议

6.1 典型应用场景

  • 开发测试:快速验证CI/CD流程。
  • 边缘计算:在资源受限设备上运行轻量级服务。
  • 教学演示:低成本展示Kubernetes核心功能。

6.2 扩展方向

  • 多节点集群:通过kubeadm join添加工作节点。
  • 高可用改造:配置etcd集群和控制平面冗余。

结语

Kubernetes单机部署通过简化集群架构,为开发者提供了低门槛的实践平台。从环境准备到应用部署,本文系统梳理了关键步骤与优化策略,帮助读者在本地环境中高效运行Kubernetes。未来,随着容器技术的演进,单机部署将进一步融合轻量化运行时(如CRI-O)和自动化工具(如K3s),为边缘计算和IoT场景提供更灵活的解决方案。

相关文章推荐

发表评论