温馨提示×

centos集群k8s安装方法

小樊
49
2025-11-22 04:03:27
栏目: 智能运维

CentOS 集群 Kubernetes 安装指南(kubeadm 快速部署)

一 环境准备与系统初始化

  • 节点规划:至少准备 1 台 Master1 台 Worker;推荐 2 核 CPU、2GB 内存、20GB+ 磁盘,节点间网络互通,建议配置 静态 IP/etc/hosts 主机名解析。
  • 基础配置(所有节点执行):
    • 关闭 Swap:swapoff -a && sed -i '/swap/s/^/#/' /etc/fstab
    • 关闭 SELinux:setenforce 0 && sed -i 's/^SELINUX=enforcing/SELINUX=permissive/' /etc/selinux/config
    • 防火墙:生产环境建议按需放行端口;实验环境可临时关闭:systemctl stop firewalld && systemctl disable firewalld
    • 时间同步:yum install -y chrony && systemctl enable --now chronyd
    • 主机名与 hosts:
      • hostnamectl set-hostname k8s-master(Master)
      • 编辑 /etc/hosts 添加如:192.168.1.10 k8s-master192.168.1.11 k8s-node1
  • 内核与模块:
    • 加载模块:modprobe br_netfilter
    • 内核参数:echo 'net.bridge.bridge-nf-call-iptables=1' >> /etc/sysctl.conf && sysctl -p
  • 资源建议:每个节点至少 2 核 CPU、2GB 内存,并确保 kubelet 开机自启。

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

  • 安装 Docker(所有节点):
    • 添加源并安装:
      • yum install -y yum-utils
      • 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 enable --now 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-x86_64/
        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 --disableexcludekubernetes
      • systemctl enable --now kubelet
  • 说明:kubeadm 用于集群引导,kubelet 负责节点上 Pod 生命周期管理,kubectl 为命令行客户端。

三 初始化 Master 节点

  • 初始化命令(在 Master 执行,按需替换参数):
    • 示例:kubeadm init --apiserver-advertise-address=<MASTER_IP> --pod-network-cidr=10.244.0.0/16 --image-repository registry.aliyuncs.com/google_containers
    • 常见参数说明:
      • --apiserver-advertise-address:Master 节点 IP
      • --pod-network-cidr:Pod 网段;Flannel 常用 10.244.0.0/16Calico 常用 192.168.0.0/16
      • --image-repository:镜像仓库(国内可用 registry.aliyuncs.com/google_containers
      • --kubernetes-version:指定版本(如 v1.22.15
  • 配置 kubectl(在 Master 执行):
    • mkdir -p $HOME/.kube
    • cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
    • chown $(id -u):$(id -g) $HOME/.kube/config
  • 获取 Worker 加入命令(在 Master 执行):
    • kubeadm token create --print-join-command

四 部署网络插件

  • 选择其一部署(在 Master 执行):
    • 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 -n kube-system(核心组件与网络插件 Pod 应为 Running

五 加入 Worker 节点与验证

  • 加入命令(在 Worker 执行,使用 Master 上生成的命令):
    • 示例:kubeadm join <MASTER_IP>:6443 --token <TOKEN> --discovery-token-ca-cert-hash sha256:<HASH>
  • 验证:
    • 在 Master:kubectl get nodes,确认所有节点 Ready
    • 查看系统 Pod:kubectl get pods -n kube-system
  • 常见问题与端口:
    • 端口放行(生产环境建议按需开放):6443(APIServer)、2379-2380(etcd)、10250(kubelet)、10251(kube-scheduler)、10252(kube-controller-manager)、30000-32767(NodePort)
    • 镜像拉取失败:更换为国内镜像仓库(如 --image-repository registry.aliyuncs.com/google_containers
    • 节点 NotReady:检查 Pod CIDR 是否与网络插件一致网络插件是否成功部署防火墙/SELinux 是否影响通信

0