logo

Kubernetes 1.8 单机部署全攻略:从零搭建到实践验证

作者:十万个为什么2025.09.17 11:04浏览量:0

简介:本文详细阐述Kubernetes 1.8版本在单机环境下的部署流程,涵盖环境准备、组件安装、配置优化及验证测试,为开发者提供一站式指南。

Kubernetes 1.8 单机部署全攻略:从零搭建到实践验证

摘要

Kubernetes作为容器编排领域的标杆,其单机部署模式适合开发测试、小型项目验证等场景。本文以Kubernetes 1.8版本为核心,系统梳理单机部署的全流程,包括环境预检、组件安装、配置调优及功能验证,同时针对常见问题提供解决方案,帮助开发者高效完成部署并快速上手。

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

1.1 典型应用场景

  • 开发测试环境:本地模拟集群行为,验证应用兼容性。
  • 小型项目验证:资源受限下快速搭建轻量级K8s环境。
  • 教学演示:通过单机环境直观展示K8s核心功能。

1.2 单机部署的核心优势

  • 资源占用低:仅需单台服务器,降低硬件成本。
  • 部署周期短:跳过多节点协调步骤,实现分钟级启动。
  • 维护简单:无需处理网络分区、节点故障等复杂问题。

二、环境准备与依赖安装

2.1 操作系统与硬件要求

  • 操作系统:推荐CentOS 7.x/Ubuntu 16.04+,内核版本≥4.4。
  • 硬件配置:CPU≥2核,内存≥4GB,磁盘≥20GB(建议SSD)。
  • 网络要求:关闭防火墙或开放6443(API Server)、10250(Kubelet)等关键端口。

2.2 依赖组件安装

2.2.1 Docker安装与配置

  1. # CentOS示例
  2. sudo yum install -y docker
  3. sudo systemctl enable docker && sudo systemctl start docker
  4. # 配置镜像加速(可选)
  5. sudo mkdir -p /etc/docker
  6. sudo tee /etc/docker/daemon.json <<-'EOF'
  7. {
  8. "registry-mirrors": ["https://<your-mirror>.mirror.aliyuncs.com"]
  9. }
  10. EOF
  11. sudo systemctl restart docker

2.2.2 Kubeadm/Kubelet/Kubectl安装

  1. # 添加K8s官方仓库
  2. cat <<EOF > /etc/yum.repos.d/kubernetes.repo
  3. [kubernetes]
  4. name=Kubernetes
  5. baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-\$basearch
  6. enabled=1
  7. gpgcheck=1
  8. repo_gpgcheck=1
  9. gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
  10. EOF
  11. # 安装指定版本(1.8.x)
  12. sudo yum install -y kubelet-1.8.15 kubeadm-1.8.15 kubectl-1.8.15 --disableexcludes=kubernetes
  13. sudo systemctl enable kubelet && sudo systemctl start kubelet

三、Kubernetes 1.8单机部署流程

3.1 初始化Master节点

  1. # 使用kubeadm初始化(注意:--pod-network-cidr需与后续CNI插件匹配)
  2. sudo kubeadm init --kubernetes-version=v1.8.15 --pod-network-cidr=10.244.0.0/16
  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

3.2 部署CNI网络插件(以Flannel为例)

  1. # 下载Flannel YAML文件(需匹配初始化时指定的CIDR)
  2. kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/v0.10.0/Documentation/kube-flannel.yml
  3. # 验证Pod状态
  4. kubectl get pods -n kube-system | grep flannel

3.3 允许Master节点运行Pod(可选)

  1. # 默认Master节点不调度Pod,如需启用:
  2. kubectl taint nodes --all node-role.kubernetes.io/master-

四、关键配置优化与验证

4.1 核心组件状态检查

  1. # 检查节点状态
  2. kubectl get nodes
  3. # 预期输出:NAME STATUS ROLES AGE VERSION
  4. # master Ready master 5m v1.8.15
  5. # 检查系统Pod状态
  6. kubectl get pods -n kube-system
  7. # 核心Pod(apiserver、controller-manager、scheduler、etcd、kube-proxy、flannel)应均为Running

4.2 部署测试应用验证集群功能

  1. # 创建Nginx Deployment
  2. kubectl create deployment nginx --image=nginx:1.15
  3. kubectl expose deployment nginx --port=80 --type=NodePort
  4. # 获取访问端口
  5. kubectl get svc nginx
  6. # 输出示例:NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
  7. # nginx NodePort 10.101.244.123 <none> 80:31234/TCP 1m
  8. # 通过浏览器或curl访问:http://<master-ip>:31234

五、常见问题与解决方案

5.1 初始化失败处理

  • 错误示例[preflight] Some fatal errors occurred: [ERROR Swap]: running with swap on is not supported
  • 解决方案
    1. # 临时关闭Swap
    2. sudo swapoff -a
    3. # 永久关闭(编辑/etc/fstab,注释swap行)

5.2 网络插件部署失败

  • 现象:Flannel Pod卡在ContainerCreating状态。
  • 排查步骤
    1. 检查CNI配置目录:ls /etc/cni/net.d/
    2. 查看Flannel日志kubectl logs -n kube-system <flannel-pod-name>
    3. 确认宿主机路由表:ip route

5.3 资源不足导致Pod无法启动

  • 优化建议
    • 调整Kubelet资源限制:编辑/etc/systemd/system/kubelet.service.d/10-kubeadm.conf,增加--eviction-hard=memory.available<500Mi参数。
    • 使用--feature-gates=RotateKubeletServerCertificate=true启用证书自动轮换。

六、升级与维护建议

6.1 版本升级路径

  • 升级前准备
    1. # 备份etcd数据(如使用外部etcd)
    2. ETCDCTL_API=3 etcdctl snapshot save snapshot.db --endpoints=<etcd-endpoints> --cacert=/etc/kubernetes/pki/etcd/ca.crt --cert=/etc/kubernetes/pki/etcd/server.crt --key=/etc/kubernetes/pki/etcd/server.key
  • 升级步骤
    1. 升级kubeadm:yum install -y kubeadm-1.9.x
    2. 执行升级命令:kubeadm upgrade plankubeadm upgrade apply v1.9.x
    3. 升级kubelet/kubectl:yum install -y kubelet-1.9.x kubectl-1.9.x
    4. 重启kubelet:systemctl restart kubelet

6.2 日常维护命令

  1. # 查看集群事件
  2. kubectl get events --sort-by='.metadata.creationTimestamp'
  3. # 清理未使用的资源
  4. kubectl delete pods --field-selector status.phase=Succeeded
  5. docker system prune -af

结语

Kubernetes 1.8单机部署为开发者提供了轻量级的集群体验,通过本文的详细指导,读者可快速完成从环境搭建到功能验证的全流程。实际生产环境中,建议结合高可用方案(如Stacked etcd拓扑)进行部署,同时关注社区对CVE漏洞的修复情况(如1.8.x版本的CVE-2017-1002101)。随着K8s版本的迭代,单机部署模式仍将是开发测试场景的重要选择。

相关文章推荐

发表评论