私有化部署这事儿,最烦的不是技术难度,是配置项太多,漏一个就翻车。今天直接把我们内部用的配置清单贴出来,你照着抄就行。

硬件最低配置

别问能不能再低,不能。

测试环境(3 节点):

  • CPU:4 核

  • 内存:8GB

  • 系统盘:100GB SSD

  • 数据盘:200GB SSD

    生产环境(5 节点起):

    • CPU:16 核

    • 内存:64GB

    • 系统盘:200GB SSD

    • 数据盘:1TB NVMe

      Master 和 Worker 分开部署,别省这点机器。

      网络要求

      这块最容易踩坑:

      
      

      6443 # API Server 10250 # Kubelet 2379-2380 # etcd 30000-32767 # NodePort

      内网带宽至少 1Gbps,跨机房延迟控制在 10ms 以内。超过这个数,etcd 会出幺蛾子。

      系统预处理

      每台机器跑一遍:

      
      

      # 关 swap swapoff -a && sed -i '/swap/d' /etc/fstab # 关 selinux setenforce 0 && sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config # 关防火墙(或者你自己配规则) systemctl disable firewalld --now

      时间同步别忘了,证书校验会用到。

      一键安装

      准备工作做完,安装反而最简单:

      
      

      sealos run labring/kubernetes:v1.27.7 \ labring/helm:v3.12.0 \ labring/calico:v3.26.1 \ --masters 192.168.1.10,192.168.1.11,192.168.1.12 \ --nodes 192.168.1.20,192.168.1.21

      没错,就一条命令。底层 containerd、kubelet、etcd 全给你配好。

      存储方案选择

      根据场景选:

      场景

      推荐方案

      测试环境

      local-path

      生产(单机房)

      OpenEBS LocalPV

      生产(多机房)

      Ceph / Longhorn

      别上来就整分布式存储,大部分场景 LocalPV 够用了。

      部署后检查清单

      
      

      # 节点状态 kubectl get nodes # 系统组件 kubectl get pods -n kube-system # CoreDNS 解析测试 kubectl run test --image=busybox --rm -it -- nslookup kubernetes

      三个都过了,基本没问题。

      常见翻车点

      1. hostname 重复:每台机器 hostname 必须不一样

      2. 磁盘空间不足:镜像多了很快就满,监控加上

      3. 内核版本太老:CentOS 7 默认 3.10 内核,升到 5.x

      4. 证书过期:默认一年,提前配置自动续期


        这套配置我们跑了几十个客户的私有云,踩的坑都踩过了。有问题直接 GitHub issue 上找我,比看文档快。

        Logo

        开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

        更多推荐