K8S集群是现代化应用部署和管理的一个重要工具。在实际生产环境中,通常将多台物理主机组成一个K8S集群,以实现高可用、负载均衡等功能。本文将教你如何在单台物理主机上搭建K8S集群。

### 一、环境准备
在开始之前,我们需要确保以下环境已经准备就绪:
1. 一台物理主机,至少8GB内存和4核CPU;
2. Ubuntu操作系统,版本为18.04或以上;
3. Docker运行时环境;
4. K8S命令行工具kubectl。

### 二、K8S集群部署步骤
下面是在单台物理主机上搭建K8S集群的步骤:

| 步骤 | 描述 |
| --- | --- |
| 1 | 安装Docker运行时环境 |
| 2 | 安装K8S命令行工具kubectl |
| 3 | 初始化K8S集群 |
| 4 | 部署网络插件 |
| 5 | 加入其他节点 |

接下来,我们将逐步进行每个步骤的具体操作。

#### 1. 安装Docker运行时环境
Docker是K8S集群的运行时环境,我们首先需要安装Docker。在Ubuntu系统上,可以通过以下命令进行安装:
```
$ sudo apt-get update # 更新软件包列表
$ sudo apt-get install docker.io -y # 安装Docker
$ sudo systemctl enable --now docker # 启动Docker服务
```

#### 2. 安装K8S命令行工具kubectl
kubectl是K8S的命令行工具,我们可以使用它来管理K8S集群。在Ubuntu系统上,可以通过以下命令进行安装:
```
$ sudo apt-get update
$ sudo apt-get install -y apt-transport-https gnupg2 curl
$ 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" | sudo tee /etc/apt/sources.list.d/kubernetes.list
$ sudo apt-get update
$ sudo apt-get install -y kubectl
```

#### 3. 初始化K8S集群
接下来,我们需要初始化K8S集群。使用以下命令初始化K8S集群:
```
$ sudo kubeadm init
```

初始化完成后,会输出一个类似下面的提示信息:
```
kubeadm join 192.168.0.100:6443 --token abcdef.0123456789abcdef --discovery-token-ca-cert-hash sha256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
```

将这条命令保存起来,我们在后面加入其他节点时会使用到。

#### 4. 部署网络插件
K8S集群需要一个网络插件来实现节点之间的网络通讯。这里我们选择使用Flannel作为网络插件。可以通过以下命令进行部署:
```
$ kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
```

#### 5. 加入其他节点
在完成以上步骤后,我们可以使用第3步中保存的命令将其他节点加入到K8S集群中。在需要加入的节点上,执行之前保存的命令:
```
$ sudo kubeadm join 192.168.0.100:6443 --token abcdef.0123456789abcdef --discovery-token-ca-cert-hash sha256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
```

### 结语
通过以上步骤,我们成功在单台物理主机上搭建了一个简单的K8S集群。在实际生产环境中,我们可以将上述步骤应用到多台物理主机上,实现高可用、负载均衡等功能。

希望本文能够帮助刚入行的小白理解如何在单台物理主机上搭建K8S集群。如果还有疑问,可以阅读K8S官方文档或者咨询相关的技术论坛。