最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Docker使用Calico網(wǎng)絡(luò)模式配置及問(wèn)題處理方法

 更新時(shí)間:2022年11月30日 08:47:05   作者:Biuget-Golang  
這篇文章主要介紹了Docker使用Calico網(wǎng)絡(luò)模式配置及問(wèn)題處理,設(shè)計(jì)思想是Calico不使用隧道或者NAT來(lái)實(shí)現(xiàn)轉(zhuǎn)發(fā),而是巧妙的把所有二三層流量轉(zhuǎn)換成三層流量,并通過(guò)host上路由配置完成跨host轉(zhuǎn)發(fā),需要的朋友可以參考下

一.Calico介紹

Calico是一種容器之間互通的網(wǎng)絡(luò)方案,在虛擬化平臺(tái)中,比如OpenStack、Docker等都需要實(shí)現(xiàn)workloads之間互連,但同時(shí)也需要對(duì)容器做隔離控制,就像在Internet中的服務(wù)僅開放80端口、公有云的多租戶一樣,提供隔離和管控機(jī)制。而在多數(shù)的虛擬化平臺(tái)實(shí)現(xiàn)中,通常都使用二層隔離技術(shù)來(lái)實(shí)現(xiàn)容器的網(wǎng)絡(luò),這些二層技術(shù)有一些弊端,比如需要依賴VLAN、Bridge和隧道技術(shù)。其中Bridge帶來(lái)了復(fù)雜性,Vlan隔離和Tunnel隧道則消耗等多的資源并對(duì)物理環(huán)境有要求。隨著網(wǎng)絡(luò)規(guī)模的增大,整體會(huì)變得更加復(fù)雜。我們嘗試把Host當(dāng)做Internet中的路由器,使用BGP同步路由,并使用Iptables來(lái)做安全訪問(wèn)策略,最終設(shè)計(jì)出了Calico方案。

設(shè)計(jì)思想:Calico不使用隧道或者NAT來(lái)實(shí)現(xiàn)轉(zhuǎn)發(fā),而是巧妙的把所有二三層流量轉(zhuǎn)換成三層流量,并通過(guò)host上路由配置完成跨host轉(zhuǎn)發(fā)。

二.Calico優(yōu)勢(shì)

  • 更優(yōu)的資源利用

二層網(wǎng)絡(luò)通訊需要依賴廣播消息機(jī)制,廣播消息的開銷與host的數(shù)量呈指數(shù)級(jí)增長(zhǎng),Calico使用的三層路由方法,則完全抑制了二層廣播,減少了資源開銷。此外,二層網(wǎng)絡(luò)使用Vlan隔離技術(shù),天生有4096個(gè)規(guī)格限制,即便可以使用Vxlan解決,但Vxlan又帶來(lái)了隧道開銷的問(wèn)題。Calico不使用vlan或者vxlan技術(shù),使資源利用率更高。

  • 可擴(kuò)展性

Calico使用與Internet類似的方案,Internet的網(wǎng)絡(luò)比任何數(shù)據(jù)中心都大,Calico同樣天然具有擴(kuò)展性。

  • 簡(jiǎn)單更容易調(diào)試

由于沒(méi)有隧道,意味著workloads之間路徑更短,配置更少,在host之間更容易進(jìn)行debug調(diào)試。

  • 更少的依賴

Calico僅依賴三層路由可達(dá)

  • 可適配性

Calico較少的依賴性使它能適配所有的VM、Container、白盒或者混合環(huán)境場(chǎng)景。

三、環(huán)境介紹:

1、操作系統(tǒng):CentOS 7

2、主機(jī)結(jié)點(diǎn):node1(192.168.223.131) node2(192.168.223.130)

3、軟件版本:calicoctl(version v1.6.1) etcdctl(version: 3.3.11)  docker(version:20.10.21-ce)

[root@node2 ~]# cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)
修改兩個(gè)節(jié)點(diǎn)的主機(jī)名
[root@node1 ~]# hostnamectl --static set-hostname node1
[root@node1 ~]# echo "node1" > /etc/hostname
   
[root@node2 ~]# hostnamectl --static set-hostname node2
[root@node2 ~]# echo "node2" > /etc/hostname
關(guān)閉兩臺(tái)主機(jī)的防火墻。若開啟iptables防火墻,則需要打開2380端口通信。
[root@node1 ~]# systemctl disable firewalld.service
[root@node1 ~]# systemctl stop firewalld.service
[root@node1 ~]# iptables -F
[root@node1 ~]# firewall-cmd --state
not running
在兩臺(tái)機(jī)器上都要設(shè)置hosts,均執(zhí)行如下命令:
[root@node1 ~]# vim /etc/hosts
192.168.223.131     node1
192.168.223.130     node2
兩臺(tái)集機(jī)器上的ip轉(zhuǎn)發(fā)功能打開
[root@node1 ~]# echo 1 > /proc/sys/net/ipv4/ip_forward
[root@node1 ~]# vim /etc/sysctl.conf
......
net.ipv4.conf.all.rp_filter=1
net.ipv4.ip_forward=1
[root@node1 ~]# sysctl -p

四、配置ETCD集群

1、兩臺(tái)結(jié)點(diǎn)安裝Etcd軟件包
[root@node1 ~]# yum install etcd -y

2、兩臺(tái)結(jié)點(diǎn)配置ETCD集群模式
[root@node1 ~]# vim /etc/etcd/etcd.conf 
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
ETCD_LISTEN_PEER_URLS="http://192.168.223.131:2380"
ETCD_LISTEN_CLIENT_URLS="http://192.168.223.131:2379"
根據(jù)不同主機(jī)進(jìn)行相應(yīng)修改,分別為node1 node2
ETCD_NAME="node1"

根據(jù)不同主機(jī)進(jìn)行相應(yīng)修改,分別為192.168.223.131\192.168.223.130
ETCD_INITIAL_ADVERTISE_PEER_URLS="http://192.168.223.131:2380"
ETCD_ADVERTISE_CLIENT_URLS="http://192.168.223.131:2379"
ETCD_INITIAL_CLUSTER="node2=http://192.168.223.130:2380,node1=http://192.168.223.131:2380"
3、啟用Etcd服務(wù),并測(cè)試是集群是否配置正確
[root@node1 ~]# systemctl start etcd
[root@node1 ~]# export ETCDCTL_API=2   #根據(jù)節(jié)點(diǎn)設(shè)置數(shù)量
[root@node1 ~]# etcdctl member list
afc1b952a7b88713: name=node1 peerURLs=http://192.168.223.131:2380 clientURLs=http://192.168.223.1 31:2379 isLeader=true
fd636eb41152ae48: name=node2 peerURLs=http://192.168.223.130:2380 clientURLs=http://192.168.223.1 30:2379 isLeader=false

  • 錯(cuò)誤處理:Job for etcd.service failed because the control process exited with error code. See "systemctl status etcd.service" and "journalctl -xe" for details.
cd /var/lib/etcd/default.etcd 刪除這個(gè)目錄下所有文件,如有重要數(shù)據(jù)請(qǐng)謹(jǐn)慎操作。
  • 錯(cuò)誤處理:etcdctl member list

Error:  client: etcd cluster is unavailable or misconfigured; error #0: dial tcp 127.0.0.1:4001: connect: connection refused
; error #1: dial tcp 127.0.0.1:2379: connect: connection refused

error #0: dial tcp 127.0.0.1:4001: connect: connection refused
error #1: dial tcp 127.0.0.1:2379: connect: connection refused

解決:vim /etc/etcd/etcd.conf  第六行結(jié)尾加上 ,http://127.0.0.1:2379
systemctl restart etcd   重啟解決

  • 錯(cuò)誤處理:publish error: etcdserver: request timed out
解決:所有節(jié)點(diǎn)同時(shí)啟動(dòng)

五、 安裝Docker,配置使用集群存儲(chǔ)

1、安裝docker

2、配置Docker守護(hù)程序使用有群集存儲(chǔ)
[root@node1 ~]# vim /etc/docker/daemon.json

{
  "registry-mirrors": ["https://7i5u59ls.mirror.aliyuncs.com"],
  "cluster-store": "etcd://192.168.223.131:2379"
}
3、重啟Docker進(jìn)程,并檢查配置是否正確
[root@node1 ~]# systemctl restart docker
[root@node1 ~]# docker info | grep "Cluster Store"
Cluster Store: etcd://192.168.223.131:2379

六、配置calico基于sysinit方式啟動(dòng)

1、兩臺(tái)主機(jī)分別添加calico-node配置文件
[root@node1 calico]# vim /etc/calico/calico.env 
ETCD_ENDPOINTS="http://192.168.223.131:2379,http://192.168.223.130:2379"
ETCD_CA_FILE=""
ETCD_CERT_FILE=""
ETCD_KEY_FILE=""
CALICO_NODENAME="node1"
CALICO_NO_DEFAULT_POOLS=""
CALICO_IP="192.168.223.131"
CALICO_IP6=""
CALICO_AS=""
CALICO_LIBNETWORK_ENABLED=true
CALICO_NETWORKING_BACKEND=bird
2、兩臺(tái)主機(jī)分別添加calico-node sysinit配置文件
[root@node1 calico]# vim /etc/systemd/system/calico-node.service 
[Unit]
Description=calico-node
After=docker.service
Requires=docker.service

[Service]
EnvironmentFile=/etc/calico/calico.env
ExecStartPre=-/usr/bin/docker rm -f calico-node
ExecStart=/usr/bin/docker run --net=host --privileged \
--name=calico-node \
-e NODENAME=${CALICO_NODENAME} \
-e IP=${CALICO_IP} \
-e IP6=${CALICO_IP6} \
-e CALICO_NETWORKING_BACKEND=${CALICO_NETWORKING_BACKEND} \
-e AS=${CALICO_AS} \
-e NO_DEFAULT_POOLS=${CALICO_NO_DEFAULT_POOLS} \
-e CALICO_LIBNETWORK_ENABLED=${CALICO_LIBNETWORK_ENABLED} \
-e ETCD_ENDPOINTS=${ETCD_ENDPOINTS} \
-e ETCD_CA_CERT_FILE=${ETCD_CA_CERT_FILE} \
-e ETCD_CERT_FILE=${ETCD_CERT_FILE} \
-e ETCD_KEY_FILE=${ETCD_KEY_FILE} \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /var/log/calico:/var/log/calico \
-v /run/docker/plugins:/run/docker/plugins \
-v /lib/modules:/lib/modules \
-v /var/run/calico:/var/run/calico \
calico/node:v2.6.1
ExecStop=-/usr/bin/docker stop calico-node
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s

[Install]
WantedBy=multi-user.target
3、兩臺(tái)主機(jī)分別啟動(dòng)calico-node服務(wù)
[root@node1 calico]# systemctl daemon-reload
[root@node1 calico]# systemctl start calico-node
[root@node1 calico]# tail -f /var/log/messages
...
Mar 11 12:23:46 node1 docker: Starting libnetwork service
Mar 11 12:23:46 node1 docker: Calico node started successfully
4、下載calicoctl二進(jìn)制文件,并添加執(zhí)行權(quán)限
[root@node1 calico]# wget -O /usr/local/bin/calicoctl https://github.com/projectcalico/calicoctl/releases/download/v1.6.1/calicoctl
[root@node1 calico]# chmod +x /usr/local/bin/calicoctl
[root@node1 system]# calicoctl node status
Calico process is running.
IPv4 BGP status
+-----------------+-------------------+-------+----------+-------------+
|  PEER ADDRESS   |     PEER TYPE     | STATE |  SINCE   |    INFO     |
+-----------------+-------------------+-------+----------+-------------+
| 192.168.223.131 | node-to-node mesh | up    | 10:29:48 | Established |
+-----------------+-------------------+-------+----------+-------------+
IPv6 BGP status
No IPv6 peers found.
[root@node1 calico]# calicoctl get node
NAME    
node1   
node2   
node3

七、測(cè)試calico網(wǎng)絡(luò)

1、創(chuàng)建網(wǎng)絡(luò)
[root@node1 ~]# docker network create --driver calico --ipam-driver calico-ipam net1
#在任意一臺(tái)主機(jī),都可以看到新增的網(wǎng)絡(luò)插件
[root@node1 ~]# docker network ls
2、在node1 node2 node3分別建立一個(gè)容器,查看IP地址
[root@node1 ~]# docker run --net net1 --name workload-A -tid busybox
[root@node1 ~]# docker exec -it workload-A ip addr
4: cali0@if5: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue
link/ether ee:ee:ee:ee:ee:ee brd ff:ff:ff:ff:ff:ff
inet 192.168.166.128/32 scope global cali0
valid_lft forever preferred_lft forever
[root@node2 ~]# docker run --net net1 --name workload-B -tid busybox
[root@node2 ~]# docker exec -it workload-B ip addr
4: cali0@if5: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue
link/ether ee:ee:ee:ee:ee:ee brd ff:ff:ff:ff:ff:ff
inet 192.168.104.0/32 scope global cali0
valid_lft forever preferred_lft forever
3、在node1的容器中(workload-A),ping各結(jié)點(diǎn)的容器IP,測(cè)試網(wǎng)絡(luò)是否正常
docker exec workload-A ping 192.168.104.0

PING 192.168.104.0 (192.168.104.0): 56 data bytes
64 bytes from 192.168.104.0: seq=0 ttl=62 time=0.435 ms
64 bytes from 192.168.104.0: seq=1 ttl=62 time=0.507 ms
4、查看各結(jié)點(diǎn)的路由表
[root@node1 ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.223.2   0.0.0.0         UG    100    0        0 ens33
172.17.0.0      0.0.0.0         255.255.0.0     U     0      0        0 docker0
192.168.104.0   192.168.223.130 255.255.255.192 UG    0      0        0 ens33
192.168.166.128 0.0.0.0         255.255.255.255 UH    0      0        0 calic5c95dfa8ad
192.168.166.128 0.0.0.0         255.255.255.192 U     0      0        0 *
192.168.223.0   0.0.0.0         255.255.255.0   U     100    0        0 ens33

參考:

Docker 使用Calico插件配置網(wǎng)絡(luò) - 重啟一把梭 - 博客園 (cnblogs.com)

【錯(cuò)誤解決】新建etcd集群報(bào)錯(cuò):publish error: etcdserver: request timed out_安安csdn的博客-CSDN博客

Error: client: etcd cluster is unavailable or misconfigured; error #0: dial tcp 127.0.0.1:4001: getsockopt: connection refused - 無(wú)蹤無(wú)影 - 博客園 (cnblogs.com)

到此這篇關(guān)于Docker使用Calico網(wǎng)絡(luò)模式配置及問(wèn)題處理的文章就介紹到這了,更多相關(guān)Docker Calico網(wǎng)絡(luò)模式內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Docker容器時(shí)間與宿主機(jī)不一致/宿主機(jī)時(shí)間不同步校驗(yàn)問(wèn)題

    Docker容器時(shí)間與宿主機(jī)不一致/宿主機(jī)時(shí)間不同步校驗(yàn)問(wèn)題

    在Docker容器中,若未單獨(dú)配置localtime,可能導(dǎo)致時(shí)間與宿主機(jī)不一致,例如UTC與CST(東八區(qū))相差8小時(shí),解決方法包括在啟動(dòng)時(shí)通過(guò)docker run添加時(shí)間參數(shù),使用Dockerfile設(shè)置,或通過(guò)docker-compose配置,對(duì)于已運(yùn)行的容器
    2024-10-10
  • 如何清理docker的overlay2 目錄

    如何清理docker的overlay2 目錄

    本文介紹了如何清理Docker的overlay2目錄,包括確認(rèn)overlay2目錄的位置、清理未使用的容器和鏡像、手動(dòng)清理overlay2目錄、清理日志文件、限制日志大小以及檢查磁盤空間,感興趣的朋友一起看看吧
    2025-03-03
  • Docker自動(dòng)化構(gòu)建Automated Build實(shí)現(xiàn)過(guò)程圖解

    Docker自動(dòng)化構(gòu)建Automated Build實(shí)現(xiàn)過(guò)程圖解

    這篇文章主要介紹了Docker自動(dòng)化構(gòu)建Automated Build實(shí)現(xiàn)過(guò)程圖解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-10-10
  • Docker一鍵部署springcloud項(xiàng)目的方法

    Docker一鍵部署springcloud項(xiàng)目的方法

    本文主要介紹了Docker一鍵部署springcloud項(xiàng)目的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-12-12
  • docker快速部署zabbix的方法

    docker快速部署zabbix的方法

    zabbix標(biāo)準(zhǔn)組件是分布式的,因此部署過(guò)程中需要?jiǎng)?chuàng)建多個(gè)容器,本文主要介紹了docker快速部署zabbix的方法,具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-01-01
  • 再見(jiàn) Docker如何5分鐘轉(zhuǎn)型 containerd

    再見(jiàn) Docker如何5分鐘轉(zhuǎn)型 containerd

    這篇文章主要介紹了再見(jiàn) Docker如何5分鐘轉(zhuǎn)型 containerd,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-03-03
  • docker run啟動(dòng)的容器掛掉了數(shù)據(jù)怎么辦

    docker run啟動(dòng)的容器掛掉了數(shù)據(jù)怎么辦

    這篇文章主要介紹了docker run啟動(dòng)的容器掛掉了,數(shù)據(jù)怎么辦,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-09-09
  • Docker 提交倉(cāng)庫(kù)的方法

    Docker 提交倉(cāng)庫(kù)的方法

    這篇文章主要介紹了Docker 提交倉(cāng)庫(kù)的方法,把我們東西上傳DockerHub,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-06-06
  • Docker配置redis哨兵模式的方法(多服務(wù)器上)

    Docker配置redis哨兵模式的方法(多服務(wù)器上)

    這篇文章主要介紹了Docker配置redis哨兵模式的方法(多服務(wù)器上),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-02-02
  • Docker 容器日志查看和清理的實(shí)現(xiàn)步驟

    Docker 容器日志查看和清理的實(shí)現(xiàn)步驟

    在處理Docker容器的過(guò)程中,經(jīng)常需要查看容器的日志輸出來(lái)排查問(wèn)題或者進(jìn)行系統(tǒng)監(jiān)控,本文主要介紹了Docker容器日志查看和清理的實(shí)現(xiàn)步驟,感興趣的可以了解一下
    2023-11-11

最新評(píng)論

泰来县| 洛扎县| 得荣县| 德令哈市| 土默特右旗| 凯里市| 海城市| 巢湖市| 汉源县| 乌苏市| 大安市| 香河县| 珲春市| 乌兰察布市| 卓尼县| 泾源县| 青州市| 呼玛县| 扶余县| 定边县| 茶陵县| 南召县| 响水县| 苏尼特右旗| 大宁县| 涞水县| 布拖县| 龙游县| 花莲县| 上思县| 湖口县| 武安市| 华蓥市| 晋州市| 水富县| 兴国县| 洛扎县| 高碑店市| 广饶县| 沙雅县| 河间市|