溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

K8S單master部署二:Flannel網(wǎng)絡(luò)部署

發(fā)布時(shí)間:2020-05-20 16:49:19 來源:網(wǎng)絡(luò) 閱讀:441 作者:qq5d47f509174fe 欄目:云計(jì)算

以下所有操作均在node節(jié)點(diǎn)進(jìn)行


Flannel網(wǎng)絡(luò)概述

Flannel通過給每臺(tái)宿主機(jī)分配一個(gè)子網(wǎng)的方式為容器提供虛擬網(wǎng)絡(luò),它基于Linux TUN/TAP,使用UDP/VXLAN封裝IP包來創(chuàng)建overlay網(wǎng)絡(luò),并借助etcd(也支持kubernetes)維護(hù)網(wǎng)絡(luò)的分配情況。
K8S單master部署二:Flannel網(wǎng)絡(luò)部署


服務(wù)器角色分配

角色 地址 安裝組件
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網(wǎng)絡(luò)部署(所有node節(jié)點(diǎn))

安裝docker容器

docker引擎的安裝比較簡(jiǎn)單這里就不多講解了,直接貼腳本刷即可。

腳本如下:

#!/bin/bash
#Docker引擎部署
#安裝依賴包
yum install yum-utils device-mapper-persistent-data lvm2 -y

#設(shè)置阿里云鏡像源
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

#安裝Docker-ce
yum install -y docker-ce

#關(guān)閉防火墻及增強(qiáng)型安全功能
systemctl stop firewalld.service
setenforce 0

#啟動(dòng)Docker并設(shè)置為開機(jī)自啟動(dòng)
systemctl start docker.service
systemctl enable docker.service

#鏡像加速服務(wù)(每個(gè)人的阿里加速地址都不同,請(qǐng)自行前往阿里官網(wǎng)獲?。?tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://123456.mirror.aliyuncs.com"]
}
EOF
systemctl daemon-reload

#網(wǎng)絡(luò)優(yōu)化
echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
sysctl -p
service network restart 
systemctl restart docker

#檢驗(yàn)容器是否啟動(dòng)完成
docker images
if [ $? -eq 0 ];then
    echo "Docker啟動(dòng)完成"
else
    echo "ERROR"
    systemctl status docker
    exit 1
fi

為flannel網(wǎng)絡(luò)分配子網(wǎng)段,并注入etcd數(shù)據(jù)庫中

[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二進(jìn)制軟件包

[root@node2 ~]# tar zxvf flannel-v0.10.0-linux-amd64.tar.gz
flanneld
mk-docker-opts.sh
README.md

//建立工作目錄
[root@node2 ~]# mkdir -p /opt/kubernetes/{cfg,ssl,bin}
//移動(dòng)至工作目錄
[root@node2 ~]# mv flanneld mk-docker-opts.sh /opt/kubernetes/bin/

更改flannel配置文件

[root@node2 ~]# cat <<EOF >/opt/kubernetes/cfg/flanneld.cfg
FLANNEL_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

編寫啟動(dòng)腳本

[root@node2 ~]# 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.cfg
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

啟動(dòng)服務(wù)

[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

這里啟動(dòng)后會(huì)生成一個(gè)flannel的虛擬網(wǎng)卡

K8S單master部署二:Flannel網(wǎng)絡(luò)部署

設(shè)置docker容器連接上flannel網(wǎng)絡(luò)

[root@node2 bin]# vim /usr/lib/systemd/system/docker.service
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
BindsTo=containerd.service
After=network-online.target firewalld.service containerd.service
Wants=network-online.target
Requires=docker.socket

[Service]
Type=notify
EnvironmentFile=/run/flannel/subnet.env              //添加這一行
ExecStart=/usr/bin/dockerd $DOCKER_NETWORK_OPTIONS(添加該變量,加入flannel網(wǎng)絡(luò)中) -H fd:// --containerd=/run/containerd/containerd.sock
ExecReload=/bin/kill -s HUP $MAINPID
TimeoutSec=0
RestartSec=2
Restart=always

檢查自身分配的子網(wǎng)段(不是必須的)

[root@node2 bin]# cat /run/flannel/subnet.env
DOCKER_OPT_BIP="--bip=172.17.34.1/24"     //給docker分配的網(wǎng)關(guān)
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網(wǎng)絡(luò)互通性

node1→node2
K8S單master部署二:Flannel網(wǎng)絡(luò)部署
node2→node1

K8S單master部署二:Flannel網(wǎng)絡(luò)部署

未完待續(xù)~~~

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI