温馨提示×

centos如何配置k8s安装环境

小樊
41
2025-12-17 19:12:10
栏目: 智能运维

在 CentOS 上配置 k8s 安装环境

一 环境要求与规划

  • 操作系统与硬件:建议使用 CentOS 7.x/8.x2 核 CPU≥2GB 内存≥30GB 磁盘(生产推荐更高规格)。节点间网络互通,可访问外网以下载镜像。
  • 主机规划示例:
    • 角色:Master / Node1 / Node2
    • IP:172.16.3.181 / 172.16.3.182 / 172.16.3.183
    • 主机名:k8smaster / k8snode1 / k8snode2
  • 基础要求:禁用 Swap、关闭 firewalldSELinux、开启 时间同步、配置 主机名与 /etc/hosts、开启内核转发与桥接流量到 iptables。

二 所有节点通用配置

  • 关闭防火墙与 SELinux
    systemctl stop firewalld && systemctl disable firewalld
    setenforce 0
    sed -i 's/^SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
    
  • 禁用 Swap(临时与永久)
    swapoff -a
    sed -i '/swap/d' /etc/fstab
    
  • 设置主机名与 hosts
    hostnamectl set-hostname k8smaster   # 在对应节点执行
    cat >> /etc/hosts <<EOF
    172.16.3.181 k8smaster
    172.16.3.182 k8snode1
    172.16.3.183 k8snode2
    EOF
    
  • 内核参数与模块
    modprobe br_netfilter
    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 -p /etc/sysctl.d/k8s.conf
    
  • 时间同步
    yum install -y ntpdate -y
    ntpdate time.windows.com    # 或 chrony 同步
    
  • 说明:以上为 kubeadm 部署前的通用前置条件,能显著提升初始化成功率。

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

  • 安装 Docker(所有节点)
    yum install -y yum-utils device-mapper-persistent-data lvm2
    yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    yum install -y docker-ce docker-ce-cli containerd.io
    systemctl enable --now docker
    
    # 镜像加速(可选)
    mkdir -p /etc/docker
    tee /etc/docker/daemon.json <<'EOF'
    {
      "registry-mirrors": ["https://docker.m.daocloud.io"]
    }
    EOF
    systemctl daemon-reload && systemctl restart docker
    
  • 安装 kubeadm、kubelet、kubectl(所有节点)
    cat > /etc/yum.repos.d/kubernetes.repo <<EOF
    [kubernetes]
    name=Kubernetes
    baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-\$basearch/
    enabled=1
    gpgcheck=0
    EOF
    
    # 选择一个稳定版本,例如 v1.28.2
    yum install -y kubelet-1.28.2-0 kubeadm-1.28.2-0 kubectl-1.28.2-0
    systemctl enable --now kubelet
    
  • 提示:如使用 containerd 作为运行时,可改用 containerd 官方流程并配置 SystemdCgroup=true,本文以 Docker 为例。

四 初始化 Master 与加入 Node

  • 初始化控制平面(仅在 Master 执行,按需替换参数)
    kubeadm init \
      --apiserver-advertise-address=172.16.3.181 \
      --image-repository registry.aliyuncs.com/google_containers \
      --kubernetes-version v1.28.2 \
      --service-cidr=10.96.0.0/12 \
      --pod-network-cidr=10.244.0.0/16
    
  • 配置 kubectl
    mkdir -p $HOME/.kube
    cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
    chown $(id -u):$(id -g) $HOME/.kube/config
    
  • 加入 Worker 节点(在 Node 执行,使用 kubeadm init 输出的 join 命令)
    kubeadm join 172.16.3.181:6443 \
      --token <TOKEN> \
      --discovery-token-ca-cert-hash sha256:<HASH>
    
  • 若 token 过期,可在 Master 重新生成:
    kubeadm token create --print-join-command
    
  • 说明:上述命令中的 service-cidrpod-network-cidr 需与所选 CNI 插件规划保持一致。

五 安装 CNI 网络插件与验证

  • 安装 CNI(二选一,确保与 pod-network-cidr 一致)
    • 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
      
  • 验证
    kubectl get nodes        # 状态应为 Ready
    kubectl get pods -A       # 核心组件与 CNI Pod Running
    
  • 常见问题速查
    • 节点 NotReady:多因 CNI 未部署内核参数/防火墙 未正确配置。
    • 镜像拉取失败:使用 国内镜像仓库 或提前导入镜像;检查网络连通性。
    • kubelet 未就绪:确认 kubelet 开机自启cgroup 驱动一致(Docker 建议 systemd)。

0