成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Kubernetes 網(wǎng)絡(luò)插件 Calico 完全運(yùn)維指南

運(yùn)維
Calico 是一種開源網(wǎng)絡(luò)和網(wǎng)絡(luò)安全解決方案,適用于容器,虛擬機(jī)和基于主機(jī)的本機(jī)工作負(fù)載。Calico 支持廣泛的平臺,包括 Kubernetes,docker,OpenStack 和裸機(jī)服務(wù)。Calico 后端支持多種網(wǎng)絡(luò)模式。

適用范圍

本文檔測試范圍:

概述

Calico 是一種開源網(wǎng)絡(luò)和網(wǎng)絡(luò)安全解決方案,適用于容器,虛擬機(jī)和基于主機(jī)的本機(jī)工作負(fù)載。Calico 支持廣泛的平臺,包括 Kubernetes,docker,OpenStack 和裸機(jī)服務(wù)。Calico 后端支持多種網(wǎng)絡(luò)模式。

  • BGP 模式:將節(jié)點(diǎn)做為虛擬路由器通過 BGP 路由協(xié)議來實(shí)現(xiàn)集群內(nèi)容器之間的網(wǎng)絡(luò)訪問。
  • IPIP 模式:在原有 IP 報(bào)文中封裝一個新的 IP 報(bào)文,新的 IP 報(bào)文中將源地址 IP 和目的地址 IP 都修改為對端宿主機(jī) IP。
  • cross-subnet:Calico-ipip 模式和 calico-bgp 模式都有對應(yīng)的局限性,對于一些主機(jī)跨子網(wǎng)而又無法使網(wǎng)絡(luò)設(shè)備使用 BGP 的場景可以使用 cross-subnet 模式,實(shí)現(xiàn)同子網(wǎng)機(jī)器使用 calico-BGP 模式,跨子網(wǎng)機(jī)器使用 calico-ipip 模式。

calico 切換 BGP 模式

部署完成后默認(rèn)使用 calico-ipip 的模式,通過在節(jié)點(diǎn)的路由即可得知,通往其他節(jié)點(diǎn)路由通過 tunl0 網(wǎng)卡出去

修改為 BGP 網(wǎng)絡(luò)模式,在 system 項(xiàng)目中修改 calico-node daemonset

修改CALICO_IPV4POOL_IPIP改為 off,添加新環(huán)境變量FELIX_IPINIPENABLED為 false

修改完成后對節(jié)點(diǎn)進(jìn)行重啟,等待恢復(fù)后查看主機(jī)路由,與 ipip 最大區(qū)別在于去往其他節(jié)點(diǎn)的路由,由 Tunnel0 走向網(wǎng)絡(luò)網(wǎng)卡。

calico 切換 cross-subnet 模式

Calico-ipip 模式和 calico-bgp 模式都有對應(yīng)的局限性,對于一些主機(jī)跨子網(wǎng)而又無法使網(wǎng)絡(luò)設(shè)備使用 BGP 的場景可以使用 cross-subnet 模式,實(shí)現(xiàn)同子網(wǎng)機(jī)器使用 calico-BGP 模式,跨子網(wǎng)機(jī)器使用 calico-ipip 模式。

部署集群網(wǎng)絡(luò)選擇 calico 網(wǎng)絡(luò)插件

默認(rèn)部署出來是 calico 的 ip-in-ip 的模式 查看宿主機(jī)網(wǎng)卡,會發(fā)現(xiàn)多了個 tunl0 網(wǎng)卡,這個是建立 ip 隧道的網(wǎng)卡

去其他主機(jī)的路由都是走 tunl0 網(wǎng)卡出去

切換到 cross-subnet 模式

kubectl edit ipPool/default-ipv4-ippool

將 ipipMode 改為 crossSubnet

在 UI 將 calico-node 的 POD 刪了重建

重啟檢查 calico 網(wǎng)絡(luò)

可以看見同子網(wǎng)的主機(jī)出口走的是 bgp,不同子網(wǎng)主機(jī)走的是 tunl0 網(wǎng)卡走 ipip 模式

創(chuàng)建應(yīng)用測試跨主機(jī)網(wǎng)絡(luò),在不同主機(jī)上互相 ping 測試,看看跨主機(jī)網(wǎng)絡(luò)是否正常。

配置 Route reflector

安裝 calicoctl

安裝方式有以下幾種

  • Single host 上面 binary 安裝
  • Single host 上面 continer 安裝
  • 作為 k8s pod 運(yùn)行

實(shí)際經(jīng)驗(yàn):

Binary 方式在集群里面的一臺 worker 節(jié)點(diǎn)安裝(比如 RR),calicoctl 會檢測 bird/felix 的運(yùn)行狀態(tài)。在非 calico node 節(jié)點(diǎn)運(yùn)行只能使用部分命令,不能運(yùn)行 calico node 相關(guān)命令。

通過配置 calicoctl 來對 calico 進(jìn)行控制,通常情況下建議將

curl -O -L  https://github.com/projectcalico/calicoctl/releases/download/v3.13.3/calicoctl

配置可執(zhí)行權(quán)限

chmod +x calicoctl

復(fù)制的/usr/bin/目錄

cp calicoctl /usr/bin/

配置 calicoctl 連接 Kubernetes 集群

export CALICO_DATASTORE_TYPE=kubernetes
export CALICO_KUBECONFIG=~/.kube/config
calicoctl node status

calico node-to-node mesh

默認(rèn)情況下 calico 采用 node-to-node mesh 方式 ,為了防止 BGP 路由環(huán)路,BGP 協(xié)議規(guī)定在一個 AS(自治系統(tǒng))內(nèi)部,IBGP 路由器之間只能傳一跳路由信息,所以在一個 AS 內(nèi)部,IBGP 路由器之間為了學(xué)習(xí)路由信息需要建立全互聯(lián)的對等體關(guān)系,但是當(dāng)一個 AS 規(guī)模很大的時(shí)候,這種全互聯(lián)的對等體關(guān)系維護(hù)會大量消耗網(wǎng)絡(luò)和 CPU 資源,所以這種情況下就需要建立路由反射器以減少 IBGP 路由器之間的對等體關(guān)系數(shù)量。

Route reflector 角色介紹

早期 calico 版本提供專門的 route reflector 鏡像,在新版本 calico node 內(nèi)置集成 route reflector 功能。Route reflector 可以是以下角色:

  • 集群內(nèi)部的 node 節(jié)點(diǎn)
  • 集群外部節(jié)點(diǎn)運(yùn)行 calico node
  • 其他支持 route reflector 的軟件或者設(shè)備。

這里以一個集群內(nèi)部的 node 節(jié)點(diǎn)為例:

關(guān)閉 node-to-node mesh

cat <<EOF | calicoctl apply -f -
apiVersion: projectcalico.org/v3
kind: BGPConfiguration
metadata:
name: default
spec:
logSeverityScreen: Info
nodeToNodeMeshEnabled: false
asNumber: 63400
EOF

設(shè)置 Route reflector

配置 Route reflector 支持多種配置方式如:1、支持配置全局 BGP peer,。2、支持針對單個節(jié)點(diǎn)進(jìn)行配置 BGP Peer。也可以將 calico 節(jié)點(diǎn)充當(dāng) Route reflector 這里以配置 calico 節(jié)點(diǎn)充當(dāng) Router reflector 為例。

配置節(jié)點(diǎn)充當(dāng) BGP Route Reflector

可將 Calico 節(jié)點(diǎn)配置為充當(dāng)路由反射器。為此,要用作路由反射器的每個節(jié)點(diǎn)必須具有群集 ID-通常是未使用的 IPv4 地址。

要將節(jié)點(diǎn)配置為集群 ID 為 244.0.0.1 的路由反射器,請運(yùn)行以下命令。這里將節(jié)點(diǎn)名為 rke-node4 的節(jié)點(diǎn)配置為 Route Reflector,若一個集群中要配置主備 rr,為了防止 rr 之間的路由環(huán)路,需要將集群 ID 配置成一樣

calicoctl patch node rke-node4 -p '{"spec": {"bgp": {"routeReflectorClusterID": "244.0.0.1"}}}'

給節(jié)點(diǎn)打上對應(yīng)的 label 標(biāo)記該節(jié)點(diǎn)以表明它是 Route Reflector,從而允許 BGPPeer 資源選擇它。

kubectl label node rke-node4 route-reflector=true

創(chuàng)建 BGPPeer

export CALICO_DATASTORE_TYPE=kubernetes
export CALICO_KUBECONFIG=~/.kube/config
cat <<EOF | calicoctl apply -f -
kind: BGPPeer
apiVersion: projectcalico.org/v3
metadata:
name: peer-with-route-reflectors
spec:
nodeSelector: all()
peerSelector: route-reflector == 'true'
EOF

查看 BGP 節(jié)點(diǎn)狀態(tài)

node 上查看,peer type 由 node-to-node mesh 變?yōu)?node specific

Route Reflector 上節(jié)點(diǎn)查看,節(jié)點(diǎn)已正常建立連接

設(shè)置 veth 網(wǎng)卡 mtu

通常,通過使用最高 MTU 值(不會在路徑上引起碎片或丟包)來實(shí)現(xiàn)最高性能。對于給定的流量速率,最大帶寬增加,CPU 消耗可能下降。對于一些支持 jumbo frames 的網(wǎng)絡(luò)設(shè)備,可以配置 calico 支持使用。

下表列舉了,常見幾種 MTU 配置下 calico 對應(yīng)的網(wǎng)卡 mtu 的配置

IPIP 和 VXLAN 協(xié)議中的 IP 中使用的額外報(bào)文頭,通過頭的大小減小了最小 MTU。(IP 中的 IP 使用 20 字節(jié)的標(biāo)頭,而 VXLAN 使用 50 字節(jié)的標(biāo)頭)。

如果在 Pod 網(wǎng)絡(luò)中的任何地方使用 VXLAN,請將 MTU 大小配置為“物理網(wǎng)絡(luò) MTU 大小減去 50”。如果僅在 IP 中使用 IP,則將 MTU 大小配置為“物理網(wǎng)絡(luò) MTU 大小減去 20” 。

將工作負(fù)載端點(diǎn) MTU 和隧道 MTU 設(shè)置為相同的值

配置方法:

升級集群

配置網(wǎng)卡 MTU,此時(shí)通過 system 項(xiàng)目下 calico-config 文件可以看見對應(yīng)的 mtu 設(shè)置

創(chuàng)建 workload 查看 POD 網(wǎng)卡 MTU 為 9001

設(shè)置全局 AS 號

默認(rèn)情況下,除非已為節(jié)點(diǎn)指定每個節(jié)點(diǎn)的 AS,否則所有 Calico 節(jié)點(diǎn)都使用 64512 自治系統(tǒng)。可以通過修改默認(rèn)的 BGPConfiguration 資源來更改所有節(jié)點(diǎn)的全局默認(rèn)值。以下示例命令將全局默認(rèn) AS 編號設(shè)置為 64513。

cat <<EOF | calicoctl apply -f -
apiVersion: projectcalico.org/v3
kind: BGPConfiguration
metadata:
name: default
spec:
logSeverityScreen: Info
nodeToNodeMeshEnabled: false
asNumber: 64513
EOF

設(shè)置單個主機(jī)和 AS 號

例如,以下命令將名為 node-1 的節(jié)點(diǎn)更改為屬于 AS 64514。

calicoctl patch node node-1 -p '{"spec": {"bgp": {“asNumber”: “64514”}}}'

修改節(jié)點(diǎn)地址范圍

此操作建議在部署完集群后立刻進(jìn)行。

默認(rèn)情況下 calico 在集群層面分配一個 10.42.0.0/16 的 CIDR 網(wǎng)段,在這基礎(chǔ)上在單獨(dú)為每個主機(jī)劃分一個單獨(dú)子網(wǎng)采用 26 位子網(wǎng)掩碼對應(yīng)的集群支持的節(jié)點(diǎn)數(shù)為 2^10=1024 節(jié)點(diǎn),單個子網(wǎng)最大支持 64 個 POD,當(dāng)單個子網(wǎng)對應(yīng) IP 消耗后,calico 會重新在本機(jī)上劃分一個新的子網(wǎng)如下,在集群對端主機(jī)可以看見對應(yīng)的多個 CIDR 路由信息。

注意:塊大小將影響節(jié)點(diǎn) POD 的 IP 地址分配和路由條目數(shù)量,如果主機(jī)在一個 CIDR 中分配所有地址,則將為其分配一個附加 CIDR。如果沒有更多可用的塊,則主機(jī)可以從分配給其他主機(jī)的 CIDR 中獲取地址。為借用的地址添加了特定的路由,這會影響路由表的大小。

將塊大小從默認(rèn)值增加(例如,使用/24 則為每個塊提供 256 個地址)意味著每個主機(jī)更少的塊,會減少路由。但是對應(yīng)的集群可容納主機(jī)數(shù)也對應(yīng)減少為 2^8。

從默認(rèn)值減小 CIDR 大小(例如,使用/28 為每個塊提供 16 個地址)意味著每個主機(jī)有更多 CIDR,因此會有更多路由。

calico 允許用戶修改對應(yīng)的 IP 池和集群 CIDR

創(chuàng)建和替換步驟

注意:刪除 Pod 時(shí),應(yīng)用程序會出現(xiàn)暫時(shí)不可用

  • 添加一個新的 IP 池。
  • 注意:新 IP 池必須在同一群集 CIDR 中。
  • 禁用舊的 IP 池(注意:禁用 IP 池只會阻止分配新的 IP 地址。它不會影響現(xiàn)有 POD 的聯(lián)網(wǎng))
  • 從舊的 IP 池中刪除 Pod。
  • 驗(yàn)證新的 Pod 是否從新的 IP 池中獲取地址。
  • 刪除舊的 IP 池。

定義 ippool 資源

apiVersion: projectcalico.org/v3
kind: IPPool
metadata:
name: my-ippool
spec:
blockSize: 24
cidr: 192.0.0.0/16
ipipMode: Always
natOutgoing: true

修改對應(yīng)的 blockSize 號

創(chuàng)建新的

calicoctl apply -f pool.yaml

將舊的 ippool 禁用

calicoctl patch ippool default-ipv4-ippool -p '{"spec": {"disabled": “true”}}'

創(chuàng)建 workload 測試

根據(jù)節(jié)點(diǎn)標(biāo)簽定義對應(yīng)的 ippool

Calico 能夠進(jìn)行配置,為不同拓?fù)渲付?IP 地址池。例如可能希望某些機(jī)架、地區(qū)、或者區(qū)域能夠從同一個 IP 池中獲取地址。這對于降低路由數(shù)量或者配合防火墻策略的要求會很有幫助。

給節(jié)點(diǎn)配置對應(yīng) label

kubectl label nodes kube-node-0 rack=0
kubectl label nodes kube-node-1 rack=1

通過標(biāo)簽定義對應(yīng)的節(jié)點(diǎn) IPpool

calicoctl create -f -<<EOF
apiVersion: projectcalico.org/v3
kind: IPPool
metadata:
name: rack-0-ippool
spec:
cidr: 192.168.0.0/24
ipipMode: Always
natOutgoing: true
nodeSelector: rack == "0"
EOF
calicoctl create -f -<<EOF
apiVersion: projectcalico.org/v3
kind: IPPool
metadata:
name: rack-1-ippool
spec:
cidr: 192.168.1.0/24
ipipMode: Always
natOutgoing: true
nodeSelector: rack == "1"
EOF

關(guān)閉 SNAT

默認(rèn)情況下,calico 訪問集群外網(wǎng)絡(luò)是通過 SNAT 成宿主機(jī) ip 方式,在一些金融客戶環(huán)境中為了能實(shí)現(xiàn)防火墻規(guī)則,需要直接針對 POD ip 進(jìn)行進(jìn)行規(guī)則配置,所以需要關(guān)閉 natOutgoing

kubectl edit ippool/default-ipv4-ippool

將 natOutgoing: true修改為natOutgoing: false

此時(shí),calico 網(wǎng)絡(luò)訪問集群外的 ip 源 ip 就不會 snat 成 宿主機(jī)的 ip 地址。

固定 POD IP

固定單個 ip

apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-test
spec:
selector:
matchLabels:
app: nginx
replicas: 1 # tells deployment to run 1 pods matching the template
template:
metadata:
labels:
app: nginx
annotations:
"cni.projectcalico.org/ipAddrs": "[\"10.42.210.135\"]"
spec:
containers:
- name: nginx
image: nginx:1.7.9
ports:
- containerPort: 80

固定多個 ip,只能通過 ippool 的方式。

cat ippool1.yaml
apiVersion: projectcalico.org/v3
kind: IPPool
metadata:
name: pool-1
spec:
blockSize: 31
cidr: 10.21.0.0/31
ipipMode: Never
natOutgoing: true
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-test
spec:
selector:
matchLabels:
app: nginx
replicas: 1 # tells deployment to run 1 pods matching the template
template:
metadata:
labels:
app: nginx
annotations:
"cni.projectcalico.org/ipv4pools": "[\"pool-1\"]"
spec:
containers:
- name: nginx
image: nginx:1.7.9
ports:
- containerPort: 80

原文鏈接:??https://www.bladewan.com/2020/11/18/calico_ops/??

責(zé)任編輯:龐桂玉 來源: 奇妙的Linux世界
相關(guān)推薦

2022-09-01 06:59:56

Kubernete云原生

2022-07-27 16:23:36

Kubernetes容器

2019-07-03 10:58:22

Kubernetes網(wǎng)絡(luò)插件

2023-10-08 18:07:42

Kubernetes開源容器

2019-12-27 10:33:43

運(yùn)維架構(gòu)技術(shù)

2020-03-06 16:00:04

KubernetesSpark容器

2010-01-21 22:19:25

網(wǎng)絡(luò)優(yōu)化運(yùn)維管理摩卡軟件

2009-12-04 19:18:04

freebsd手工配置網(wǎng)絡(luò)

2010-09-29 17:55:57

Cacti網(wǎng)絡(luò)監(jiān)控

2014-09-23 11:35:43

IT運(yùn)維管理

2020-10-30 08:34:58

Kubernetes運(yùn)維技巧

2022-05-02 18:45:33

Kubernetes網(wǎng)絡(luò)模型

2021-06-22 10:14:44

Kubernetes容器運(yùn)維

2015-08-10 10:56:59

運(yùn)維互聯(lián)網(wǎng)

2015-08-27 09:35:29

OpenStack運(yùn)維指南VLAN

2020-05-20 13:20:45

KubernetesSpark數(shù)據(jù)

2014-07-16 09:56:20

運(yùn)維運(yùn)營商

2021-09-10 15:16:19

Kubernetes核心組件運(yùn)維

2024-07-25 11:22:23

2022-06-06 21:46:32

Kubernetes網(wǎng)絡(luò)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 成人国产在线观看 | 亚洲国产成人精品在线 | 国产一区二区三区在线视频 | 亚洲精品视频在线看 | 99综合| 一级久久久久久 | 欧美激情久久久 | 国产激情毛片 | 国产色婷婷精品综合在线播放 | 亚洲五码久久 | 天堂在线www | 久久国产日韩 | 伊人网伊人 | 一级毛片成人免费看a | 人人艹人人爽 | 久久久久一区 | 欧美一区二区三区在线 | 精品亚洲一区二区三区 | 四虎成人av | 男人天堂网址 | 黄色大片在线视频 | 亚洲97| 国产精品久久久久aaaa樱花 | 在线免费观看a级片 | 欧美日韩亚洲系列 | 欧美成人免费在线视频 | 国产成人网 | www狠狠干 | 精品成人av| 成人精品影院 | 免费欧美 | 亚洲视频一区 | 国产成人高清在线观看 | 九九九久久国产免费 | 国产清纯白嫩初高生视频在线观看 | 中文字幕一区二区在线观看 | 自拍视频精品 | 国产精品一区二区三区四区 | 日本大片在线播放 | 成人在线一区二区 | 欧美视频在线免费 |