温馨提示×

CentOS下Kubernetes安装教程

小樊
33
2025-12-13 20:06:18
栏目: 智能运维

CentOS 下 Kubernetes 安装教程(kubeadm 快速上手)

一 环境准备与前置条件

  • 节点规划:至少准备 1 台 Master1 台 Worker,推荐 2 核 CPU / 2GB 内存 / 20GB 磁盘 以上,主机名与 /etc/hosts 正确解析,系统时间同步(如 chrony/ntp)。
  • 系统配置:
    • 关闭 Swap:swapoff -a 并注释 /etc/fstab 中的 swap 行。
    • 内核参数:启用桥接流量转发
      • 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 生效。
    • SELinux:建议设为 permissivedisabled(如 setenforce 0 并修改 /etc/selinux/config)。
    • 防火墙:为简化部署可临时关闭 firewalld;生产环境按需放行端口(见下文)。
  • 容器运行时:安装 Docker CE(或 containerd,本文以 Docker 为例)。
  • 软件源:配置 Kubernetes YUM 源 与(可选)国内镜像源以加速拉取镜像。

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

  • 安装 Docker(示例为 CentOS 7/8 常用方式):
    • 安装依赖:yum install -y yum-utils device-mapper-persistent-data lvm2
    • 添加仓库:yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
    • 安装并启动:yum install -y docker-ce docker-ce-cli containerd.io && systemctl start docker && systemctl enable docker
  • 安装 kubeadm、kubelet、kubectl:
    • 添加 Kubernetes 源(示例为 kubernetes-el7-x86_64,适用于 CentOS 7;CentOS 8 可按需调整仓库):
      • cat <<EOF | tee /etc/yum.repos.d/kubernetes.repo
        [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 --disableexcludes=kubernetes
    • 启动 kubelet:systemctl enable --now kubelet(初始化完成前 kubelet 可能反复重启,属正常现象)

三 初始化 Master 节点

  • 初始化命令(按需替换参数):
    • kubeadm init \
      --apiserver-advertise-address=<MASTER_IP> \
      --image-repository=registry.aliyuncs.com/google_containers \
      --kubernetes-version=v1.22.15 \
      --service-cidr=10.96.0.0/12 \
      --pod-network-cidr=10.244.0.0/16
    • 说明:
      • 使用国内镜像仓库可显著加速镜像拉取。
      • --pod-network-cidr 需与所选 CNI 插件一致(见下一节)。
  • 配置 kubectl:
    • mkdir -p $HOME/.kube
    • cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
    • chown $(id -u):$(id -g) $HOME/.kube/config
  • 获取 Worker 加入命令:
    • kubeadm token create --print-join-command(保存输出的 kubeadm join ... 命令,用于节点加入)

四 部署 CNI 网络插件

  • 选择其一(与 --pod-network-cidr 保持一致):
    • Calico(推荐):kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
    • Flannel:kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
  • 安装完成后等待片刻,确认节点与系统 Pod 就绪:kubectl get nodeskubectl get pods -A

五 加入 Worker 节点与验证

  • 在每个 Worker 上执行上一步保存的 kubeadm join ... 命令,加入成功后回到 Master 节点:
    • 查看节点:kubectl get nodes(状态应为 Ready
    • 查看系统组件:kubectl get pods -A
  • 防火墙放行(若未关闭 firewalld,建议放行关键端口):
    • firewall-cmd --permanent --add-port=6443/tcp
    • firewall-cmd --permanent --add-port=2379-2380/tcp
    • firewall-cmd --permanent --add-port=10250/tcp
    • firewall-cmd --permanent --add-port=10251/tcp
    • firewall-cmd --permanent --add-port=10252/tcp
    • firewall-cmd --reload

六 常见问题与优化建议

  • 镜像拉取慢或失败:优先使用国内镜像仓库(如 registry.aliyuncs.com/google_containers),或提前 docker pull 所需镜像。
  • Swap 未关闭导致 kubeadm 预检失败:执行 swapoff -a 并注释 /etc/fstab 中的 swap 行。
  • SELinux 冲突:设置为 permissive/disabled 并重启。
  • 节点 NotReady:检查 CNI 是否已部署Pod 网段是否匹配kubelet 是否运行
  • 时间不同步:部署 chrony/ntp 保证节点间时间一致。
  • 版本选择:kubeadm/kubelet/kubectl 版本尽量保持一致;初始化时可通过 --kubernetes-version 指定稳定版本。

0