温馨提示×

centos上k8s部署流程怎样

小樊
40
2025-12-25 15:09:35
栏目: 智能运维

CentOS 上用 kubeadm 部署 Kubernetes 的标准流程

一 环境准备与基础配置

  • 节点规划:建议至少准备1 台 Master + 2 台 Worker,每台至少2 核 CPU、2GB 内存、20GB 磁盘,并确保节点间网络互通、可 SSH 登录。
  • 系统更新与依赖:执行 sudo yum update -y;安装常用工具(如 yum-utils)。
  • 主机名与解析:为各节点设置主机名(如 hostnamectl set-hostname k8s-master),并在 /etc/hosts 中写入 IP-主机名 映射,便于内网解析。
  • 关闭 Swap:临时 sudo swapoff -a,并注释 /etc/fstab 中的 swap 行,保证重启后依然禁用。
  • 防火墙与安全策略:
    • 简单测试环境可直接 sudo systemctl stop firewalld && sudo systemctl disable firewalld
    • 生产环境建议保留防火墙并放行必要端口(如 6443、2379-2380、10250、10251、10252、10255)。
  • SELinux:可临时 sudo setenforce 0;如需持久化,编辑 /etc/selinux/configSELINUX=enforcing 改为 SELINUX=permissivedisabled 并重启。
  • 时间同步:安装并启用 chrony/ntpd,保证节点时间一致,避免证书校验与组件异常。

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

  • 安装容器运行时(Docker CE):
    • 添加仓库:sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
    • 安装并启动:sudo yum install -y docker-ce docker-ce-cli containerd.io && sudo systemctl enable --now docker
  • 添加 Kubernetes YUM 源并安装组件:
    • 仓库示例:
      cat <<EOF | sudo 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
      
    • 安装:sudo yum install -y kubelet kubeadm kubectl --disableexcludekubernetes
    • 启动 kubelet:sudo systemctl enable --now kubelet(注意:kubelet 会持续重启直至集群初始化完成)

三 初始化 Master 节点

  • 初始化命令(按需调整参数):
    • 示例:sudo kubeadm init --apiserver-advertise-address=<Master_IP> --pod-network-cidr=10.244.0.0/16
    • 国内镜像加速(可选):--image-repository registry.aliyuncs.com/google_containers
    • 指定版本(可选):--kubernetes-version=v1.26.x
  • 配置 kubectl:
    mkdir -p $HOME/.kube
    sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
    sudo chown $(id -u):$(id -g) $HOME/.kube/config
    
  • 获取 Node 加入命令:
    • 直接打印:sudo kubeadm token create --print-join-command
    • 或复制 kubeadm init 输出中的 kubeadm join ... --token <token> --discovery-token-ca-cert-hash sha256:<hash>

四 部署 CNI 网络插件

  • 选择并部署一种 CNI(两者选其一,Pod CIDR 需与初始化参数一致):
    • Flannel:
      wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
      kubectl apply -f kube-flannel.yml
      
    • Calico:
      kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
      
  • 验证:kubectl get pods -n kube-system 应看到 kube-flannelcalico 相关 Pod 均为 Running

五 加入 Worker 节点与验证

  • 在各 Worker 上执行第“三”步保存的 kubeadm join ... 命令,加入集群。
  • 在 Master 上验证:
    • 节点状态:kubectl get nodes(所有节点应为 Ready
    • 组件状态:kubectl get pods -n kube-system(核心组件 Running)
    • 集群信息:kubectl cluster-info
  • 常见问题速查:
    • 节点 NotReady:检查 CNI 是否部署成功kubelet 是否运行节点网络与防火墙
    • 镜像拉取失败:配置 Docker 镜像加速 或检查网络连通性。
    • Token 过期:在 Master 上重新生成 kubeadm token create --print-join-command

0