Kubernetes 1.8 单机部署全攻略:从环境准备到集群管理

摘要

Kubernetes 1.8作为早期稳定版本,其单机部署模式适合开发测试或小型应用场景。本文将从环境准备、核心组件安装、配置优化及常见问题解决四个维度,系统阐述如何在单台服务器上快速搭建Kubernetes集群,并附上完整配置示例与操作建议。

一、Kubernetes 1.8单机部署的适用场景与优势

1.1 适用场景

  • 开发测试环境:开发者本地验证容器化应用部署逻辑。
  • 边缘计算节点:资源受限场景下的轻量级容器编排。
  • 教学演示:快速展示Kubernetes核心功能。

1.2 版本选择理由

Kubernetes 1.8引入了CRD(Custom Resource Definitions)的稳定版本,支持更灵活的资源扩展,同时保持与后续版本的API兼容性。其组件(如kubelet、kube-apiserver)的二进制文件体积较小,适合单机部署。

二、环境准备与依赖安装

2.1 系统要求

  • 操作系统:推荐CentOS 7/Ubuntu 18.04 LTS(内核≥3.10)。
  • 硬件配置:至少2核CPU、4GB内存、20GB磁盘空间。
  • 网络要求:开放端口6443(API Server)、10250(Kubelet)、2379-2380(etcd)。

2.2 依赖工具安装

  1. # 安装Docker(以Ubuntu为例)
  2. sudo apt-get update && sudo apt-get install -y docker.io
  3. sudo systemctl enable docker
  4. # 安装Kubernetes工具链
  5. curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
  6. echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list
  7. sudo apt-get update && sudo apt-get install -y kubelet=1.8.0-00 kubeadm=1.8.0-00 kubectl=1.8.0-00

三、Kubernetes 1.8单机部署核心步骤

3.1 初始化集群

使用kubeadm init时需指定--pod-network-cidr--apiserver-advertise-address

  1. sudo kubeadm init --pod-network-cidr=10.244.0.0/16 --apiserver-advertise-address=192.168.1.100
  • 关键参数说明
    • --pod-network-cidr:Flannel等CNI插件所需的Pod网络范围。
    • --apiserver-advertise-address:单机场景下通常为服务器内网IP。

3.2 配置kubectl

  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.3 部署网络插件(以Flannel为例)

  1. kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/v0.9.1/Documentation/kube-flannel.yml
  • 注意事项:Flannel的net-conf.json需与--pod-network-cidr一致。

四、配置优化与高可用增强

4.1 资源限制调整

修改/etc/kubernetes/manifests/kube-apiserver.yaml,增加以下参数:

  1. spec:
  2. containers:
  3. - command:
  4. - kube-apiserver
  5. - --default-not-ready-toleration-seconds=30
  6. - --default-unreachable-toleration-seconds=30
  7. - --feature-gates=DynamicKubeletConfig=true

4.2 持久化存储配置

单机场景下可使用hostPath卷:

  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: /data/pv

五、故障排查与常见问题

5.1 节点状态异常

现象kubectl get nodes显示NotReady
解决方案

  1. 检查kubelet日志:
    1. journalctl -u kubelet -f
  2. 确认CNI插件是否正常运行:
    1. kubectl get pods -n kube-system | grep flannel

5.2 API Server无法访问

可能原因

  • 防火墙未放行6443端口。
  • kube-apiserver.yaml--advertise-address配置错误。
    修复命令
    1. sudo iptables -A INPUT -p tcp --dport 6443 -j ACCEPT

六、扩展建议与最佳实践

6.1 备份与恢复

使用etcdctl snapshot save备份etcd数据:

  1. ETCDCTL_API=3 etcdctl --endpoints=127.0.0.1:2379 snapshot save /backup/etcd-snapshot.db

6.2 版本升级路径

从1.8升级至1.9时,需先升级kubeadm再执行:

  1. sudo kubeadm upgrade apply v1.9.0

七、总结与资源推荐

Kubernetes 1.8单机部署通过kubeadm简化了初始化流程,但需注意:

  1. 定期检查组件证书有效期(默认1年)。
  2. 监控资源使用情况,避免单机过载。

推荐学习资源

  • Kubernetes 1.8官方文档
  • kubeadm故障排查指南

通过本文的步骤,开发者可在30分钟内完成Kubernetes 1.8的单机部署,为后续的容器化应用开发奠定基础。