在VMware环境中如何使用kubeadm部署Kubernetes(k8s)集群?

问题浏览数Icon
28
问题创建时间Icon
2025-06-10 18:49:00
回答 | 共 4 个
作者头像
windleaf66

在VMware环境中通过kubeadm部署Kubernetes集群的核心步骤如下:

  1. 环境准备

    • 创建3台以上虚拟机(1主多从),建议Ubuntu 22.04/CentOS 8+
    • 确保互通的主机名解析(/etc/hosts或DNS)
    • 关闭swap(sudo swapoff -a;注释/etc/fstab中的swap项)
    • 开放6443(API)、2379-2380(etcd)、10250(kubelet)等端口
  2. 依赖安装

    • 所有节点执行:
      # 容器运行时(以containerd为例)
      apt-get install -y containerd  
      # 安装kubeadm三件套
      apt-get install -y curl apt-transport-https ca-certificates
      curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
      echo 'deb https://apt.kubernetes.io/ kubernetes-xenial main' > /etc/apt/sources.list.d/kubernetes.list
      apt-get update && apt-get install -y kubelet kubeadm kubectl
  3. 集群初始化

    • 仅在Master节点执行:
      kubeadm init \
      --apiserver-advertise-address=172.16.10.100 \
      --pod-network-cidr=10.244.0.0/16
    • 记录输出的kubeadm join命令(含token)
    • 生成kubeconfig:mkdir -p $HOME/.kube && cp /etc/kubernetes/admin.conf $HOME/.kube/config
  4. 网络插件部署

    kubectl apply -f https://raw.githubusercontent.com/flannel-io/flannel/master/Documentation/kube-flannel.yml
  5. Worker节点加入

    • 在所有Worker节点执行步骤2后,运行kubeadm join命令
  6. 验证集群

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

VMware特定注意事项

  • 虚拟机网卡建议选择VMXNET3类型提升性能
  • 启用ESXi主机的Promiscuous Mode以支持NodePort
  • 若使用vSphere Cloud Provider,需配置--cloud-provider=vsphere参数
作者头像
cloudlong99

在VMware环境中使用kubeadm部署Kubernetes集群的关键步骤如下,需结合企业级实践:

  1. 环境准备

    • 基于VMware vSphere创建虚拟机(推荐Ubuntu/CentOS),至少1个Master(建议3个实现HA)及若干Worker。
    • 配置2核CPU/4GB内存/20GB磁盘,禁用swap,同步时钟,确保vmtools优化虚拟机性能。
    • 开启必要防火墙端口(6443, 10250等),若使用NSX需规划非冲突的Pod CIDR(如10.244.0.0/16)。
  2. 依赖安装

    • 所有节点安装containerd(1.6+)并配置systemd驱动,替代Docker以适配新版Kubernetes。
    • 通过Kubernetes官方源安装kubeadm/kubelet/kubectl(锁定1.26+稳定版本),设置kubelet开机自启。
  3. 控制平面初始化

    • Master节点执行 kubeadm init --pod-network-cidr=10.244.0.0/16 --apiserver-advertise-address=<VM_IP>,记录join命令。
    • 部署Calico或Antrea(推荐与VMware Tanzu生态兼容)CNI插件,验证跨节点网络通信。
  4. 节点加入与验证

    • Worker节点通过kubeadm join加入,使用 kubectl get nodes -o wide 检查各节点Ready状态。
    • 部署测试应用并暴露Service,验证南北向流量(结合VMware Load Balancer)。
  5. 企业级增强

    • 集成vSphere CSI驱动实现持久卷动态供给,配置StorageClass绑定vSAN/NFS存储。
    • 启用RBAC及NetworkPolicy,结合VMware Aria Operations监控集群健康状态。
    • 使用Cluster API对VMware环境进行声明式集群生命周期管理。

注:生产环境需通过Terraform编排虚拟机模板,Ansible固化部署流程,并结合Harbor私有镜像仓库提升交付一致性。

作者头像
linxiaoliang7

在VMware环境中使用kubeadm部署Kubernetes集群需重点考虑虚拟化资源优化及网络适配,建议步骤如下:

  1. 环境准备

    • 部署3台及以上VM(建议2核/4GB+)作为节点,操作系统选Ubuntu 22.04/CentOS 8+
    • 启用嵌套虚拟化(ESXi参数调整),保障vCPU支持KVM
    • 配置VMware网络使用桥接/NAT模式,确保节点间互通(禁用防火墙或开放6443/2379等端口)
  2. 容器运行时配置

    • Containerd为首选(默认集成kubelet兼容性最佳)
    • 配置systemd作为cgroup驱动,避免Pod状态异常
  3. kubeadm初始化

    • 主节点执行 kubeadm init --pod-network-cidr=10.244.0.0/16
    • 保存join命令并配置CNI插件(推荐Calico支持VMware NSX-T集成)
  4. 网络适配要点

    • 若使用vSphere Distributed Switch,需确保CNI插件兼容Underlay网络
    • 当VMware Tanzu共存时,需规避Kubernetes服务CIDR冲突
  5. 存储集成

    • 使用vSphere CSI Driver动态创建PV,需提前配置VMware Cloud Provider
    • 验证StorageClass与vSAN/VMFS的兼容性
  6. 高可用方案选择

    • 生产环境建议部署3个控制平面节点,采用kube-vip或HAProxy实现API Server负载均衡
    • 结合vSphere HA实现物理层故障转移

关键注意:VMware Tools需更新至最新版本,避免因时间漂移导致证书错误;建议在虚拟机模板中预置Kubernetes依赖环境加速集群扩容。

作者头像
shuiliang33
  1. 环境准备:在VMware中创建至少3台Ubuntu/CentOS虚拟机(1主2从),确保互通且关闭swap、防火墙和SELinux,配置相同主机名解析(/etc/hosts)。

  2. 安装依赖:所有节点执行apt-get install -y docker.ioyum install docker,启用docker服务并配置cgroup驱动为systemd,安装kubeadm/kubelet/kubectl(通过官方apt/yum源)。

  3. 主节点初始化:主节点执行kubeadm init --apiserver-advertise-address=主节点IP --pod-network-cidr=10.244.0.0/16,成功后按提示保存join命令,配置kubectl访问权限。

  4. 部署网络插件:主节点执行kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml完成CNI部署。

  5. 加入工作节点:在所有worker节点执行保存的kubeadm join命令(含token和哈希校验),用kubectl get nodes验证节点状态为Ready。

异常处理:若镜像拉取失败,使用国内镜像源替换k8s.gcr.io镜像;通过journalctl -xeu kubelet排查服务故障;reset后重新init需用kubeadm reset清理环境。