Kubernetes 1.8 单机部署全攻略:从零到一的实践指南

引言

Kubernetes作为容器编排领域的标杆工具,其单机部署模式(Single-Node Kubernetes)适用于开发测试、边缘计算等轻量级场景。Kubernetes 1.8版本虽已非最新,但其架构设计稳定,且作为经典版本仍被大量企业用于生产环境验证或学习研究。本文将围绕Kubernetes 1.8单机部署展开,从环境准备、组件安装到配置优化,提供一套可复用的技术方案。

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

1.1 适用场景

  • 开发测试环境:开发者可在本地快速搭建Kubernetes集群,验证应用部署逻辑。
  • 边缘计算节点:资源受限的边缘设备(如工业网关、IoT设备)需运行轻量级Kubernetes。
  • 教学与实验:高校或培训机构可通过单机部署演示Kubernetes核心功能。

1.2 优势对比

  • 资源占用低:相比多节点集群,单机模式仅需单台服务器(建议4核8GB以上)。
  • 部署速度快:无需网络配置、证书交换等复杂步骤,10分钟内可完成初始化。
  • 成本可控:无需额外云服务器或负载均衡器,适合预算有限的项目。

二、环境准备与依赖安装

2.1 系统要求

  • 操作系统:推荐CentOS 7.x/Ubuntu 16.04+(需支持systemd)。
  • 硬件配置:CPU≥4核,内存≥8GB,磁盘≥50GB(SSD优先)。
  • 网络要求:关闭防火墙或开放6443(API Server)、10250(Kubelet)等端口。

2.2 依赖工具安装

  1. # 安装Docker(Kubernetes 1.8需Docker 1.12+)
  2. sudo yum install -y docker
  3. sudo systemctl enable docker && sudo systemctl start docker
  4. # 安装kubeadm、kubelet、kubectl(1.8版本)
  5. cat <<EOF > /etc/yum.repos.d/kubernetes.repo
  6. [kubernetes]
  7. name=Kubernetes
  8. baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-\$basearch
  9. enabled=1
  10. gpgcheck=1
  11. repo_gpgcheck=1
  12. gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
  13. EOF
  14. sudo yum install -y kubelet-1.8.0 kubeadm-1.8.0 kubectl-1.8.0
  15. sudo systemctl enable kubelet

三、Kubernetes 1.8单机部署步骤

3.1 初始化Master节点

  1. # 使用kubeadm初始化(忽略Swap警告)
  2. sudo kubeadm init --kubernetes-version=v1.8.0 --pod-network-cidr=10.244.0.0/16 --ignore-preflight-errors=Swap
  3. # 配置kubectl
  4. mkdir -p $HOME/.kube
  5. sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  6. sudo chown $(id -u):$(id -g) $HOME/.kube/config

关键参数说明

  • --pod-network-cidr:指定Pod网络范围(需与CNI插件兼容)。
  • --ignore-preflight-errors=Swap:允许系统使用Swap(生产环境不推荐)。

3.2 部署CNI网络插件

Kubernetes 1.8默认不支持CNI 0.3+版本,需选择兼容插件(如Flannel):

  1. # 下载Flannel YAML(需修改镜像地址为国内源)
  2. wget https://raw.githubusercontent.com/coreos/flannel/v0.9.1/Documentation/kube-flannel.yml
  3. sed -i 's|quay.io/coreos/flannel:v0.9.1-amd64|registry.cn-hangzhou.aliyuncs.com/google_containers/flannel:v0.9.1-amd64|g' kube-flannel.yml
  4. kubectl apply -f kube-flannel.yml

3.3 验证集群状态

  1. kubectl get nodes
  2. # 输出示例:
  3. # NAME STATUS ROLES AGE VERSION
  4. # localhost Ready master 2m v1.8.0
  5. kubectl get pods --all-namespaces
  6. # 检查coredns、kube-proxy等系统组件是否Running

四、配置优化与常见问题解决

4.1 资源限制调整

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

  1. spec:
  2. containers:
  3. - command:
  4. - kube-apiserver
  5. - --advertise-address=0.0.0.0
  6. - --default-not-ready-toleration-seconds=30
  7. - --default-unreachable-toleration-seconds=30

作用:避免Node未就绪时Pod被立即驱逐。

4.2 常见问题解决

  • 问题1kubelet启动失败,报错failed to run Kubelet: unable to load client CA file
    解决方案:检查/etc/kubernetes/pki/ca.crt是否存在,或重新生成证书:

    1. sudo kubeadm init phase certs ca
  • 问题2:Pod卡在ContainerCreating状态
    解决方案:检查CNI插件日志:

    1. journalctl -u kubelet -n 100 --no-pager
    2. kubectl describe pod <pod-name> | grep -i "failed"

五、进阶使用建议

5.1 持久化存储配置

单机环境下可使用hostPath或本地PV:

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

5.2 升级与回滚

  1. # 升级到1.8.x最新补丁版
  2. sudo yum upgrade kubelet-1.8.* kubeadm-1.8.* kubectl-1.8.*
  3. sudo systemctl restart kubelet
  4. # 回滚(需提前备份etcd数据)
  5. sudo kubeadm reset
  6. sudo rm -rf /etc/kubernetes/

六、总结与展望

Kubernetes 1.8单机部署通过简化集群架构,为开发者提供了低门槛的容器编排环境。尽管其版本较旧,但理解其部署逻辑对掌握Kubernetes核心原理至关重要。未来可结合K3s(轻量级Kubernetes)或MicroK8s等现代方案,进一步优化资源利用率。

操作建议

  1. 首次部署建议使用虚拟机(如VirtualBox)隔离环境。
  2. 生产环境需考虑高可用(如kubeadm的--control-plane-endpoint参数)。
  3. 定期备份/etc/kubernetes/目录及etcd数据。

通过本文的步骤,读者可在30分钟内完成Kubernetes 1.8的单机部署,并快速进入应用开发阶段。