Kubernetes(简称K8s)是一款用于管理容器化应用程序的开源平台。搭建K8s集群是进行容器化部署的首要任务之一。在本篇文章中,我将介绍K8s集群搭建的几种方式,并给出相应的代码示例。

K8s集群搭建方式主要有以下几种:

1. 使用kubeadm搭建K8s集群
2. 使用minikube搭建单机K8s集群
3. 使用kubespray搭建大规模K8s集群

下面我将依次介绍这三种搭建方式的步骤和对应的代码示例。

#### 1. 使用kubeadm搭建K8s集群

kubeadm是一个用于快速部署Kubernetes集群的工具。它使用简单,易于理解,并且是官方推荐的搭建K8s集群的方式。

1. 安装Docker和kubeadm

```shell
# 安装Docker
$ sudo apt-get update
$ sudo apt-get install docker.io

# 安装kubeadm, kubelet和kubectl
$ 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 -
$ 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 kubelet kubeadm kubectl
$ sudo apt-mark hold kubelet kubeadm kubectl
```

2. 初始化Master节点

```shell
$ sudo kubeadm init
```

3. 部署网络插件

```shell
$ kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
```

4. 加入Worker节点

```shell
# 在Master节点执行以下命令
$ sudo kubeadm token create --print-join-command

# 在Worker节点执行Master节点返回的命令
```

#### 2. 使用minikube搭建单机K8s集群

minikube是一个用于在本地机器上运行Kubernetes的工具。它提供了简单易用的命令行接口,适用于开发和测试环境。

1. 安装minikube

```shell
$ curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 \
&& chmod +x minikube
$ sudo install minikube /usr/local/bin/
```

2. 启动minikube

```shell
$ minikube start
```

3. 验证集群状态

```shell
$ kubectl cluster-info
```

#### 3. 使用kubespray搭建大规模K8s集群

kubespray是一个用于部署生产就绪的Kubernetes集群的开源工具。它支持大规模集群,并提供了灵活的配置选项。

1. 克隆kubespray代码库

```shell
$ git clone https://github.com/kubernetes-sigs/kubespray.git
```

2. 安装依赖

```shell
$ pip install -r requirements.txt
```

3. 配置Inventory文件

```shell
$ cp -rfp inventory/sample inventory/mycluster
$ declare -a IPS=(10.0.0.1 10.0.0.2 10.0.0.3) # 替换为实际的IP地址
$ CONFIG_FILE=inventory/mycluster/hosts.yaml python3 contrib/inventory_builder/inventory.py ${IPS[@]}
```

4. 部署K8s集群

```shell
$ ansible-playbook -i inventory/mycluster/hosts.yaml --become --become-user=root cluster.yml
```

以上介绍了三种搭建K8s集群的方式,并给出了相应的代码示例。根据实际需求选择适合自己的方式进行部署,开启容器化部署的新篇章!