K8S安装flannel失败及解决方法

## 1. 概述

在使用Kubernetes (K8S) 进行集群部署时,我们常常会遇到安装flannel网络插件失败的情况。本篇文章将向你介绍安装flannel失败的可能原因和解决方法。

## 2. 安装步骤

下面是安装flannel的主要步骤,我们将一一介绍每个步骤需要做什么以及对应的代码示例。

| 步骤 | 操作 |
| ---- | ---- |
| 步骤1 | 安装Docker运行时 |
| 步骤2 | 安装K8S Master节点 |
| 步骤3 | 安装K8S Worker节点 |
| 步骤4 | 配置flannel网络插件 |

## 3. 安装Docker运行时

首先,我们需要安装Docker运行时,因为flannel需要依赖于Docker网络功能。

1. 更新apt软件源:

```
$ sudo apt-get update
```

2. 安装Docker运行时:

```
$ sudo apt-get install docker.io
```

## 4. 安装K8S Master节点

接下来,我们需要安装K8S Master节点。这里我们使用kubeadm工具进行安装。

1. 设置防火墙规则,允许K8S Master节点通信:

```
$ sudo ufw allow 6443
$ sudo ufw allow 2379
$ sudo ufw allow 2380
$ sudo ufw allow 10250
$ sudo ufw allow 10251
$ sudo ufw allow 10252
```

2. 安装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
```

3. 初始化K8S Master节点:

```
$ sudo kubeadm init
```

执行完毕后,会输出一个kubeadm join命令,将该命令保存下来,稍后在安装Worker节点时需要使用。

4. 配置kubectl:

```
$ mkdir -p $HOME/.kube
$ sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
$ sudo chown $(id -u):$(id -g) $HOME/.kube/config
```

## 5. 安装K8S Worker节点

现在,让我们继续安装K8S Worker节点。

1. 在每个Worker节点上,执行之前保存的kubeadm join命令:

```
$ sudo kubeadm join : --token --discovery-token-ca-cert-hash
```

其中,``是K8S Master节点的IP地址,``是端口号,``和``是在初始化Master节点时生成的。

2. 在Master节点上,查看Worker节点的加入状态:

```
$ kubectl get nodes
```

如果输出结果中显示Worker节点已加入集群,则表示安装成功。

## 6. 配置flannel网络插件

最后,我们需要配置flannel网络插件,使得集群中的各个节点可以正常通信。

1. 下载flannel的配置文件:

```
$ curl -sSL https://raw.githubusercontent.com/coreos/flannel/main/Documentation/kube-flannel.yml -o kube-flannel.yml
```

2. 应用flannel的配置文件:

```
$ kubectl apply -f kube-flannel.yml
```

3. 等待一段时间,直到查看节点状态显示Ready:

```
$ kubectl get nodes
```

如果输出结果中的STATUS列显示为Ready,则表示flannel网络插件安装成功。

## 7. 总结

通过以上步骤,我们成功地安装并配置了flannel网络插件,解决了K8S安装flannel失败的问题。通过这篇文章,我们介绍了每个步骤需要做什么,并提供了相应的代码示例,希望对你解决类似问题有所帮助。当然,在实际部署过程中,可能还会遇到其他问题,但是通过不断尝试和查找资料,相信你一定可以解决这些问题。祝你在Kubernetes的学习和应用中取得成功!