温馨提示×

centos中k8s的安装步骤有哪些

小樊
33
2025-12-25 15:06:37
栏目: 智能运维

在 CentOS 上安装 Kubernetes 的标准步骤

一 环境准备

  • 系统要求:建议使用 CentOS 7/8,内核版本尽量不低于 4.x;所有节点保持 时间同步(如 chrony/ntp)。
  • 基础配置:
    • 关闭防火墙:systemctl stop firewalld && systemctl disable firewalld
    • 关闭 SELinux:setenforce 0 并修改 /etc/selinux/configSELINUX=permissive/disabled
    • 禁用 Swap:swapoff -a 并注释 /etc/fstab 中的 swap 行
    • 设置主机名:hostnamectl set-hostname
    • 可选:配置 /etc/hosts 解析与 静态 IP
  • 内核与网络参数:
    • 加载 bridge 模块并开启桥接流量入 iptables:
      • 写入 /etc/sysctl.d/k8s.conf
        • net.bridge.bridge-nf-call-iptables = 1
        • net.bridge.bridge-nf-call-ip6tables = 1
        • net.ipv4.ip_forward = 1
      • 执行:sysctl --system
  • 说明:生产环境不建议直接关闭防火墙,应改为按需放通端口(如 6443、10250、2379-2380、10251、10252、8472/udp 等,具体取决于网络插件与控制平面组件)。

二 安装容器运行时

  • 安装依赖:yum install -y yum-utils device-mapper-persistent-data lvm2
  • 添加 Docker 仓库(可选国内镜像):
    • yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
  • 安装 Docker:yum install -y docker-ce docker-ce-cli containerd.io
  • 配置 Docker(使用 systemd cgroup 驱动并可选镜像加速):
    • 编辑 /etc/docker/daemon.json
      • {
        • “exec-opts”: [“native.cgroupdriver=systemd”],
        • “log-driver”: “json-file”,
        • “log-opts”: { “max-size”: “100m” },
        • “storage-driver”: “overlay2”,
        • “registry-mirrors”: [“https://.mirror.aliyuncs.com”]
        • }
  • 启动与开机自启:systemctl daemon-reload && systemctl enable --now docker
  • 验证:docker info | grep -i cgroup 应显示 systemd

三 安装 kubeadm kubelet kubectl

  • 添加 Kubernetes 仓库(可选国内镜像):
    • cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo
      • [kubernetes]
      • name=Kubernetes
      • baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-$basearch/
      • enabled=1
      • gpgcheck=1
      • repo_gpgcheck=1
      • gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
      • EOF
  • 安装组件:yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes
  • 启动 kubelet:systemctl enable --now kubelet
  • 说明:如遇到 Swap 限制导致 preflight 失败,可在 /etc/sysconfig/kubelet 增加 KUBELET_EXTRA_ARGS=“–fail-swap-on=false” 后重启 kubelet(仅测试环境建议)。

四 初始化控制平面 Master

  • 拉取镜像(可选,提前拉取以提速):kubeadm config images pull --image-repository=registry.aliyuncs.com/google_containers
  • 初始化命令(按需替换参数):
    • *kubeadm init *
      • *–apiserver-advertise-address=<MASTER_IP> *
      • *–image-repository=registry.aliyuncs.com/google_containers *
      • *–kubernetes-version= *
      • *–service-cidr=10.96.0.0/12 *
      • –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
  • 保存输出中的 kubeadm join … 命令,用于 Node 加入集群。

五 安装 CNI 网络插件与加入 Node 并验证

  • 安装 CNI 网络插件(二选一,Pod CIDR 需与初始化参数一致):
    • Calico:kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
    • Flannel:kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/v0.11.0/Documentation/kube-flannel.yml
  • 加入 Worker 节点:在各 Node 上执行上一步保存的 kubeadm join 命令。
  • 验证集群:
    • kubectl get nodes(状态应为 Ready
    • kubectl get pods -A(系统 Pod 应为 Running)
  • 常见问题处理:
    • 节点 NotReady:检查 CNI 是否安装Pod CIDR 是否匹配kubelet 是否 Running防火墙/SELinux 策略
    • 镜像拉取失败:更换 image-repository 为国内镜像或提前拉取
    • 重置环境:kubeadm reset 后清理 /etc/cni/net.d、/var/lib/etcd、~/.kube 再重试。

0