K8S单master部署二:Flannel网络部署
发表于:2025-12-03 作者:千家信息网编辑
千家信息网最后更新 2025年12月03日,以下所有操作均在node节点进行Flannel网络概述Flannel通过给每台宿主机分配一个子网的方式为容器提供虚拟网络,它基于Linux TUN/TAP,使用UDP/VXLAN封装IP包来创建ove
千家信息网最后更新 2025年12月03日K8S单master部署二:Flannel网络部署
以下所有操作均在node节点进行
Flannel网络概述
Flannel通过给每台宿主机分配一个子网的方式为容器提供虚拟网络,它基于Linux TUN/TAP,使用UDP/VXLAN封装IP包来创建overlay网络,并借助etcd(也支持kubernetes)维护网络的分配情况。
服务器角色分配
| 角色 | 地址 | 安装组件 |
|---|---|---|
| master | 192.168.142.220 | kube-apiserver kube-controller-manager kube-scheduler etcd |
| node1 | 192.168.142.136 | kubelet kube-proxy docker flannel etcd |
| node2 | 192.168.142.132 | kubelet 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安全错误
数据库的锁怎样保障安全
在线论文数据库
怎样才能加强手机网络安全
常见的六种数据库约束有哪些
国家宣传周共筑网络安全防线
我的世界服务器配置命令
医院软件开发与运维
运营商服务器国产化
金蝶服务器数据怎么导出
pyqt5数据库项目
软件开发后的人工智能
国庆网络安全总结
华为服务器维护模式
国产数据库招聘条件
城关街道网络安全
数据软件开发方向专业介绍
数据库查的数据如何设置默认值
数据库怎样添加字段类型
摩尔庄园手游两个服务器一起玩
安卓linux服务器数据库
首都网络安全会
软件开发的资源瓶颈
网络安全专业收学生多的大学
护苖网络安全系列课堂
双牌软件开发设计
软件开发部门考核点
灵武市app软件开发多少费用
软件开发后的人工智能
石油行业网络安全经验分享案例
accdb数据库
工行软件开发加班多吗