虚拟机单机安装K8S的流程如下:

| 步骤 | 操作 |
| ------ | ------ |
| 1. 准备虚拟机 | 在物理机上安装虚拟化软件,如VirtualBox |
| 2. 创建虚拟机 | 使用虚拟化软件创建一个虚拟机实例 |
| 3. 安装操作系统 | 在虚拟机上安装一个支持K8S的操作系统,如Ubuntu |
| 4. 安装Docker | 在虚拟机上安装Docker,作为K8S的容器运行时 |
| 5. 配置Docker镜像加速器 | 配置Docker镜像加速器,提升镜像下载速度 |
| 6. 安装K8S组件 | 在虚拟机上安装K8S的各个组件,如kubelet、kubeadm和kubectl |
| 7. 初始化K8S集群 | 使用kubeadm初始化K8S集群 |
| 8. 配置网络插件 | 安装和配置网络插件,如Calico或Flannel |
| 9. 添加节点 | 将其他虚拟机作为节点加入到K8S集群中 |
| 10. 验证集群 | 使用kubectl命令验证K8S集群的状态 |

下面是每一步具体的操作步骤和代码示例:

#### 1. 准备虚拟机

在物理机上安装虚拟化软件,如VirtualBox。根据操作系统不同,可使用对应的安装包进行安装。

#### 2. 创建虚拟机

使用虚拟化软件创建一个虚拟机实例,并配置相关的虚拟机参数,如CPU、内存和磁盘大小。

#### 3. 安装操作系统

在虚拟机上安装一个支持K8S的操作系统,如Ubuntu。根据虚拟机的硬件配置,可选择32位或64位的操作系统版本。

#### 4. 安装Docker

在虚拟机上安装Docker,作为K8S的容器运行时。使用以下命令安装Docker:

```bash
$ sudo apt-get update # 更新软件包索引
$ sudo apt-get install docker # 安装Docker
```

#### 5. 配置Docker镜像加速器

配置Docker镜像加速器,提升镜像下载速度。在/etc/docker/daemon.json文件中添加以下内容:

```json
{
"registry-mirrors": ["https://<加速器地址>"]
}
```

其中`<加速器地址>`是指定的镜像加速器地址,可以从网上搜索并选择适合的镜像加速器地址。

#### 6. 安装K8S组件

在虚拟机上安装K8S的各个组件,如kubelet、kubeadm和kubectl。使用以下命令安装K8S组件:

```bash
$ sudo apt-get update # 更新软件包索引
$ sudo apt-get install -y apt-transport-https curl # 安装依赖
$ curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add - # 添加K8S的GPG密钥
$ echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list # 添加K8S的软件源
$ sudo apt-get update # 更新软件包索引
$ sudo apt-get install -y kubelet kubeadm kubectl # 安装K8S组件
$ sudo apt-mark hold kubelet kubeadm kubectl # 防止K8S组件在系统更新时被自动升级
```

#### 7. 初始化K8S集群

使用kubeadm初始化K8S集群。执行以下命令将当前节点初始化为K8S的主节点:

```bash
$ sudo kubeadm init # 初始化K8S集群
```

初始化完成后,输出的信息中会包含加入集群的命令,在后续添加节点步骤中会用到。

#### 8. 配置网络插件

安装和配置网络插件,如Calico或Flannel。选择一个网络插件,并根据其官方文档进行安装和配置。

例如,使用Flannel插件,执行以下命令安装和配置Flannel:

```bash
$ kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml # 安装Flannel插件
```

#### 9. 添加节点

将其他虚拟机作为节点加入到K8S集群中。通过执行初始化集群时输出的加入集群命令,将其他虚拟机加入到集群中。

```bash
$ sudo kubeadm join <主节点IP>:<主节点端口> --token --discovery-token-ca-cert-hash <证书Hash>
```

其中`<主节点IP>`是K8S主节点的IP地址,`<主节点端口>`是K8S主节点的端口号,``和`<证书Hash>`是初始化集群时输出的Token和证书哈希值。

#### 10. 验证集群

使用kubectl命令验证K8S集群的状态。例如,执行以下命令验证集群的状态:

```bash
$ kubectl cluster-info # 查看集群信息
$ kubectl get nodes # 查看集群节点
```

至此,虚拟机单机安装K8S的操作步骤已经完成。通过以上步骤,你可以在自己的虚拟机上安装和配置一个单机的K8S集群,并进行相关的开发和调试工作。