二进制部署K8S单Master群集(二)Docker的安装、Flannel网络部署
文章目录软件介绍Node节点上安装dockerFlannel网络概念介绍Flannel网络部署部署完成的检测软件介绍Docker版本:19.03Flannel版本:0.10Node节点上安装docker安装依赖包yum install -y yum-utils device-mapper-persistent-data lvm2加载docker源yum-config-...
·
软件介绍
- Docker版本:19.03
- Flannel版本:0.10
Node节点上安装docker
- 安装依赖包
yum install -y yum-utils device-mapper-persistent-data lvm2
- 加载docker源
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
- 安装docker
yum install -y docker-ce
- 镜像加速
mkdir -p /etc/docker
tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://tmywam8k.mirror.aliyuncs.com"]
}
EOF
- 启动docker服务
systemctl daemon-reload
systemctl start docker
Flannel网络概念介绍
- Vxlan网络图
- Overlay Network:
覆盖网络,在网络基础上叠加一种虚拟网络技术模式,该网络中的主机通过虚拟链路连接起来。 - Vxlan:
将数据包封装到UDP中,并使用基础网络的IP/MAC作为外层报文头进行封装,然后再以太网上传输,到达目的地后由隧道端点解封装并将数据发送给目标地址。 - Flannel:
是Overlay网络的一种,也是将源数据包封装在另一种网络包里进行路由转发和通信。目前支持UDP,Vxlan,AWS VPC和GCE路由等数据转发方式。
Flannel网络部署
- 写入分配的子网段到etcd,供flanneld使用(#master上)
/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.18.10:2379,https://192.168.18.20:2379,https://192.168.18.30:2379" \
set /coreos.com/network/config '{ "Network": "172.17.0.0/16", "Backend": {"Type": "vxlan"}}'
- 下载二进制包(必须部署在node节点,master节点可选部署)
https://github.com/coreos/flannel/releases
#下载:flannel-v0.10.0-linux-amd64.tar.gz
wget https://github.com/coreos/flannel/releases/download/v0.10.0/flannel-v0.10.0-linux-amd64.tar.gz
- 创建工作目录
mkdir -p /opt/kubernetes/{cfg,ssl,bin}
- 解压包,将执行文件放入目录中
tar -zxvf flannel-v0.10.0-linux-amd64.tar.gz
mv flanneld mk-docker-opts.sh /opt/kubernetes/bin/
- 创建flannel配置文件
cat <<EOF >/opt/kubernetes/cfg/flanneld
FLANNEL_OPTIONS="--etcd-endpoints=https://192.168.18.10:2379,https://192.168.18.20:2379,https://192.168.18.30:2379 \
-etcd-cafile=/opt/etcd/ssl/ca.pem \
-etcd-certfile=/opt/etcd/ssl/server.pem \
-etcd-keyfile=/opt/etcd/ssl/server-key.pem"
- 设置systemctl启动flanneld服务
cat <<EOF >/usr/lib/systemd/system/flanneld.service
[Unit]
Description=Flanneld overlay address etcd agent
After=network-online.target network.target
Before=docker.service
[Service]
Type=notify
EnvironmentFile=/opt/kubernetes/cfg/flanneld
ExecStart=/opt/kubernetes/bin/flanneld --ip-masq $FLANNEL_OPTIONS
ExecStartPost=/opt/kubernetes/bin/mk-docker-opts.sh -k DOCKER_NETWORK_OPTIONS -d /run/flannel/subnet.env
Restart=on-failure
[Install]
WantedBy=multi-user.target
EOF
- 修改docker.service文件
vim /usr/lib/systemd/system/docker.service
- 使得docker与flannel在同一网段
- 重新启动flanneld与docker
systemctl start flannel
systemctl daemon-reload
systemctl restart docker
- 另一台节点我们可以直接使用scp命令将配置文件直接拷到对应的目录中
部署完成的检测
- Node1:
docker0:172.17.36.1
flannel:172.17.36.0 - Node2:
docker0:172.17.26.1
flannel:172.17.26.0
- Node节点上ifconfig
ifconfig查看flannel网络与docker在同一网段就表示完成了,如下图所示
- 不同node节点上容器的通信
#在两个node节点上都执行
docker run -it busybox
- 用node1穿件的容器ping一下node2里docker的网关
- 两个容器之间的ping
- etcd中查看flannel信息(master上执行)
/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.18.10:2379,https://192.168.18.20:2379,https://192.168.18.30:2379" \
get /coreos.com/network/subnets/172.17.36.0-24
{“PublicIP”:“192.168.18.20”,“BackendType”:“vxlan”,“BackendData”:{“VtepMAC”:“96:d8:25:f6:bd:de”}}
这个子网被分配到node1节点上
/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.pe m \
--endpoints="https://192.168.18.10:2379,https://192.168.18.20:2379,https://192.168.18.30:2379" \
get /coreos.com/network/subnets/172.17.26.0-24
{“PublicIP”:“192.168.18.30”,“BackendType”:“vxlan”,“BackendData”:{“VtepMAC”:“22:b9:26:63:49:06”}}
这个子网被分配到node2节点上
更多推荐
已为社区贡献11条内容
所有评论(0)