Kubernetes(k8s)集群如何进行多节点安装?

问题浏览数Icon
21
问题创建时间Icon
2025-05-06 16:41:00
作者头像
vmstar01
  1. 环境准备:

    • 所有节点配置静态IP,禁用swap,确保主机名唯一
    • 配置/etc/hosts域名解析,同步系统时间
    • 开放6443、2379-2380、10250-10255等必要端口
  2. 安装容器运行时:

    apt-get install -y containerd
    systemctl enable --now containerd
  3. 安装kubeadm/kubelet/kubectl:

    apt-get install -y apt-transport-https ca-certificates curl
    curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.28/deb/Release.key | gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
    echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.28/deb/ /' > /etc/apt/sources.list.d/kubernetes.list
    apt-get update && apt-get install -y kubelet kubeadm kubectl
  4. 初始化Master节点:

    kubeadm init --apiserver-advertise-address=MASTER_IP --pod-network-cidr=10.244.0.0/16
    mkdir -p $HOME/.kube
    cp /etc/kubernetes/admin.conf $HOME/.kube/config
  5. 加入Worker节点: 在Worker节点执行kubeadm init输出的join命令,格式如:

    kubeadm join MASTER_IP:6443 --token xxx --discovery-token-ca-cert-hash sha256:xxx
  6. 安装网络插件:

    kubectl apply -f https://raw.githubusercontent.com/flannel-io/flannel/v0.22.0/Documentation/kube-flannel.yml
  7. 验证集群状态:

    kubectl get nodes -o wide
    kubectl get pods -n kube-system

更多回答

作者头像
vmblueberry
  1. 环境准备(所有节点)

    • 禁用Swap:swapoff -a并注释/etc/fstab中的swap条目
    • 配置主机名解析:确保/etc/hosts包含所有节点IP与主机名映射
    • 加载内核模块:modprobe overlay br_netfilter,并配置sysctl参数
    • 安装容器运行时(如containerd):通过包管理器安装并配置cgroup驱动为systemd
    • 安装kubeadm/kubelet/kubectl:添加K8s仓库,安装指定版本并设置开机启动
  2. 初始化Master节点

    • 执行kubeadm init --pod-network-cidr=192.168.0.0/16 --apiserver-advertise-address=<MASTER_IP>
    • 配置kubectl:mkdir -p $HOME/.kube并复制admin.conf到~/.kube/config
    • 记录加入命令:保存输出的kubeadm join命令(含token和证书哈希)
  3. 部署网络插件

    • 安装Calico:kubectl apply -f https://raw.githubusercontent.com/projectcalico/calico/v3.26.1/manifests/calico.yaml
  4. 添加Worker节点

    • 在Worker节点执行保存的kubeadm join命令
    • 验证节点状态:在Master执行kubectl get nodes,等待所有节点状态变为Ready
  5. 验证集群功能

    • 部署测试应用:kubectl create deployment nginx --image=nginx
    • 检查Pod调度:确认Pod可跨节点正常运行
作者头像
firestone77

Kubernetes多节点安装的核心步骤包括环境准备、组件部署及集群配置。建议按以下流程实施:

  1. 节点规划

    • 至少1个Master节点(推荐3节点实现HA)
    • 多个Worker节点(按业务需求扩展)
    • 所有节点需满足: • 2GB+内存/2核CPU+ • 禁用swap • 唯一主机名与静态IP • 时间同步(NTP)
  2. 容器运行时安装

    • 所有节点安装Docker(20.10+)或containerd
      apt-get install docker.io && systemctl enable docker
  3. Kubernetes组件安装

    • 所有节点安装kubeadm/kubelet/kubectl
      apt-get install -y kubeadm=1.28.0-00 kubelet=1.28.0-00 kubectl=1.28.0-00
      systemctl enable kubelet
  4. Master节点初始化

    kubeadm init --apiserver-advertise-address=MASTER_IP \
    --pod-network-cidr=10.244.0.0/16
    • 记录生成的join命令
    • 配置kubectl环境
      mkdir -p $HOME/.kube
      cp /etc/kubernetes/admin.conf $HOME/.kube/config
  5. 网络插件部署

    • 推荐Calico/Flannel
      kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
  6. Worker节点加入

    • 执行初始化时生成的kubeadm join命令
      kubeadm join MASTER_IP:6443 --token xxxx --discovery-token-ca-cert-hash sha256:xxxx
  7. 集群验证

    kubectl get nodes -o wide
    kubectl get pods -A

关键注意事项

  • 确保所有节点间网络互通(API Server端口6443等)
  • 不同Kubernetes版本需对应匹配组件版本
  • 生产环境建议通过RKE/kubeadm HA方案部署多Master
作者头像
fogchun66

作为IT经理,结合实践经验,Kubernetes多节点安装的核心步骤如下:

  1. 环境准备

    • 所有节点:禁用交换分区(swapoff -a),配置唯一主机名,同步时间(ntpd),关闭防火墙/SELinux(或开放6443、10250等端口)。
    • 主节点:2GB+内存、2核+CPU;工作节点:按负载需求配置。
  2. 容器运行时安装

    • 所有节点安装Docker或containerd,例如Ubuntu执行 apt install docker.io 并启动服务。
  3. Kubernetes组件安装

    • 所有节点:添加K8s仓库,安装kubeadm(集群引导工具)、kubelet(节点代理)、kubectl(命令行工具)。
  4. 主节点初始化

    • 执行 kubeadm init --apiserver-advertise-address=<主节点IP> --pod-network-cidr=<网络插件CIDR>
    • 记录输出中的 kubeadm join 命令(含token及CA证书哈希),用于工作节点加入。
  5. 配置kubectl

    • 主节点执行 mkdir -p $HOME/.kubecp /etc/kubernetes/admin.conf $HOME/.kube/config,验证节点状态(kubectl get nodes)。
  6. 安装网络插件

  7. 工作节点加入集群

    • 在各工作节点执行步骤2-3后,运行主节点提供的 kubeadm join 命令。
  8. 验证集群

    • 主节点执行 kubectl get nodes 确认所有节点状态为Ready,部署测试Pod(如nginx)验证跨节点通信。

关键注意事项

  • Token有效期:默认24小时,过期需通过 kubeadm token create 生成新token。
  • 镜像拉取问题:可预先使用 kubeadm config images pull 下载镜像。
  • 高可用扩展:生产环境需部署多个Master节点,配合负载均衡器(如HAProxy)。