温馨提示×

centos部署k8s有哪些方法

小樊
37
2025-12-13 20:09:18
栏目: 智能运维

在 CentOS 上部署 Kubernetes 的主流方式

  • kubeadm 手动部署:官方推荐路径,灵活可控,适合学习、测试与生产环境的标准化落地。
  • 一键脚本自动化:社区/自研脚本封装 kubeadm 与系统初始化,适合快速交付与内网统一规范(注意审查脚本来源与内容)。
  • 离线/内网环境部署:提前导入镜像或使用私有仓库,解决无外网或受限网络环境的安装问题。
  • 云厂商托管或一键平台:如公有云的 ACK/ACK Edge、TKE、EKS 等托管集群,或开源平台的一键安装器(适合降低运维复杂度)。

方式对比

方式 复杂度 适用场景 优点 注意点
kubeadm 手动部署 学习、测试、生产 官方路径、可控性强、生态完善 步骤较多,需自行处理镜像、网络、内核参数
一键脚本自动化 低-中 快速交付、内网标准化 部署快、可复用 需审核脚本安全性与版本兼容性
离线/内网部署 中-高 无外网/受限网络 不依赖公网、可审计 需提前准备镜像/私有仓库与离线包
云厂商托管/平台 生产、弹性业务 运维成本低、高可用 成本与平台绑定、细粒度控制受限

关键前置条件与通用步骤

  • 基础要求
    • 操作系统:CentOS 7/8 x86_64;硬件建议至少 2 核 CPU、2GB 内存、30GB 磁盘
    • 禁用 swap:swapoff -a 并注释 /etc/fstab 中 swap 行。
    • 关闭 SELinux:setenforce 0 且 /etc/selinux/config 设为 disabled(或 permissive)。
    • 配置内核参数与转发:开启 net.bridge.bridge-nf-call-iptables/ip6tables=1net.ipv4.ip_forward=1,加载 br_netfilter
    • 时间同步:安装并启用 chrony/ntpdate
    • 主机名与 /etc/hosts:规范命名并互通解析。
    • 防火墙策略:测试环境可临时关闭 firewalld;生产环境建议按需放行端口(如 6443、2379-2380、10250、10251、10252、10255 等)。
  • 容器运行时
    • Kubernetes v1.24+ 起内置 CRI 已移除 dockershim,常用为 containerd(推荐)或 CRI-O;早期版本或兼容性需求可使用 Docker(需 cri-dockerd 适配)。
  • 初始化与网络
    • 使用 kubeadm init 初始化控制面,常见参数:–pod-network-cidr(如 Flannel 常用 10.244.0.0/16,Calico 常用 192.168.0.0/16)、–apiserver-advertise-address
    • 安装网络插件(二选一或按网络方案选择):FlannelCalico
    • 节点加入:执行 kubeadm 生成的 kubeadm join 命令。
    • 验证:kubectl get nodesReady 即正常。

方法一 kubeadm 手动部署步骤要点

  • 安装组件
    • 配置 Kubernetes YUM 源(可选国内镜像源加速)。
    • 安装 kubeadm、kubelet、kubectl(建议固定版本)。
    • 配置 containerd(或 Docker):设置 SystemdCgroup=true,镜像仓库与镜像加速。
  • 初始化控制面
    • kubeadm init 指定 –pod-network-cidr–apiserver-advertise-address
    • 完成后执行:mkdir -p $HOME/.kube && sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config。
  • 安装网络插件
    • Flannel:kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
    • Calico:kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
  • 加入工作节点
    • 使用 kubeadm 输出的 join 命令在各 Node 执行。
  • 验证
    • kubectl get nodes、kubectl get pods -A 检查状态。

方法二 一键脚本自动化

  • 适用场景:内网多台机器快速交付、统一基线。
  • 常见做法:脚本统一完成 DNS/iptables、内核参数、时间同步、Docker/containerd、kubeadm/kubelet/kubectl 安装、镜像预拉取、kubeadm init/join、Flannel/Calico 部署 等。
  • 示例与要点
    • 非高可用脚本:覆盖主机名、内核参数、yum 源、Docker/registry、kubeadm 初始化与 Flannel 部署,适合快速验证。
    • 离线脚本:使用 containerd,通过离线包与镜像 tar 导入,设置 image-repositorysandbox_image,执行 kubeadm init/join。
  • 风险提示:务必审查脚本来源、版本匹配与变更记录,避免生产环境引入安全隐患。

方法三 离线或受限网络环境部署

  • 核心思路:提前准备 kubeadm、kubelet、kubectl、容器运行时与系统镜像,通过 私有仓库镜像 tar 包导入,再执行 kubeadm 初始化与加入。
  • 实施要点
    • 离线包准备:打包所需 RPM/镜像,搭建 内网 YUM/容器镜像仓库
    • containerd 配置:启用 SystemdCgroup,必要时替换 sandbox_image 为内网可拉取镜像。
    • kubeadm 初始化:使用 –image-repository 指向私有仓库;若镜像 tag 不一致,可先 kubeadm config images list 核对并拉取/重打 tag。
    • 网络插件:优先使用已镜像到内网的 Flannel/Calico 清单。
  • 适用:隔离网络、合规要求高或无公网的机房/园区。

0