一台Ubuntu22.04物理机搭建虚拟机云和容器云集群,通过安装ESXi、配置GPU透传、创建虚拟机,然后在虚拟机上搭建集群。
步骤1: 安装ESXi并配置GPU透传
-
下载和准备ESXi:
- 从 VMware 官方网站 下载ESXi镜像。
- 使用Rufus等工具将镜像写入U盘,以便将其作为启动盘。
-
安装ESXi:
- 将U盘插入服务器并从U盘启动。
- 选择“Install ESXi”,然后按照屏幕提示进行安装。
- 选择合适的磁盘(硬盘)作为安装目标,通常是2TB存储的一部分。
-
初步配置ESXi:
- 安装完成后,使用管理程序(例如iBMC)连接到服务器,并访问ESXi的管理控制台。
- 设置主机名、管理网络(如IP地址、子网掩码、网关)等。
- 通过浏览器访问ESXi的Web管理界面(如
https://<你的ESXi IP地址>
)。
-
配置GPU透传:
- 进入ESXi Web管理界面。
- 选择“Host” -> “Manage” -> “Hardware” -> “PCI Devices”。
- 找到你的NVIDIA 4060 GPU并启用“Passthrough”功能。
- 重启ESXi主机以应用设置。
步骤2: 创建虚拟机并配置集群
为虚拟云创建虚拟机:
-
创建主节点虚拟机:
- 在ESXi Web管理界面,选择“Virtual Machines” -> “Create/Register VM”。
- 选择“Create a new virtual machine”。
- 设置虚拟机名称(如“VM-Cloud-Master”)。
- 选择操作系统类型为Linux(建议使用Ubuntu 22.04)。
- 为虚拟机分配8核CPU、16GB RAM和80GB硬盘。
- 完成设置后,启动虚拟机并安装Ubuntu 22.04。
-
创建GPU工作节点虚拟机:
- 按照与主节点类似的步骤创建4个工作节点虚拟机。
- 每个工作节点命名为“VM-Cloud-Worker-1”,“VM-Cloud-Worker-2”等。
- 分配8核CPU、16GB RAM、80GB硬盘以及通过GPU透传分配给每个虚拟机一个GPU。
为容器云创建虚拟机:
-
创建主节点虚拟机:
- 使用与虚拟云类似的方法创建容器云主节点虚拟机(命名为“Container-Cloud-Master”)。
- 分配8核CPU、16GB RAM、80GB硬盘。
-
创建GPU工作节点虚拟机:
- 按照相同的步骤为容器云创建4个工作节点虚拟机。
- 每个工作节点命名为“Container-Cloud-Worker-1”,“Container-Cloud-Worker-2”等。
步骤3: 配置Kubernetes集群
-
在主节点上安装Kubernetes:
- SSH进入虚拟云主节点。
- 更新系统并安装必要的工具:
sudo apt-get update sudo apt-get install -y apt-transport-https curl
- 添加Kubernetes的APT源并安装kubeadm、kubelet和kubectl:
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add - sudo apt-add-repository "deb http://apt.kubernetes.io/ kubernetes-xenial main" sudo apt-get update sudo apt-get install -y kubelet kubeadm kubectl
- 使用
kubeadm
初始化集群:sudo kubeadm init --pod-network-cidr=192.168.0.0/16
- 配置kubectl:
mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config
-
为工作节点加入集群:
- 在每个工作节点上安装Kubernetes(与主节点相同)。
- 使用在主节点初始化时生成的
kubeadm join
命令,将每个工作节点加入集群。
在主节点上初始化集群时(即执行
kubeadm init
时),会生成一个kubeadm join
命令。这个命令包含一个 token 和主节点的 IP 地址,工作节点需要用它来加入集群。例如,生成的命令可能类似这样:
kubeadm join <Master-Node-IP>:<Port> --token <token> --discovery-token-ca-cert-hash sha256:<hash>
-
部署网络插件(例如Calico或Flannel):
- 在主节点上运行以下命令:
kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
- 在主节点上运行以下命令:
-
验证集群状态:
- 使用以下命令检查节点和Pod的状态:
kubectl get nodes kubectl get pods -A
- 使用以下命令检查节点和Pod的状态:
步骤4: 安装GPU支持(可选)
-
为容器安装NVIDIA驱动:
- 安装NVIDIA Docker工具包:
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add - distribution=$(. /etc/os-release;echo $ID$VERSION_ID) curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list sudo apt-get update && sudo apt-get install -y nvidia-container-toolkit sudo systemctl restart docker
- 安装NVIDIA Docker工具包:
-
为Kubernetes配置GPU支持:
- 在所有GPU节点上安装NVIDIA Kubernetes插件:
kubectl apply -f https://raw.githubusercontent.com/NVIDIA/k8s-device-plugin/v0.9.0/nvidia-device-plugin.yml
- 在所有GPU节点上安装NVIDIA Kubernetes插件: