摘要
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 依赖工具安装
# 安装Docker(以Ubuntu为例)sudo apt-get update && sudo apt-get install -y docker.iosudo systemctl enable docker# 安装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.listsudo 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:
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
mkdir -p $HOME/.kubesudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/configsudo chown $(id -u):$(id -g) $HOME/.kube/config
3.3 部署网络插件(以Flannel为例)
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,增加以下参数:
spec:containers:- command:- kube-apiserver- --default-not-ready-toleration-seconds=30- --default-unreachable-toleration-seconds=30- --feature-gates=DynamicKubeletConfig=true
4.2 持久化存储配置
单机场景下可使用hostPath卷:
apiVersion: v1kind: PersistentVolumemetadata:name: local-pvspec:capacity:storage: 10GiaccessModes:- ReadWriteOncehostPath:path: /data/pv
五、故障排查与常见问题
5.1 节点状态异常
现象:kubectl get nodes显示NotReady。
解决方案:
- 检查kubelet日志:
journalctl -u kubelet -f
- 确认CNI插件是否正常运行:
kubectl get pods -n kube-system | grep flannel
5.2 API Server无法访问
可能原因:
- 防火墙未放行6443端口。
kube-apiserver.yaml中--advertise-address配置错误。
修复命令:sudo iptables -A INPUT -p tcp --dport 6443 -j ACCEPT
六、扩展建议与最佳实践
6.1 备份与恢复
使用etcdctl snapshot save备份etcd数据:
ETCDCTL_API=3 etcdctl --endpoints=127.0.0.1:2379 snapshot save /backup/etcd-snapshot.db
6.2 版本升级路径
从1.8升级至1.9时,需先升级kubeadm再执行:
sudo kubeadm upgrade apply v1.9.0
七、总结与资源推荐
Kubernetes 1.8单机部署通过kubeadm简化了初始化流程,但需注意:
- 定期检查组件证书有效期(默认1年)。
- 监控资源使用情况,避免单机过载。
推荐学习资源:
- Kubernetes 1.8官方文档
- kubeadm故障排查指南
通过本文的步骤,开发者可在30分钟内完成Kubernetes 1.8的单机部署,为后续的容器化应用开发奠定基础。