久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

如何進行calico在docker上的部署及驗證

175次閱讀
沒有評論

共計 5569 個字符,預計需要花費 14 分鐘才能閱讀完成。

本篇文章為大家展示了如何進行 calico 在 docker 上的部署及驗證,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

1. 背景

以下的部署以五臺服務器環境為例:

 服務器 1: hostname 為 etcdnode1, IP 為 192.168.56.100
服務器 2: hostname 為 etcdnode2, IP 為 192.168.56.101
服務器 3: hostname 為 etcdnode3, IP 為 192.168.56.102
服務器 2: hostname 為 hostnode1, IP 為 192.168.56.200
服務器 3: hostname 為 hostnode2, IP 為 192.168.56.201

其中,etcdnode1,etcdnode2 和 etcdnode3 將部署 etcd,作為 calico 網絡的后端分布式存儲;hostnode1 和 hostnode2 將部署 calico 網絡。

軟件背景:

? Ubuntu 16.04
? etcd - v3.1.10 
? Docker
? calicoctl - v1.6.1
? calico/node image - v.2.6.2
? calico, calico-ipam plugins - v1.11.0

2. 部署 2.1. etcd 部署

etcdnode1,etcdnode2 和 etcdnode3 部署 etcd,分別執行下面的命令。

2.1.1. 安裝 etcd

# cd /usr/local
# curl -Lhttps://github.com/coreos/etcd/releases/download/v3.1.10/etcd-v3.1.10-linux-amd64.tar.gz-o etcd-v3.1.10-linux-amd64.tar.gz
# tar -zxf etcd-v3.1.9-linux-amd64.tar.gz
# cd etcd-v3.1.9-linux-amd64
# cp etcd etcdctl /usr/bin
# mkdir -p /var/lib/etcd
# chmod -R a+rw /var/lib/etcd

2.1.2. 創建 systemd 服務文件

使用 vi 打開 /etc/systemd/system/etcd.service 文件。

[Unit]
Description=etcd
Documentation=https://github.com/coreos/etcd
[Service]
Type=notify
Restart=always
RestartSec=5s
LimitNOFILE=40000
TimeoutStartSec=0 
ExecStart=/usr/bin/etcd --name ${local_hostname} \
 --data-dir /var/lib/etcd \
 --listen-client-urls http://0.0.0.0:2379 \
 --listen-peer-urls http://0.0.0.0:2380 \
 --advertise-client-urls http://${local_IP}:2379\
 --initial-advertise-peer-urls http://${local_IP}:2380 \
 --initial-cluster *etcdnode1=http://192.168.56.100:2380,etcdnode2=http://192.168.56.101:2380, etcdnode3=http:// 192.168.56.102:2380 *
 --initial-cluster-token my-etcd-token \
 --initial-cluster-state new
 
[Install]
WantedBy=multi-user.target

這里需要注意的是,需要將 local_hostname、local_IP 都替換為節點自己的 hostname 和 IP 地址。

2.1.3. 啟動 etcd 服務

待所有 etcd 節點都同時執行上面的步驟后,再同時執行下面的步驟。

# systemctl daemon-reload
# systemctl enable etcd.service
# systemctl start etcd.service

2.1.4. 檢查 etcd 狀態

# etcdctl cluster-health //  檢查集群的健康狀態
# etcdctl member list //  返回集群的成員列表 

2.2. docker 部署

hostnode1 和 hostnode2 節點都需要配置。

2.2.1. 安裝 docker

# apt -y install docker.io

2.2.2. 修改 daemon.json

Docker 守護進程需要 /etc/docker/daemon.json 文件中配置 etcd 的存儲和通知功能。可通過 vi 打開 /etc/docker/daemon.json,并將 ${local_IP} 替換為各 dockerhost 自己的 IP 地址。

{
  cluster-store : **etcd://192.168.56.100:2379, 192.168.56.101:2379,192.168.56.102:2379** ,
  cluster-advertise : ${local_IP}:2375 ,
  hosts : [tcp://0.0.0.0:2375 , unix:///var/run/docker.sock]
}

2.2.3. 重啟 docker 服務

# systemctl restart docker.service

重啟需要一定的時間,完成后,確認 docker 配置是否生效

# docker info
Cluster Store: etcd://192.168.56.100:2379,192.168.56.101:2379, 192.168.56.102:2379
Cluster Advertise: 192.168.56.200:2375
Insecure Registries:
 127.0.0.0/8

2.3. calico 部署

每個 docker host 都需要配置。

2.3.1. 下載 calico

PS:這里我們下載和使用的是 v1.6.1 版本,截止到現在,calico 已經出現 v3.1.1 版本了。

# wget -O /usr/local/bin/calicoctlhttps://github.com/projectcalico/calicoctl/releases/download/v1.6.1/calicoctl
# chmod +x /usr/local/bin/calicoctl
# mkdir /var/lib/calico
# curl -L -o /var/lib/calico/calicohttps://github.com/projectcalico/cni-plugin/releases/download/v1.11.0/calico
# curl -L -o/var/lib/calico/calico-ipamhttps://github.com/projectcalico/cni-plugin/releases/download/v1.11.0/calico-ipam
# chmod +x /var/lib/calico/calico
# chmod +x/var/lib/calico/calico-ipam

2.3.2. 增加 calico 配置

# mkdir -p /etc/calico

然后修改 calico 的配置,在 /etc/calico/calicoctl.cfg 文件增加以下內容。這里,主要是增加 etcd 終端的配置,如果有多個 etcd 節點,可以使用逗號連接。

apiVersion: v1
kind: calicoApiConfig
metadata:
spec:
 datastoreType:  etcdv2 
 etcdEndpoints:  http:// 192.168.56.100:2379,http:// 192.168.56.101:2379,http://192.168.56.102:2379

2.3.3. 設置內核網絡參數

Calico 要求開啟“net.ipv4.conf.all.rp_filter”和“net.ipv4.ip_forward”等參數,但有些發行版默認并未開啟這些參數,因此需要手動開啟。

# echo “net.ipv4.conf.all.rp_filter=1” /etc/sysctl.conf
# echo “net.ipv4.ip_forward=1”  /etc/sysctl.conf
# sysctl -p

2.3.4. 啟動 calico/node 容器

啟動 calico/node 容器,可能需要聯網下載對應的鏡像。另外,${local_IP} 需要替換為各自的 docker host 的 IP 地址。

然后:

# calicoctl node run--node-image=calico/node:v2.6.2 --ip={local_IP}

檢查連接狀態。

# calicoctl node status
Calico process is running.
IPv4 BGP status
+----------------+-------------------+-------+------------+-------------+
| PEER ADDRESS | PEER TYPE | STATE | SINCE | INFO |
+----------------+-------------------+-------+------------+-------------+
| 192.168.56.201 | node-to-node mesh| up | 2017-11-06 | Established |
+----------------+-------------------+-------+------------+-------------+
IPv6 BGP status
No IPv6 peers found.

2.3.5. 創建 docker 網絡

注意:這一步只需要在任意一個 dockerhost 節點上創建即可,不同節點是共享 calico 網絡的。

# docker network create --driver calico--ipam-driver calico-ipam ${network name}

這里,我們創建一個名為“calico-network”的 calico 網絡。

# docker network create --driver calico--ipam-driver calico-ipam  calico-network

2.3.6. 驗證 calico 網絡

在 hostnode1 上執行命令

# docker run --net calico-network--name workload-A -tid busybox

在 hostnode2 上執行命令

# docker run --net calico-network--name workload-B -tid busybox

然后在容器 workload- A 上 ping 容器 workload- B 的 IP 地址,可以通就說明配置成功。

首先獲取 workload- B 的 IP 地址,在 hostnode2 上執行命令。

# docker exec workload-B hostname –i
192.168.0.17

然后在 hostnode1 上 ping 該 IP 地址。

# docker exec workload-A ping 192.168.0.17
PING 192.168.0.17 (192.168.0.17) 56(84)bytes of data.
64 bytes from 192.168.0.17: icmp_seq=1ttl=64 time=0.165 ms
…

Ping 通即表示不同 docker host 上使用同一個 calico 網絡的兩個容器網絡互通。

2.3.7. 配置 ingress 特性

如果需要 docker host 可以訪問容器網絡,以上面的例子,如果想在 hostnode2 上能訪問 workload- A 的 IP 地址,就需要配置該 calico 網絡的 ingress 特性。

先導出現有的配置。

# calicoctl get profile  calico-network -o json   profile.json

profile.json 的 ingress 部分,這里是一個進入流量的配置。我們再增加一個配置,尤其 source- nets 部分,內容大致如下:

ingress : [
 {
  action : allow ,
  source : {
  tag : calico-network 
 },
  destination : {}
 },
 {
  action : allow ,
  source : {
  nets : [
  192.168.56.1/24 
 ]
 },
  destination : {}
 }
 ],

然后替換修改過的 profile.json 文件。

# calicoctl replace -f profile.json

然后,在 hostnode2 上再用 ping 嘗試 workload- A 的 IP 地址,即可 ping 通。

上述內容就是如何進行 calico 在 docker 上的部署及驗證,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注丸趣 TV 行業資訊頻道。

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-08-25發表,共計5569字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 合江县| 金昌市| 太康县| 革吉县| 永康市| 嫩江县| 大厂| 南木林县| 广汉市| 和顺县| 板桥市| 沅江市| 星子县| 延长县| 西乌珠穆沁旗| 阿坝县| 嘉定区| 丹棱县| 嘉善县| 大悟县| 山西省| 西平县| 江门市| 夏河县| 吕梁市| 永丰县| 左贡县| 沁水县| 绥江县| 富平县| 扶绥县| 白水县| 盐源县| 临泽县| 邛崃市| 平江县| 普兰店市| 温州市| 榆社县| 马山县| 鄂伦春自治旗|