k8s集群部署-安装flannel网络插件

说明

通过 k8s集群部署-初始化master、添加node节点 可知,master 与 node 无法通信

k8s 支持多种网络插件,如: flannel、calico、canal等,通过这些插件,可让 master 与 node 之间进行通信,本文使用 flannel

flannel 简介

Flannel专门用于docker多机互联的一个工具,让集群中的不同节点主机创建的容器都具有全集群唯一的虚拟ip地址。

Flannel使用go语言编写。

本文中的 k8s Flannel 也是一个 docker

提示

在 k8s集群部署-初始化master、添加node节点 中,初始化 master 中,指定的下面配置:

--service-cidr=10.96.0.0/12 \
--pod-network-cidr=10.244.0.0/16

就是配置 flannel网络插件的 ip

master 服务器

提示:只在 master 服务器执行

获取 kube-flannel.yml 文件

方式一(不推荐)

执行下面命令,获取 flannel 配置文件

提示:一般会下载失败

wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

方式二:

执行 k8s集群部署-kube-flannel.yml v0.15.1 中的命令,创建 kube-flannel.yml 文件

拉取镜像

根据 kube-flannel.yml 配置文件创建资源

kubectl apply -f kube-flannel.yml

查看是否拉取完成

查看 kube-system 命名空间下的 pod

kubectl get pod -n kube-system

显示如下:

NAME                             READY   STATUS                  RESTARTS   AGE
coredns-9d85f5447-fzj8q          0/1     Pending                 0          6h40m
coredns-9d85f5447-l487h          0/1     Pending                 0          6h40m
etcd-master                      1/1     Running                 0          6h40m
kube-apiserver-master            1/1     Running                 0          6h40m
kube-controller-manager-master   1/1     Running                 0          6h40m
kube-flannel-ds-amd64-g6fsd      0/1     Init:ImagePullBackOff   0          36m
kube-flannel-ds-amd64-vljks      0/1     Init:ImagePullBackOff   0          36m
kube-flannel-ds-amd64-x6dld      0/1     Init:ImagePullBackOff   0          36m
kube-proxy-flpvx                 1/1     Running                 0          6h15m
kube-proxy-sw6vr                 1/1     Running                 0          5h46m
kube-proxy-xdwjt                 1/1     Running                 0          6h40m
kube-scheduler-master            1/1     Running                 0          6h40m

STATUS解释:

  • Init:ImagePullBackOff 表示拉取失败
  • Pending:表示等待
  • Running:表示成功运行,应该都是这种状态

提示:如果都是 Running,表示都成功;如果有别的状态,说明拉取失败,自行百度解决该问题

查看 node 节点状态

kubectl get node

显示如下:

NAME     STATUS   ROLES    AGE     VERSION
master   Ready    master   6h59m   v1.17.4
node1    Ready    <none>   6h34m   v1.17.4
node2    Ready    <none>   6h5m    v1.17.4

解释: STATUS 显示 Ready,说明master 与 node 之间通信成功

解决Service ClusterIP 访问慢

按照 k8s1.17-Service ClusterIP 访问服务过慢 执行命令


原文出处:/show_1IX6JkjGaP67.html