K8S apiserver 安装步骤:

步骤 | 相关操作
-----|--------
1 | 下载 K8S 安装文件
2 | 安装 etcd
3 | 安装 Docker
4 | 安装 kubeadm,kubelet 和 kubectl
5 | 配置 Master 节点
6 | 初始化 Master
7 | 部署网络插件
8 | 配置 Worker 节点
9 | 添加 Worker 节点到集群
10 | 测试集群

现在,让我们一步步来实现 K8S apiserver 的安装。

1. 下载 K8S 安装文件。在官方的 GitHub 仓库上可以找到最新的 K8S 发布版本。可以使用以下命令来下载最新版本的安装文件:
```
wget https://github.com/kubernetes/kubernetes/releases/download/v1.21.0/kubernetes.tar.gz
```

2. 安装 etcd。etcd 是一个高可用的键值存储系统,是 K8S 集群的组件之一。可以使用以下命令来安装 etcd:
```
apt-get install etcd -y
```

3. 安装 Docker。Docker 是一个开源的应用容器引擎,可以将应用程序和相关依赖封装到一个可移植的容器中。可以使用以下命令来安装 Docker:
```
apt-get install docker-ce docker-ce-cli containerd.io -y
```

4. 安装 kubeadm,kubelet 和 kubectl。kubeadm 是 K8S 的命令行工具,kubelet 是 K8S 主节点上的一个守护进程,而 kubectl 是 K8S 的命令行客户端工具。可以使用以下命令来安装这些工具:
```
apt-get install kubeadm kubelet kubectl -y
```

5. 配置 Master 节点。Master 节点是 K8S 集群中的主节点,负责管理整个集群的操作。需要在 Master 节点上进行以下配置:
- 关闭防火墙:```ufw disable```
- 关闭 swap 分区:```swapoff -a```
- 修改 hostname:```hostnamectl set-hostname master-node```
- 修改 hosts 文件:```echo "MasterIP master-node" >> /etc/hosts```

6. 初始化 Master。在 Master 节点上运行以下命令以初始化 K8S Master:
```
kubeadm init --apiserver-advertise-address=MasterIP --pod-network-cidr=10.244.0.0/16
```

7. 部署网络插件。网络插件是用于在 K8S 集群中实现容器间网络通信的组件。常用的网络插件有 Calico、Flannel 等。可以使用以下命令来部署网络插件(以 Calico 为例):
```
kubectl apply -f https://docs.projectcalico.org/v3.1/getting-started/kubernetes/installation/hosted/kubernetes-datastore/calico-networking/1.7/calico.yaml
```

8. 配置 Worker 节点。Worker 节点是 K8S 集群中的工作节点,负责运行容器和处理应用程序的请求。与 Master 节点一样,需要在 Worker 节点上进行以下配置:
- 关闭防火墙:```ufw disable```
- 关闭 swap 分区:```swapoff -a```
- 修改 hostname:```hostnamectl set-hostname worker-node```
- 修改 hosts 文件:```echo "WorkerIP worker-node" >> /etc/hosts```

9. 添加 Worker 节点到集群。在 Master 节点上运行以下命令以添加 Worker 节点到集群:
```
kubeadm token create --print-join-command
```
运行上述命令后会得到一条带有 token 的加入命令,将该命令运行在 Worker 节点上即可添加该节点到集群中。

10. 测试集群。使用以下命令来测试 K8S 集群是否正常工作:
```
kubectl get nodes
```
如果能够看到 Master 节点和 Worker 节点的信息,则说明集群已经成功搭建。

通过以上步骤,我们成功地完成了 K8S apiserver 的安装。接下来,我们可以开始使用 K8S 来管理和部署应用程序了。