温馨提示×

k8s如何快速在centos上部署

小樊
33
2025-12-05 22:02:18
栏目: 智能运维

在 CentOS 上用 kubeadm 快速部署 Kubernetes 单主集群

一 环境准备与系统初始化

  • 建议准备至少 2 核 CPU、2GB 内存、20GB 磁盘 的机器,节点间网络互通,最好配置 SSH 免密主机名解析
  • 关闭 Swap:
    • 临时:swapoff -a
    • 永久:sed -i ‘/swap/s/^/#/g’ /etc/fstab
  • 关闭防火墙与 SELinux(测试环境):
    • systemctl stop firewalld && systemctl disable firewalld
    • setenforce 0 && sed -i ‘s/SELINUX=enforcing/SELINUX=disabled/’ /etc/selinux/config
  • 内核与桥接参数:
    • cat >/etc/sysctl.d/k8s.conf <<EOF
      net.bridge.bridge-nf-call-ip6tables = 1
      net.bridge.bridge-nf-call-iptables = 1
      net.ipv4.ip_forward = 1
      EOF
    • sysctl --system
  • 可选优化(提升 kube-proxy 性能):加载 ip_vs 模块并持久化。
  • 时间同步:yum install -y ntpdate && ntpdate ntp.aliyun.com。

二 安装容器运行时与 Kubernetes 组件

  • 方案 A(推荐)使用 containerd(与 kubelet 的 systemd cgroup 驱动配合更稳定):
    • 配置模块与内核:
      • cat >/etc/modules-load.d/containerd.conf <<EOF
        overlay
        br_netfilter
        EOF
      • modprobe overlay && modprobe br_netfilter
    • 安装与启动:yum install -y containerd.io && systemctl enable --now containerd
  • 方案 B 使用 Docker(如已熟悉):
    • 安装:yum install -y yum-utils && yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
    • 启动:systemctl enable --now docker
  • 添加 Kubernetes YUM 源并安装组件:
    • cat >/etc/yum.repos.d/kubernetes.repo <<EOF
      [kubernetes]
      name=Kubernetes
      baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64
      enabled=1
      gpgcheck=1
      repo_gpgcheck=1
      gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
      EOF
    • yum install -y kubelet kubeadm kubectl && systemctl enable --now kubelet
  • 若使用 Docker,建议将 cgroup 驱动设为 systemd(/etc/docker/daemon.json):
    • { “exec-opts”: [“native.cgroupdriver=systemd”] } 并重启 Docker。

三 初始化控制平面与加入工作节点

  • 在 Master 节点初始化(将 <MASTER_IP> 替换为实际 IP):
    • kubeadm init --apiserver-advertise-address=<MASTER_IP> --pod-network-cidr=10.244.0.0/16
  • 配置 kubectl(普通用户):
    • mkdir -p $HOME/.kube
    • sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
    • sudo chown $(id -u):$(id -g) $HOME/.kube/config
  • 获取加入命令(在 Master 上):
    • kubeadm token create --print-join-command
  • 在 Worker 节点执行上一步输出的 kubeadm join 命令加入集群。

四 部署网络插件与验证

  • 部署 Flannel(Pod 网络 CIDR 需与初始化参数一致:10.244.0.0/16):
    • kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
  • 验证:
    • kubectl get nodes(状态应为 Ready)
    • kubectl get pods -A(核心组件与 flannel Pod 均为 Running)

五 常见问题与快速排查

  • kubelet 启动失败:检查是否禁用 Swap、内核参数是否生效、cgroup 驱动是否与容器运行时一致(Docker 建议 systemd)。
  • 节点 NotReady:确认网络插件已部署且 Pod CIDR 与 kubeadm init 参数一致(如 10.244.0.0/16)。
  • 镜像拉取慢或失败:可预先用 kubeadm config images list 查看所需镜像,配置国内镜像源或使用私有仓库。
  • 加入节点失败:确认 Token 未过期、Master 与 Node 网络互通、所需端口未被占用。

0