千家信息网

K8S单master部署二:Flannel网络部署

发表于:2025-02-07 作者:千家信息网编辑
千家信息网最后更新 2025年02月07日,以下所有操作均在node节点进行Flannel网络概述Flannel通过给每台宿主机分配一个子网的方式为容器提供虚拟网络,它基于Linux TUN/TAP,使用UDP/VXLAN封装IP包来创建ove
千家信息网最后更新 2025年02月07日K8S单master部署二:Flannel网络部署

以下所有操作均在node节点进行


Flannel网络概述

Flannel通过给每台宿主机分配一个子网的方式为容器提供虚拟网络,它基于Linux TUN/TAP,使用UDP/VXLAN封装IP包来创建overlay网络,并借助etcd(也支持kubernetes)维护网络的分配情况。


服务器角色分配

角色地址安装组件
master192.168.142.220kube-apiserver kube-controller-manager kube-scheduler etcd
node1192.168.142.136kubelet kube-proxy docker flannel etcd
node2192.168.142.132kubelet kube-proxy docker flannel etcd

Flannel网络部署(所有node节点)

安装docker容器

docker引擎的安装比较简单这里就不多讲解了,直接贴脚本刷即可。

脚本如下:

#!/bin/bash#Docker引擎部署#安装依赖包yum install yum-utils device-mapper-persistent-data lvm2 -y#设置阿里云镜像源yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo#安装Docker-ceyum install -y docker-ce#关闭防火墙及增强型安全功能systemctl stop firewalld.servicesetenforce 0#启动Docker并设置为开机自启动systemctl start docker.servicesystemctl enable docker.service#镜像加速服务(每个人的阿里加速地址都不同,请自行前往阿里官网获取)tee /etc/docker/daemon.json <<-'EOF'{  "registry-mirrors": ["https://123456.mirror.aliyuncs.com"]}EOFsystemctl daemon-reload#网络优化echo "net.ipv4.ip_forward=1" >> /etc/sysctl.confsysctl -pservice network restart systemctl restart docker#检验容器是否启动完成docker imagesif [ $? -eq 0 ];then    echo "Docker启动完成"else    echo "ERROR"    systemctl status docker    exit 1fi

为flannel网络分配子网段,并注入etcd数据库中

[root@node2 bin]# /opt/etcd/bin/etcdctl --ca-file=/opt/etcd/ssl/ca.pem \--cert-file=/opt/etcd/ssl/server.pem \--key-file=/opt/etcd/ssl/server-key.pem \--endpoints="https://192.168.142.220:2379,https://192.168.142.136:2379,https://192.168.142.132:2379" set /coreos.com/network/config '{"Network":"172.17.0.0/16","Backend":{"Type":"vxlan"}}'

解压安装flannel二进制软件包

[root@node2 ~]# tar zxvf flannel-v0.10.0-linux-amd64.tar.gzflanneldmk-docker-opts.shREADME.md//建立工作目录[root@node2 ~]# mkdir -p /opt/kubernetes/{cfg,ssl,bin}//移动至工作目录[root@node2 ~]# mv flanneld mk-docker-opts.sh /opt/kubernetes/bin/

更改flannel配置文件

[root@node2 ~]# cat </opt/kubernetes/cfg/flanneld.cfgFLANNEL_OPTIONS="--etcd-endpoints=https://192.168.142.220:2379,https://192.168.142.132:2379,https://192.168.142.136:2379 \-etcd-cafile=/opt/etcd/ssl/ca.pem \-etcd-certfile=/opt/etcd/ssl/server.pem \-etcd-keyfile=/opt/etcd/ssl/server-key.pem EOF

编写启动脚本

[root@node2 ~]# cat </usr/lib/systemd/system/flanneld.service[Unit]Description=Flanneld overlay address etcd agentAfter=network-online.target network.targetBefore=docker.service[Service]Type=notifyEnvironmentFile=/opt/kubernetes/cfg/flanneld.cfgExecStart=/opt/kubernetes/bin/flanneld --ip-masq \$FLANNEL_OPTIONSExecStartPost=/opt/kubernetes/bin/mk-docker-opts.sh -k DOCKER_NETWORK_OPTIONS -d /run/flannel/subnet.envRestart=on-failure[Install]WantedBy=multi-user.targetEOF

启动服务

[root@node2 bin]# chmod +x /usr/lib/systemd/system/flanneld.service[root@node2 bin]# systemctl start flanneld.service[root@node2 bin]# systemctl status flanneld.service[root@node2 bin]# systemctl enable flanneld.service

这里启动后会生成一个flannel的虚拟网卡

设置docker容器连接上flannel网络

[root@node2 bin]# vim /usr/lib/systemd/system/docker.service[Unit]Description=Docker Application Container EngineDocumentation=https://docs.docker.comBindsTo=containerd.serviceAfter=network-online.target firewalld.service containerd.serviceWants=network-online.targetRequires=docker.socket[Service]Type=notifyEnvironmentFile=/run/flannel/subnet.env              //添加这一行ExecStart=/usr/bin/dockerd $DOCKER_NETWORK_OPTIONS(添加该变量,加入flannel网络中) -H fd:// --containerd=/run/containerd/containerd.sockExecReload=/bin/kill -s HUP $MAINPIDTimeoutSec=0RestartSec=2Restart=always

检查自身分配的子网段(不是必须的)

[root@node2 bin]# cat /run/flannel/subnet.envDOCKER_OPT_BIP="--bip=172.17.34.1/24"     //给docker分配的网关DOCKER_OPT_IPMASQ="--ip-masq=false"DOCKER_OPT_MTU="--mtu=1450"DOCKER_NETWORK_OPTIONS=" --bip=172.17.34.1/24 --ip-masq=false --mtu=1450"

重启容器使配置文件生效

[root@node2 bin]# systemctl daemon-reload[root@node2 bin]# systemctl restart docker

检查flannel网络互通性

node1→node2

node2→node1

未完待续~~~

网络 容器 分配 脚本 阿里 服务 地址 引擎 文件 目录 网段 节点 角色 镜像 工作 检查 配置 不同 安全 一行 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 两会智慧城市网络安全问题 甘肃智慧管理平台软件开发 科技互联网企业面临强监管 华为服务器管理口进不去 数据库技术对地铁的技术 杭州游卡网络技术公司怎么样 网络安全定义与内容 转发是不是在服务器发生的 成都职工直播网络安全 民治网络技术公司 江苏前端软件开发哪家专业 数据库中生成拼音语句 中兴校招软件开发在线笔试题 数据库服务器故障怎么解决 使用什么软件开发模型例题 长沙矩阵网络技术有限公司 软件开发的入学门槛 网络安全模式怎么调整 数据库文件过大 怎么处理 共建网络安全共享内容 系统数据库逻辑结构设计 远程服务器管理工具没有nfs 北邮 考研 计算机 数据库 成都服务器报废选哪家 搭建centos7云服务器教学 江苏前端软件开发哪家专业 中兴校招软件开发在线笔试题 mybatis使用数据库 更改网络安全密钥不匹配 确保网络安全目标的达成
0