K8S(Kubernetes)是一个开源的容器编排引擎,可用于自动化部署、扩展和管理容器化应用程序。而kubeadm则是用于快速部署Kubernetes集群的一个工具。在本篇文章中,我将教会你如何使用kubeadm离线部署Kubernetes集群。

---
### 准备工作
在开始之前,我们需要准备一些基本的工作和资源。这些准备工作包括:

1. 需要一台或多台运行着Ubuntu或其他Linux发行版的机器。这些机器将用于部署和运行Kubernetes集群。
2. 需要一个可用的镜像源。由于我们是离线部署,所以需要提前下载所需的镜像,并将其发布到内网的镜像源上,以供Kubernetes集群使用。
3. 需要安装kubeadm工具和相关软件包。你可以在Kubernetes官方网站上找到安装kubeadm的详细步骤。

### 部署步骤
下面是使用kubeadm离线部署Kubernetes集群的步骤:

| 步骤 | 操作 |
| --- | --- |
| 1 | 准备主机 |
| 2 | 安装Docker |
| 3 | 配置Docker镜像源 |
| 4 | 安装kubeadm和kubelet |
| 5 | 初始化Master节点 |
| 6 | 加入Worker节点 |

### 操作步骤
#### 步骤一:准备主机
首先,你需要准备用于部署Kubernetes集群的主机。确保主机满足以下要求:
- Ubuntu或其他Linux发行版
- 至少2GB的内存
- 满足网络连接的要求

#### 步骤二:安装Docker
在主机上安装Docker,你可以使用以下命令:
```shell
$ sudo apt-get install docker.io
```
这将会安装Docker的最新版本。

#### 步骤三:配置Docker镜像源
由于我们是离线部署,所以需要把之前准备的镜像文件发布到内网的镜像源上,并配置Docker使用该镜像源。你可以使用以下命令来配置Docker镜像源:
```shell
$ sudo vi /etc/docker/daemon.json
```
然后,将以下内容添加到daemon.json文件中:
```json
{
"registry-mirrors": ["http://"]
}
```
保存并退出文件。

#### 步骤四:安装kubeadm和kubelet
接下来,你需要在主机上安装kubeadm和kubelet。你可以使用以下命令进行安装:
```shell
$ sudo apt-get update && sudo apt-get install -y kubeadm kubelet
```
其中,kubeadm是用于初始化Kubernetes集群的工具,kubelet是Kubernetes的核心组件之一。

#### 步骤五:初始化Master节点
在完成上述准备工作后,你需要在其中一台主机上初始化Kubernetes的Master节点。使用以下命令进行初始化:
```shell
$ sudo kubeadm init --pod-network-cidr=
```
其中,``是你选择的Pod网络的CIDR范围。这里推荐使用Flannel网络插件,其默认CIDR为`10.244.0.0/16`。初始化完成后,你将会看到类似下面的输出:
```shell
...
Your Kubernetes control-plane has initialized successfully!
...
```
在输出中,你还将会看到一个类似于`kubeadm join`的命令,这是用于将Worker节点加入到集群的命令。请妥善保管该命令,以便后续使用。

#### 步骤六:加入Worker节点
在完成Master节点的初始化后,你需要将其他主机加入到Kubernetes集群作为Worker节点。使用步骤五中提到的`kubeadm join`命令,在其他主机上执行该命令即可。例如:
```shell
$ sudo kubeadm join --token --discovery-token-ca-cert-hash
```
其中,``是Master节点的地址和端口,``是连接Master节点的身份验证令牌,``是用于证书验证的哈希值。

### 总结
通过使用kubeadm,你可以快速、方便地离线部署Kubernetes集群。在本文中,我们介绍了离线部署Kubernetes集群的基本步骤,并提供了相应的代码示例。希望你能通过本文了解如何使用kubeadm离线部署Kubernetes集群,并能顺利进行实践。