在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

徹底移除Calico網(wǎng)絡(luò)插件

馬哥Linux運(yùn)維 ? 來(lái)源:馬哥Linux運(yùn)維 ? 2025-01-23 17:26 ? 次閱讀

0.前言

參考文檔:https://github.com/containernetworking/cni

Pod網(wǎng)絡(luò)插件,為了實(shí)現(xiàn)Pod網(wǎng)絡(luò)而需要的插件、組件。由于Kubernetes通過(guò)開(kāi)放的CNI接口來(lái)允許插件的接入,所以它又稱之為CNI網(wǎng)絡(luò)插件。

為了解決跨主機(jī)容器間通信問(wèn)題,市面上存在很多解決方案,為了兼容和規(guī)范這些解決方案,Kubernetes僅設(shè)計(jì)了網(wǎng)絡(luò)模型,卻將Pod網(wǎng)絡(luò)的實(shí)現(xiàn)交給了CNI網(wǎng)絡(luò)插件,并允許網(wǎng)絡(luò)插件通過(guò)標(biāo)準(zhǔn)的CNI(Container Network Interface,容器網(wǎng)絡(luò)接口)連接到容器管理系統(tǒng)。

CNI網(wǎng)絡(luò)插件主要解決的就是容器跨主機(jī)通信問(wèn)題而存在的,并使跨主機(jī)間運(yùn)行的Pod位于同一個(gè)網(wǎng)絡(luò)平面,其大致解決步驟通常有兩步:分配設(shè)置自定義容器網(wǎng)絡(luò)(PodIP在集群中全局唯一性)和實(shí)現(xiàn)容器網(wǎng)絡(luò)通信(處理方法通常有路由、覆蓋網(wǎng)絡(luò){Vxlan、IPIP}等等)。

每個(gè)Pod都會(huì)創(chuàng)建一個(gè)名叫“pause”的根容器,其他運(yùn)行的業(yè)務(wù)容器都是復(fù)制該容器的網(wǎng)絡(luò),這個(gè)容器就是Kubernetes為了自定義網(wǎng)絡(luò)等特殊功能而存在的。

CNI網(wǎng)絡(luò)插件分為以下四種:

MAIN,主要的,創(chuàng)建接口,主要網(wǎng)絡(luò)的實(shí)現(xiàn)。如:bridge、ipvlan、loopback、macvlan、ptp、vlan、host-device。

Windows,特用于Windows的MAIN插件。如:win-bridge、win-overlay。

IPAM,僅提供IP地址分配功能。如:dhcp、host-local、static

META,其他插件,通過(guò)調(diào)用第三方插件來(lái)實(shí)現(xiàn)網(wǎng)絡(luò)功能。如:tuning、portmap、bandwidth、sbr、firewall、flannel。

光單獨(dú)靠一種CNI網(wǎng)絡(luò)插件是無(wú)法實(shí)現(xiàn)完整的Pod網(wǎng)絡(luò)通信和更高級(jí)的網(wǎng)絡(luò)策略功能的,第三方組織可以靈活的組合這些CNI插件實(shí)現(xiàn)基本Pod網(wǎng)絡(luò)功能和更高級(jí)功能,所以市面上流行出來(lái)很多解決方案。

在現(xiàn)今,比較常用的流行的Pod網(wǎng)絡(luò)解決方案有Flannel和Calico(支持網(wǎng)絡(luò)策略功能)、Canal(由Flannel實(shí)現(xiàn)網(wǎng)絡(luò)通信+Calico提供網(wǎng)絡(luò)策略)。

1.Calico概述

參考文檔:https://projectcalico.docs.tigera.io/

Calico是一款廣泛采用、久經(jīng)考驗(yàn)的開(kāi)源網(wǎng)絡(luò)和網(wǎng)絡(luò)安全解決方案,適用于Kubernetes、虛擬機(jī)和裸機(jī)工作負(fù)載。與Flannel對(duì)比,Calico除了支持基本網(wǎng)絡(luò)功能的實(shí)現(xiàn)之外,它還支持全套Kubernetes網(wǎng)絡(luò)策略功能,以及在其之上擴(kuò)展網(wǎng)絡(luò)策略。

1.1.Calico組件

Calico主要由以下組件組成:

1.1.1.CNI Plugin

CNI網(wǎng)絡(luò)插件,Calico通過(guò)CNI網(wǎng)絡(luò)插件與kubelet關(guān)聯(lián),從而實(shí)現(xiàn)Pod網(wǎng)絡(luò)。

1.1.2.Calico Node

Calico節(jié)點(diǎn)代理是運(yùn)行在每個(gè)節(jié)點(diǎn)上的代理程序,負(fù)責(zé)管理節(jié)點(diǎn)路由信息、策略規(guī)則和創(chuàng)建Calico虛擬網(wǎng)絡(luò)設(shè)備。

Calico Node主要由以下子模塊程序組成:

Felix,Calico代理程序。運(yùn)行在每個(gè)節(jié)點(diǎn)上的守護(hù)進(jìn)程,它主要負(fù)責(zé)管理節(jié)點(diǎn)上網(wǎng)絡(luò)接口、為節(jié)點(diǎn)創(chuàng)建路由信息和ACL規(guī)則、以及報(bào)告當(dāng)前節(jié)點(diǎn)網(wǎng)絡(luò)的健康狀態(tài)給控制器等工作。

BIRD-BGP客戶端,BIRD是一個(gè)項(xiàng)目的簡(jiǎn)稱,全稱為BIRD Internet Routing Daemon,BIRD是一個(gè)類UNIX系統(tǒng)下旨在開(kāi)發(fā)一個(gè)功能齊全的IP路由守護(hù)進(jìn)程,它是一個(gè)路由軟件,可以實(shí)現(xiàn)多種路由協(xié)議,如BGP、OSPF、RIP等。在Calico中,BIRD是一個(gè)BGP客戶端,用于使用BGP協(xié)議廣播給其他主機(jī)動(dòng)態(tài)的學(xué)習(xí)路由規(guī)則。更多了解BIRD可參考:https://bird.network.cz/。

BIRD-Route Reflector(可擴(kuò)展的組件),BGP客戶端在每個(gè)節(jié)點(diǎn)上運(yùn)行,其隨著節(jié)點(diǎn)數(shù)量越來(lái)越多,一個(gè)BGP客戶端需要連接更多數(shù)量的其他BGP客戶端,其網(wǎng)絡(luò)連接的數(shù)量非常多且網(wǎng)絡(luò)會(huì)變得復(fù)雜。在節(jié)點(diǎn)之外,允許將BIRD程序配置成“Route Reflector”路由反射器工作方式,BGP客戶端可以直接連接到“Route Reflector”路由反射器,而不是很多數(shù)量的其他BGP客戶端,從而減少網(wǎng)絡(luò)連接的數(shù)量,以提高BGP網(wǎng)絡(luò)的性能。

1.1.3.Calico Controller

Calico網(wǎng)絡(luò)策略控制器。允許創(chuàng)建“NetworkPolicy”資源對(duì)象,并根據(jù)資源對(duì)象里面對(duì)網(wǎng)絡(luò)策略定義,在對(duì)應(yīng)節(jié)點(diǎn)主機(jī)上創(chuàng)建針對(duì)于Pod流出或流入流量的IPtables規(guī)則。

1.1.4.Calico Typha(可選的擴(kuò)展組件)

Typha是Calico的一個(gè)擴(kuò)展組件,用于Calico通過(guò)Typha直接與Etcd通信,而不是通過(guò)kube-apiserver。通常當(dāng)K8S的規(guī)模超過(guò)50個(gè)節(jié)點(diǎn)的時(shí)候推薦啟用它,以降低kube-apiserver的負(fù)載。每個(gè)Pod/calico-typha可承載100~200個(gè)Calico節(jié)點(diǎn)的連接請(qǐng)求,最多不要超過(guò)200個(gè)。

1.2.Calico網(wǎng)絡(luò)實(shí)現(xiàn)

Calico支持兩種類型網(wǎng)絡(luò)工作模式(后端機(jī)制):

如果物理主機(jī)在同一2層網(wǎng)絡(luò)中,則建議采用使用BGP動(dòng)態(tài)路由通信方式;如果物理主機(jī)是跨子網(wǎng)通信的話,可能由于到達(dá)目標(biāo)主機(jī)的跳數(shù)太多導(dǎo)致性能下降,所以建議使用覆蓋網(wǎng)絡(luò)模式。

1.2.1.動(dòng)態(tài)路由模式(dynamic routing)

采用BGP動(dòng)態(tài)路由協(xié)議自動(dòng)學(xué)習(xí)來(lái)自其他AS自治系統(tǒng)上的路由條目,即其他節(jié)點(diǎn)主機(jī)上的路由條目。

類似于Flannel的Host-GW模式,不過(guò)它沒(méi)有不能跨子網(wǎng)的限制。

想要更多了解BGP動(dòng)態(tài)路由技術(shù),可以參考其他網(wǎng)絡(luò)資料,這里就不過(guò)多的闡述了。

1.2.2.覆蓋網(wǎng)絡(luò)模式(overlay network)

采用IPIP或VXLAN協(xié)議封裝底層網(wǎng)絡(luò),然后通過(guò)上層物理覆蓋網(wǎng)絡(luò)通信。

將底層的Pod網(wǎng)絡(luò)源目IP+數(shù)據(jù)封裝到上層物理網(wǎng)絡(luò)源目IP的數(shù)據(jù)包中,由同一個(gè)網(wǎng)絡(luò)的物理主機(jī)通過(guò)直連路由完成數(shù)據(jù)包的傳輸和解封裝,以實(shí)現(xiàn)底層Pod網(wǎng)絡(luò)通信。

Calico對(duì)于覆蓋網(wǎng)絡(luò)的工作模式有:

IPIP,使用IPIP封裝協(xié)議。當(dāng)IPIP啟用的時(shí)候不允許啟用VXLAN。

VXLAN,使用VXLAN封裝協(xié)議。當(dāng)VXLAN啟用的時(shí)候不允許啟用IPIP。

IPIPCrossSubnet,當(dāng)物理主機(jī)是跨子網(wǎng)的情況下才使用IPIP覆蓋網(wǎng)絡(luò)通信方式,正常情況下使用BGP路由模式。

VXLANCrossSubnet,當(dāng)物理主機(jī)是跨子網(wǎng)的情況下才使用VXLAN覆蓋網(wǎng)絡(luò)通信方式,正常情況下使用BGP路由模式。

None,不使用IPIP或VXLAN覆蓋網(wǎng)絡(luò)模式。

IPIP比VxLAN的數(shù)據(jù)包頭更小,但安全性較差。

虛接口:IPIP默認(rèn)創(chuàng)建的三層虛接口通常叫“tunl0”,而VXLAN默認(rèn)創(chuàng)建的三層虛接口叫“vxlan.calico”。三層虛接口通常負(fù)責(zé)數(shù)據(jù)包的封裝和解封裝工作。

1.3.了解Calico對(duì)CIDR子網(wǎng)的劃分(blockSize)

CIDR,Classless Inter-Domain Routing,無(wú)類別域間路由,在Kubernetes中指基于CIDR的網(wǎng)絡(luò)劃分方案,為Pod分配的子網(wǎng)范圍(如:10.244.0.0/12)。

通常默認(rèn)情況下,PodIP地址范圍(--pod-network-cidr)為10.244.0.0/16,它擁有16^2=256*256=65536個(gè)地址(包括網(wǎng)絡(luò)地址+廣播地址)可拆分成獨(dú)立子網(wǎng)。

Calico為每個(gè)節(jié)點(diǎn)都會(huì)創(chuàng)建一個(gè)獨(dú)立子網(wǎng),即從CIDR大的地址池中劃分較小范圍的地址池給到每個(gè)節(jié)點(diǎn)。

Calico可以通過(guò)修改配置blockSize塊大小來(lái)設(shè)置每個(gè)節(jié)點(diǎn)分配的獨(dú)立子網(wǎng)的范圍池大小。這邊默認(rèn)值IPV4=26,IPV6=122。

二進(jìn)制掩碼26(11111111 11111111 11111111 11000000)轉(zhuǎn)換成十進(jìn)制掩碼即=255.255.255.192,即每個(gè)節(jié)點(diǎn)的子網(wǎng)可以有64個(gè)IP地址,減去廣播地址和網(wǎng)絡(luò)地址,可為Pod分配的有效IP地址有62個(gè)。

1.4.Calico網(wǎng)絡(luò)策略

Calico使用IPtables實(shí)現(xiàn)網(wǎng)絡(luò)策略功能,在Kubernetes中可以創(chuàng)建“NetworkPolicy”資源對(duì)象傳給Calico的控制器,由Calico Node根據(jù)NetworkPolicy定義的規(guī)則在相關(guān)節(jié)點(diǎn)上創(chuàng)建對(duì)應(yīng)的IPtables規(guī)則,以實(shí)現(xiàn)對(duì)Pod出入口網(wǎng)絡(luò)流量的安全策略限制。

2.安裝Calico

Calico有兩種安裝方式:

使用calico.yaml清單文件安裝

使用Tigera Calico Operator安裝Calico(官方最新指導(dǎo))

Tigera Calico Operator,Calico操作員是一款用于管理Calico安裝、升級(jí)的管理工具,它用于管理Calico的安裝生命周期。從Calico-v3.15版本官方開(kāi)始使用此工具。

Calico安裝要求:

x86-64, arm64, ppc64le, or s390x processor

2個(gè)CPU

2GB運(yùn)行內(nèi)存

10GB硬盤(pán)空間

RedHat Enterprise Linux 7.x+, CentOS 7.x+, Ubuntu 16.04+, or Debian 9.x+

確保Calico可以管理主機(jī)上的cali和tunl接口。

2.1.使用calico.yaml清單文件安裝Calico

參考文檔:https://projectcalico.docs.tigera.io/archive/v3.14/getting-started/kubernetes/quickstart

當(dāng)前主機(jī)環(huán)境:

主機(jī)系統(tǒng):CentOS Linux release 7.6.1810 (Core)

Kubernetes版本:v1.23.0

Calico版本:v3.23.0

其他提示:默認(rèn)的calico.yaml清單文件無(wú)需手動(dòng)配置Pod子網(wǎng)范圍(如果需要,可通過(guò)CALICO_IPV4POOL_CIDR指定),默認(rèn)使用kube-controller-manager的“--cluster-cidr”啟動(dòng)項(xiàng)的值,即kubeadm init時(shí)指定的“--pod-network-cidr”或清單文件中使用“podSubnet”的值。

1、配置Docker鏡像加速

鏡像加速由阿里云“容器加速器”提供。

由于安裝清單中所使用的鏡像來(lái)源于國(guó)外站點(diǎn),所以需要配置為國(guó)內(nèi)鏡像源才能正常下載鏡像到國(guó)內(nèi)主機(jī)。

創(chuàng)建配置文件“/etc/docker/daemon.json”,并寫(xiě)入以下內(nèi)容:

[root@localhost ~]# mkdir -p /etc/docker

[root@localhost ~]# cat /etc/docker/daemon.json 《《EOF

{

“registry-mirrors”: [

“https://7mimmp7p.mirror.aliyuncs.com”,

“https://registry.docker-cn.com”,

“http://hub-mirror.c.163.com”,

“https://docker.mirrors.ustc.edu.cn”

],

“exec-opts”: [“native.cgroupdriver=systemd”],

“l(fā)og-driver”: “json-file”,

“l(fā)og-opts”: {

“max-size”: “100m”

},

“storage-driver”: “overlay2”,

“storage-opts”: [

“overlay2.override_kernel_check=true”

}

EOF

重啟docker服務(wù)即可:

[root@localhost ~]# sudo systemctl daemon-reload

[root@localhost ~]# sudo systemctl restart docker

2、配置NetworkManager

如果主機(jī)系統(tǒng)使用NetworkManager來(lái)管理網(wǎng)絡(luò)的話,則需要配置NetworkManager,以允許Calico管理接口。

NetworkManger操作默認(rèn)網(wǎng)絡(luò)命名空間接口的路由表,這可能會(huì)干擾Calico代理正確路由的能力。

在所有主機(jī)上操作:

[root@k8s-master01 ~]# cat 》 /etc/NetworkManager/conf.d/calico.conf 《《EOF

[keyfile]

unmanaged-devices=interface-name:cali*;interface-name:tunl*;interface-name:vxlan.calico;interface-name:wireguard.cali

EOF

3、下載calico.yaml

[root@k8s-master01 ~]# wget https://docs.projectcalico.org/v3.23/manifests/calico.yaml --no-check-certificate

4、修改calico.yaml

由于默認(rèn)的Calico清單文件中所使用的鏡像來(lái)源于docker.io國(guó)外鏡像源,上面我們配置了Docker鏡像加速,應(yīng)刪除docker.io前綴以使鏡像從國(guó)內(nèi)鏡像加速站點(diǎn)下載。

[root@k8s-master01 ~]# cat calico.yaml |grep ‘image:’

image: docker.io/calico/cni:v3.23.0

image: docker.io/calico/cni:v3.23.0

image: docker.io/calico/node:v3.23.0

image: docker.io/calico/kube-controllers:v3.23.0

[root@k8s-master01 ~]# sed -i ‘s#docker.io/##g’ calico.yaml

[root@k8s-master01 ~]# cat calico.yaml |grep ‘image:’

image: calico/cni:v3.23.0

image: calico/cni:v3.23.0

image: calico/node:v3.23.0

image: calico/kube-controllers:v3.23.0

5、應(yīng)用calico.yaml

[root@k8s-master01 ~]# kubectl apply -f calico.yaml

Pod-Calico在“kube-system”名稱空間下創(chuàng)建并運(yùn)行起來(lái):

[root@k8s-master01 ~]# kubectl get pod -n kube-system |grep calico

calico-kube-controllers-77d9858799-c267f 1/1 Running 0 92s

calico-node-6jw5q 1/1 Running 0 92s

calico-node-krrn6 1/1 Running 0 92s

calico-node-mgk2g 1/1 Running 0 92s

calico-node-wr2pv 1/1 Running 0 92s

2.2.使用Tigera Calico Operator安裝Calico

這種是官方文檔最新指導(dǎo)的安裝方式。

Tigera Calico Operator通常會(huì)安裝最新版本的Calico版本,并使用最新的功能。

1、配置NetworkManager

如果主機(jī)系統(tǒng)使用NetworkManager來(lái)管理網(wǎng)絡(luò)的話,則需要配置NetworkManager,以允許Calico管理接口。

NetworkManger操作默認(rèn)網(wǎng)絡(luò)命名空間接口的路由表,這可能會(huì)干擾Calico代理正確路由的能力。

在所有主機(jī)上操作:

[root@k8s-master01 ~]# cat 》 /etc/NetworkManager/conf.d/calico.conf 《《EOF

[keyfile]

unmanaged-devices=interface-name:cali*;interface-name:tunl*;interface-name:vxlan.calico;interface-name:wireguard.cali

EOF

2、使用tigera-operator.yaml清單文件安裝Tigera Calico operator

參考文檔:https://github.com/tigera/operator

tigera-operator.yaml清單文件用于安裝Tigera Calico operator。

operator的鏡像來(lái)源于quay.io。

[root@k8s-master01 ~]# wget https://projectcalico.docs.tigera.io/manifests/tigera-operator.yaml -O calico-tigera-operator.yaml --no-check-certificate

[root@k8s-master01 ~]# cat calico-tigera-operator.yaml |grep ‘image:’

image: quay.io/tigera/operator:v1.27.0

[root@k8s-master01 ~]# kubectl apply -f calico-tigera-operator.yaml

[root@k8s-master01 ~]# kubectl get pod -n tigera-operator -o wide

NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES

tigera-operator-566769dc67-mrnhs 1/1 Running 0 5m39s 192.168.124.132 k8s-node01 《none》 《none》

3、下載并配置custom-resources.yaml清單文件

custom-resources.yaml用于自定義通過(guò)Tigera Calico operator安裝和配置Calico,它會(huì)創(chuàng)建由operator實(shí)現(xiàn)的Installation資源對(duì)象。

在自定義Calico之前可以通過(guò)“https://projectcalico.docs.tigera.io/reference/installation/api#operator.tigera.io/v1.Installation”先了解安裝配置。

注:這邊需要修改一下Pod分配子網(wǎng)范圍(CIDR),該地址需要與kubeadm初始化集群時(shí)的“podSubnet”字段或“--pod-network-cidr”參數(shù)中填寫(xiě)的值相同。

[root@k8s-master01 ~]# wget https://projectcalico.docs.tigera.io/manifests/custom-resources.yaml -O calico-custom-resources.yaml --no-check-certificate

[root@k8s-master01 ~]# vim calico-custom-resources.yaml

apiVersion: operator.tigera.io/v1

kind: Installation

metadata:

name: default

spec:

# Configures Calico networking.

calicoNetwork:

# Note: The ipPools section cannot be modified post-install.

ipPools:

- blockSize: 26

cidr: 10.244.0.0/16

encapsulation: VXLANCrossSubnet

natOutgoing: Enabled

nodeSelector: all()

4、應(yīng)用custom-resources.yaml清單文件

[root@k8s-master01 ~]# kubectl apply -f calico-custom-resources.yaml

5、查看Calico是否運(yùn)行

Tigera Calico Operator會(huì)自動(dòng)創(chuàng)建一個(gè)名叫“calico-system”的名稱空間來(lái)運(yùn)行Calico。

[root@k8s-master01 ~]# kubectl get namespace

NAME STATUS AGE

calico-system Active 3m10s

default Active 5m55s

kube-node-lease Active 5m57s

kube-public Active 5m57s

kube-system Active 5m57s

tigera-operator Active 3m20s

[root@k8s-master01 ~]# kubectl get pod -n calico-system

NAME READY STATUS RESTARTS AGE

calico-kube-controllers-7dfc6fb85-ktww2 0/1 Pending 0 8m33s

calico-node-2t4dp 0/1 Init:ImagePullBackOff 0 8m34s

calico-node-mmflx 0/1 Init:ImagePullBackOff 0 8m34s

calico-node-r94tt 0/1 Init:ImagePullBackOff 0 8m34s

calico-node-w7plh 0/1 Init:ImagePullBackOff 0 7m36s

calico-typha-5fb57458cc-g89qp 0/1 ImagePullBackOff 0 8m34s

calico-typha-5fb57458cc-t5xcm 0/1 ImagePullBackOff 0 8m28s

[root@k8s-master01 ~]# kubectl describe pod calico-kube-controllers-7dfc6fb85-ktww2 -n calico-system

Normal BackOff 69s (x2 over 3m41s) kubelet Back-off pulling image “docker.io/calico/pod2daemon-flexvol:v3.23.0”

Warning Failed 69s (x2 over 3m41s) kubelet Error: ImagePullBackOff

可以看到所有Calico相關(guān)的Pod由于在國(guó)內(nèi)環(huán)境下都無(wú)法正常下載由docker.io提供的鏡像:

[root@k8s-master01 ~]# kubectl describe pod -n calico-system |grep ‘Events’ -A 10 |grep -Eo ‘“docker.io/calico/.*”’ |sort |uniq

“docker.io/calico/cni:v3.23.0”

“docker.io/calico/kube-controllers:v3.23.0”

“docker.io/calico/node:v3.23.0”

“docker.io/calico/pod2daemon-flexvol:v3.23.0”

“docker.io/calico/typha:v3.23.0”

嘗試手動(dòng)從quay.io下載鏡像。quay.io是一個(gè)公共鏡像倉(cāng)庫(kù)。

所有主機(jī)上操作:

[root@k8s-master01 ~]# docker pull quay.io/calico/cni:v3.23.0

[root@k8s-master01 ~]# docker pull quay.io/calico/kube-controllers:v3.23.0

[root@k8s-master01 ~]# docker pull quay.io/calico/node:v3.23.0

[root@k8s-master01 ~]# docker pull quay.io/calico/pod2daemon-flexvol:v3.23.0

[root@k8s-master01 ~]# docker pull quay.io/calico/typha:v3.23.0

這個(gè)時(shí)候發(fā)現(xiàn)Calico相關(guān)Pod都已正常運(yùn)行了:

[root@k8s-master01 ~]# kubectl get pod -n calico-system

NAME READY STATUS RESTARTS AGE

calico-kube-controllers-7dfc6fb85-vbn6q 1/1 Running 0 64m

calico-node-29h89 1/1 Running 0 64m

calico-node-9c54r 1/1 Running 1 (10m ago) 64m

calico-node-ntzvt 1/1 Running 0 64m

calico-node-s5bz9 1/1 Running 0 64m

calico-typha-5dd57768f4-79clk 1/1 Running 1 (10m ago) 27m

calico-typha-5dd57768f4-dk9ph 1/1 Running 0 64m

3.Calico清單詳解-calico.yaml(使用calico.yaml清單文件安裝Calico安裝方式必讀)

參考文檔:https://docs.projectcalico.org/archive/v3.14/getting-started/kubernetes/installation/config-options#other-configuration-options

calico.yaml清單文件主要用于運(yùn)行calico-node和calico-kube-controllers服務(wù),其清單安裝以下Kubernetes資源:

使用DaemonSet在每個(gè)主機(jī)上安裝calico/node容器;

使用DaemonSet在每個(gè)主機(jī)上安裝Calico CNI二進(jìn)制文件和網(wǎng)絡(luò)配置;

使用Deployment運(yùn)行calico/kube-controller;

Secert/calico-etcd-secrets提供可選的Calico連接到etcd的TLS密鑰信息;

ConfigMap/calico-config提供安裝Calico時(shí)的配置參數(shù)。

在calico.yaml清單文件中,Calico默認(rèn)的工作模式是IPIP。

在安裝Calico之前配置Calico通常有以下項(xiàng):

3.1.配置PodIP范圍(PodCIDR)

要更改用于Pod的默認(rèn)IP范圍,請(qǐng)修改calico.yaml清單文件中“CALICO_IPV4POOL_CIDR”部分。

kind: DaemonSet

apiVersion: apps/v1

metadata:

name: calico-node

namespace: kube-system

labels:

k8s-app: calico-node

spec:

template:

spec:

containers:

- name: calico-node

image: calico/node:v3.14.2

env:

。..

# - name: CALICO_IPV4POOL_CIDR

# value: “192.168.0.0/16”

。..

CALICO_IPV4POOL_CIDR

設(shè)置PodIP范圍。

此項(xiàng)用于設(shè)置安裝Calico時(shí)要?jiǎng)?chuàng)建的默認(rèn)IPv4池,PodIP將從該范圍中選擇。

Calico安裝完成后修改此值將再無(wú)效。

默認(rèn)情況下calico.yaml中“CALICO_IPV4POOL_CIDR”是注釋的,如果kube-controller-manager的“--cluster-cidr”不存在任何值的話,則通常取默認(rèn)值“192.168.0.0/16,172.16.0.0/16,。.,172.31.0.0/16”。

當(dāng)使用kubeadm時(shí),PodIP的范圍應(yīng)該與kubeadm init的清單文件中的“podSubnet”字段或者“--pod-network-cidr”選項(xiàng)填寫(xiě)的值相同。

3.2.配置IPIP(默認(rèn))

默認(rèn)情況下,清單啟用跨子網(wǎng)所使用的封裝協(xié)議是IPIP。

當(dāng)集群的節(jié)點(diǎn)都處于同一個(gè)2層網(wǎng)絡(luò)中時(shí),我們期望修改Calico的工作模式為BGP或其他時(shí),可以設(shè)置“CALICO_IPV4POOL_IPIP”的“value: Never”以禁用IPIP。默認(rèn)IPIP是啟用的“value: Always”。

kind: DaemonSet

apiVersion: apps/v1

metadata:

name: calico-node

namespace: kube-system

labels:

k8s-app: calico-node

spec:

template:

spec:

containers:

- name: calico-node

image: calico/node:v3.14.2

env:

。..

# Enable IPIP

- name: CALICO_IPV4POOL_IPIP

value: “Always”

。..

CALICO_IPV4POOL_IPIP

設(shè)置Calico覆蓋網(wǎng)絡(luò)IPV4池所要使用的封裝協(xié)議為IPIP。

可設(shè)置的值:

Always,永久啟用。

CrossSubnet,當(dāng)物理主機(jī)是跨子網(wǎng)通信的話才啟用,如果物理主機(jī)在同一2層網(wǎng)絡(luò)中則使用BGP動(dòng)態(tài)路由通信方式。

Never,從不啟用,即禁用。

如果該項(xiàng)的值設(shè)置為“Never”以外的值,則不應(yīng)設(shè)置“CALICO_IPV4POOL_VXLAN”。

Calico覆蓋網(wǎng)絡(luò)支持IPIP、VXLAN兩種協(xié)議,僅能啟用其中一種。

VXLAN協(xié)議禁止啟用由“CALICO_IPV4POOL_VXLAN”項(xiàng)控制。

3.3.切換IPIP為VXLAN

默認(rèn)情況下,Calico清單啟用IPIP封裝。如果你期望Calico使用VXLAN封裝模式,則需要在安裝時(shí)候做以下操作:

1、將“CALICO_IPV4POOL_IPIP ”設(shè)置為“Never”,將“CALICO_IPV4POOL_VXLAN”設(shè)置為“Always”。

kind: DaemonSet

apiVersion: apps/v1

metadata:

name: calico-node

namespace: kube-system

labels:

k8s-app: calico-node

spec:

template:

spec:

containers:

- name: calico-node

image: calico/node:v3.14.2

env:

。..

# Enable IPIP

- name: CALICO_IPV4POOL_IPIP

value: “Never”

- name: CALICO_IPV4POOL_VXLAN

value: “Always”

。..

2、如果你只想集群僅使用基于VXLAN協(xié)議的覆蓋網(wǎng)絡(luò)模式,用不到BGP動(dòng)態(tài)路由模式的話,即為了節(jié)省一點(diǎn)資源,可以選擇完全禁用Calico基于BGP的網(wǎng)絡(luò):

將“calico_backend: ”bird“”修改為“calico_backend: ”vxlan“”,這將禁用BIRD。

從calico/node的readiness/liveness檢查中去掉“- -bird-ready”和“- -bird-live”。

livenessProbe:

exec:

command:

- /bin/calico-node

- -felix-live

# - -bird-live

readinessProbe:

exec:

command:

- /bin/calico-node

# - -bird-ready

- -felix-ready

CALICO_IPV4POOL_VXLAN

設(shè)置Calico覆蓋網(wǎng)絡(luò)IPV4池所要使用的封裝協(xié)議為VXLAN。

可設(shè)置的值:

Always,永久啟用。

CrossSubnet,當(dāng)物理主機(jī)是跨子網(wǎng)通信的話才啟用,如果物理主機(jī)在同一2層網(wǎng)絡(luò)中則使用BGP動(dòng)態(tài)路由通信方式。

Never,從不啟用,即禁用。

如果該項(xiàng)的值設(shè)置為“Never”以外的值,則不應(yīng)設(shè)置“CALICO_IPV4POOL_VXLAN”。

Calico覆蓋網(wǎng)絡(luò)支持IPIP、VXLAN兩種協(xié)議,僅能啟用其中一種。

VXLAN協(xié)議禁止啟用由“CALICO_IPV4POOL_VXLAN”項(xiàng)控制。

3.4.其他配置項(xiàng)

在清單文件的開(kāi)始有ConfigMap描述Calico的配置內(nèi)容,其重要的配置項(xiàng)解讀如下:

kind: ConfigMap

apiVersion: v1

metadata:

name: calico-config

namespace: kube-system

data:

typha_service_name: “none”

calico_backend: “bird”

veth_mtu: “1440”

cni_network_config: |-

{

“name”: “k8s-pod-network”,

“cniVersion”: “0.3.1”,

“plugins”: [

{

“type”: “calico”,

“l(fā)og_level”: “info”,

“datastore_type”: “kubernetes”,

“nodename”: “__KUBERNETES_NODE_NAME__”,

“mtu”: __CNI_MTU__,

“ipam”: {

“type”: “calico-ipam”

},

“policy”: {

“type”: “k8s”

},

“kubernetes”: {

“kubeconfig”: “__KUBECONFIG_FILEPATH__”

}

},

{

“type”: “portmap”,

“snat”: true,

“capabilities”: {“portMappings”: true}

},

{

“type”: “bandwidth”,

“capabilities”: {“bandwidth”: true}

}

}

typha_service_name: “none”

Typha是Calico的一個(gè)擴(kuò)展組件,用于Calico通過(guò)Typha直接與Etcd通信,而不是通過(guò)kube-apiserver。通常當(dāng)K8S的規(guī)模超過(guò)50個(gè)節(jié)點(diǎn)的時(shí)候推薦啟用它,以降低kube-apiserver的負(fù)載。

支持值:

none,關(guān)閉Typha功能。

calico_typha,啟用Typha功能。

calico_backend: “bird”

設(shè)置Calico使用的后端機(jī)制。支持值:

bird,開(kāi)啟BIRD功能,根據(jù)Calico-Node的配置來(lái)決定主機(jī)的網(wǎng)絡(luò)實(shí)現(xiàn)是采用BGP路由模式還是IPIP、VXLAN覆蓋網(wǎng)絡(luò)模式。

vxlan,純VXLAN模式,僅能夠使用VXLAN協(xié)議的覆蓋網(wǎng)絡(luò)模式。

veth_mtu: “0”

設(shè)置虛擬接口“calicoxxxxx”的MTU值,默認(rèn)情況下MTU是自動(dòng)檢測(cè)的,不需要顯示的設(shè)置此字段。

可以通過(guò)提供一個(gè)非零值來(lái)設(shè)置它。

MTU,Maximum Transmission Unit,最大傳輸單元,網(wǎng)絡(luò)設(shè)備一次發(fā)送數(shù)據(jù)包大小,單位為Byte,MTU值約小則傳輸速率約高,此值應(yīng)由系統(tǒng)設(shè)置的最合理的值,通常不需要我們手動(dòng)設(shè)置,最大值為1500。

cni_network_config:

在每個(gè)節(jié)點(diǎn)上都要安裝的CNI網(wǎng)絡(luò)插件配置。保持默認(rèn)就好。

4.Calico清單詳解-custom-resources.yaml(使用Tigera Calico Operator安裝Calico安裝方式必讀)

custom-resources.yaml清單文件通過(guò)Tigera Calico Operator安裝Calico的自定義清單文件。

在安裝Calico之前,我們可以通過(guò)修改該清單的內(nèi)容自定義配置Calico。

參考文檔:https://projectcalico.docs.tigera.io/reference/installation/api

# This section includes base Calico installation configuration.

# For more information, see: https://projectcalico.docs.tigera.io/v3.23/reference/installation/api#operator.tigera.io/v1.Installation

apiVersion: operator.tigera.io/v1

kind: Installation

metadata:

name: default

spec:

# Configures Calico networking.

calicoNetwork:

# Note: The ipPools section cannot be modified post-install.

ipPools:

- blockSize: 26

cidr: 10.244.0.0/16

encapsulation: VXLANCrossSubnet

natOutgoing: Enabled

nodeSelector: all()

---

# This section configures the Calico API server.

# For more information, see: https://projectcalico.docs.tigera.io/v3.23/reference/installation/api#operator.tigera.io/v1.APIServer

apiVersion: operator.tigera.io/v1

kind: APIServer

metadata:

name: default

spec: {}

spec.calicoNetwork

配置Calico網(wǎng)絡(luò)。

spec.calicoNetwork.bgp

開(kāi)啟或禁用BGP路由功能。支持值:Enabled, Disabled。

spec.calicoNetwork.ipPools

IPPool,為由節(jié)點(diǎn)篩選器指定節(jié)點(diǎn)上創(chuàng)建Pod分配的單個(gè)或多個(gè)地址池,以及要使用的Pod網(wǎng)絡(luò)的實(shí)現(xiàn)方法。

spec.calicoNetwork.ipPools.blockSize(int32)

塊大小,子網(wǎng)劃分技術(shù),指從CIDR(如:10.244.0.0/16)里面為每個(gè)節(jié)點(diǎn)拆分一個(gè)獨(dú)立的子網(wǎng)塊范圍大小(如:10.244.32.128/26)。默認(rèn)IPV4=26,IPV6=122。二進(jìn)制掩碼26轉(zhuǎn)換成十進(jìn)制掩碼即=255.255.255.192,即每個(gè)節(jié)點(diǎn)的子網(wǎng)可以有64個(gè)IP地址,減去廣播地址和網(wǎng)絡(luò)地址,可為Pod分配的有效IP地址有62個(gè)。

spec.calicoNetwork.ipPools.cidr(string)

Pod網(wǎng)絡(luò)IP范圍。

spec.calicoNetwork.ipPools.encapsulation

設(shè)置Pod網(wǎng)絡(luò)要使用的封裝協(xié)議類型,支持:

IPIP,使用IPIP封裝協(xié)議。

VXLAN,使用VXLAN封裝協(xié)議。

IPIPCrossSubnet,當(dāng)物理主機(jī)是跨子網(wǎng)的情況下才使用IPIP覆蓋網(wǎng)絡(luò)通信方式,正常情況下使用BGP路由模式。

VXLANCrossSubnet,當(dāng)物理主機(jī)是跨子網(wǎng)的情況下才使用VXLAN覆蓋網(wǎng)絡(luò)通信方式,正常情況下使用BGP路由模式。

None,不使用IPIP或VXLAN封裝。

spec.calicoNetwork.ipPools.natOutgoing

NAT傳出,對(duì)傳出的流量啟用或禁用NAT功能。支持值:Enabled, Disabled。

spec.calicoNetwork.ipPools.nodeSelector(string)

節(jié)點(diǎn)選擇器,使用它選擇該IPPool池會(huì)影響那些節(jié)點(diǎn)的Pod。默認(rèn)值為“all()”,保持默認(rèn)就好。

5.完全卸載Calico網(wǎng)絡(luò)插件

1、刪除安裝清單中的所有資源對(duì)象

任一臺(tái)Master上操作:

[root@k8s-master01 ~]# kubectl delete -f calico.yaml

2、刪除tunl0虛擬網(wǎng)卡

如果使用了IPIP覆蓋網(wǎng)絡(luò)模式,則Calico會(huì)在每臺(tái)主機(jī)上創(chuàng)建一塊名叫tunl0的虛擬網(wǎng)卡設(shè)備。

在所有主機(jī)上操作:

[root@k8s-master01 ~]# modprobe -r ipip

3、刪除Calico相關(guān)CNI配置文件

在所有主機(jī)上操作:

[root@k8s-master01 ~]# rm -rf /var/lib/cni/ && rm -rf /etc/cni/net.d/*

4、重啟kubelet服務(wù)

在所有主機(jī)上操作:

[root@k8s-master01 ~]# systemctl restart kubelet

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 網(wǎng)絡(luò)
    +關(guān)注

    關(guān)注

    14

    文章

    7595

    瀏覽量

    89095
  • 插件
    +關(guān)注

    關(guān)注

    0

    文章

    335

    瀏覽量

    22467

原文標(biāo)題:5.完全卸載Calico網(wǎng)絡(luò)插件

文章出處:【微信號(hào):magedu-Linux,微信公眾號(hào):馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    環(huán)球儀器Omni插件機(jī)的優(yōu)勢(shì)

    由于傳統(tǒng)插件機(jī)引腳歪斜,導(dǎo)致拋料率高,減低插件成功率,提高了拋料率。環(huán)球儀器的Omni 插件機(jī),則采用兩項(xiàng)技術(shù),提高插件成功率,減低拋料率。
    的頭像 發(fā)表于 01-07 09:12 ?217次閱讀
    環(huán)球儀器Omni<b class='flag-5'>插件</b>機(jī)的優(yōu)勢(shì)

    Kubernetes的CNI網(wǎng)絡(luò)插件之flannel

    Kubernetes設(shè)計(jì)了網(wǎng)絡(luò)模型,但卻將它的實(shí)現(xiàn)講給了網(wǎng)絡(luò)插件,CNI網(wǎng)絡(luò)插件最重要的功能就是實(shí)現(xiàn)Pod資源能夠跨主機(jī)通信。
    的頭像 發(fā)表于 01-02 09:43 ?265次閱讀

    SOLIDWORKS插件功能介紹 慧德敏學(xué)

    SOLIDWORKS擁有一系列內(nèi)置及第三方插件,這些插件豐富了其功能并提高了設(shè)計(jì)效率。本文為您介紹SOLIDWORKS插件功能,
    的頭像 發(fā)表于 11-23 15:56 ?496次閱讀

    寫(xiě)一個(gè)Chrome瀏覽器插件

    一、什么是瀏覽器插件 瀏覽器插件是依附于瀏覽器,用來(lái)拓展網(wǎng)頁(yè)能力的程序。插件具有監(jiān)聽(tīng)瀏覽器事件、獲取和修改網(wǎng)頁(yè)元素、攔截網(wǎng)絡(luò)請(qǐng)求、添加快捷菜單等功能。使用瀏覽器
    的頭像 發(fā)表于 11-18 17:12 ?476次閱讀
    寫(xiě)一個(gè)Chrome瀏覽器<b class='flag-5'>插件</b>

    KiCad插件大全

    感謝Hayden同學(xué)的整理! 插件使用方式 1. 解壓縮插件包到KICAD插件目錄。例如,在Windows上可能是:C:Program
    的頭像 發(fā)表于 11-12 12:24 ?664次閱讀

    VSCode批量遷移插件

    代碼的路 打開(kāi)之前電腦,找到原電腦VS Code的插件安裝目錄: 如: C:\\\\Users\\\\用戶名\\\\.vscode\\\\extensions 將extensions文件夾拷貝到
    的頭像 發(fā)表于 11-06 16:04 ?274次閱讀
    VSCode批量遷移<b class='flag-5'>插件</b>

    VSCode插件的安裝和使用

    今天介紹一款我工作上經(jīng)常用到的一款VSCode的插件-VsCode Action Buttons,這個(gè)插件可以釋放手敲命令行清除、編譯、運(yùn)行、部署到目標(biāo)機(jī)等操作,具體功能可由開(kāi)發(fā)者自由定義,詳細(xì)功能的使用可以參考官網(wǎng)。
    的頭像 發(fā)表于 11-04 15:36 ?270次閱讀
    VSCode<b class='flag-5'>插件</b>的安裝和使用

    插件磁環(huán)電感選型分類及其應(yīng)用領(lǐng)域

    前言插件磁環(huán)電感作為電子電路中常見(jiàn)的元件,具有濾波、抑制噪聲、儲(chǔ)能等多種功能。其材料的選擇直接影響到電感的性能和適用范圍。本文將詳細(xì)介紹插件磁環(huán)電感的定義、材料選擇及其應(yīng)用領(lǐng)域。Part1插件磁環(huán)
    的頭像 發(fā)表于 10-23 10:28 ?331次閱讀
    <b class='flag-5'>插件</b>磁環(huán)電感選型分類及其應(yīng)用領(lǐng)域

    插件磁環(huán)電感選型分類及其應(yīng)用領(lǐng)域

    前言 ? ? ? 插件磁環(huán)電感作為電子電路中常見(jiàn)的元件,具有 濾波 、 抑制噪聲 、 儲(chǔ)能 等多種功能。其材料的選擇直接影響到電感的性能和適用范圍。本文將詳細(xì)介紹插件磁環(huán)電感的定義、材料選擇及其
    的頭像 發(fā)表于 10-17 10:52 ?357次閱讀
    <b class='flag-5'>插件</b>磁環(huán)電感選型分類及其應(yīng)用領(lǐng)域

    基于DMAIC的SMT TX插件撞傷不良改善

    在快速發(fā)展的電子制造領(lǐng)域,SMT(表面貼裝技術(shù))已經(jīng)成為電子產(chǎn)品組裝的核心技術(shù)之一。然而,SMT TX插件撞傷不良問(wèn)題一直是制約生產(chǎn)效率與產(chǎn)品質(zhì)量的瓶頸。本文將基于DMAIC(定義、測(cè)量、分析、改進(jìn)
    的頭像 發(fā)表于 06-19 14:47 ?384次閱讀

    【線路板設(shè)計(jì)】詳解pcb插件特點(diǎn)

    PCB插件是在PCB設(shè)計(jì)軟件中使用的擴(kuò)展工具,用于簡(jiǎn)化和增強(qiáng)PCB設(shè)計(jì)過(guò)程。這些插件提供了許多功能和特性,幫助工程師更快速、高效地完成電路板設(shè)計(jì)。今天捷多邦小編就與大家詳細(xì)的講解pcb插件的特點(diǎn)吧
    的頭像 發(fā)表于 05-21 17:51 ?836次閱讀

    鴻蒙實(shí)戰(zhàn)開(kāi)發(fā)學(xué)習(xí):【HiView插件開(kāi)發(fā)】

    Hiview是一個(gè)跨平臺(tái)的終端設(shè)備維測(cè)服務(wù)集,其中是由插件管理平臺(tái)和插件實(shí)現(xiàn)的各自功能構(gòu)成整套系統(tǒng)。 本文描述了hiview插件開(kāi)發(fā)的全部流程。
    的頭像 發(fā)表于 03-12 11:52 ?1398次閱讀
    鴻蒙實(shí)戰(zhàn)開(kāi)發(fā)學(xué)習(xí):【HiView<b class='flag-5'>插件</b>開(kāi)發(fā)】

    鋁基板怎么焊接插件元件

    鋁基板怎么焊接插件元件
    的頭像 發(fā)表于 03-01 10:53 ?1216次閱讀

    突發(fā),蘋(píng)果或?qū)?b class='flag-5'>徹底禁用這個(gè)傳感器!

    面臨禁售,蘋(píng)果或?qū)?b class='flag-5'>徹底禁用Apple Watch的血氧傳感器,最新款手表才發(fā)布4個(gè)月!有什么糾紛? 1月15日,據(jù)外媒報(bào)道,為避免蘋(píng)果手表在美銷售禁令再次生效, 蘋(píng)果計(jì)劃徹底移除旗下兩款最新手
    的頭像 發(fā)表于 02-20 11:52 ?570次閱讀
    突發(fā),蘋(píng)果或?qū)?b class='flag-5'>徹底</b>禁用這個(gè)傳感器!

    插件型功率電感封裝類型對(duì)使用有影響嗎

    插件型功率電感封裝類型對(duì)使用有影響嗎 編輯:谷景電子 插件型功率電感在電子電路中是特別重要的一種電感元件,它對(duì)于保證電路的穩(wěn)定運(yùn)作有著特別重要的影響。要想充分發(fā)揮插件型功率電感的功能作用,選型工作
    的頭像 發(fā)表于 02-18 13:52 ?445次閱讀
    主站蜘蛛池模板: 亚洲免费视频网 | 天堂在线观看免费视频 | 亚欧免费视频一区二区三区 | 国产一区二区三区欧美精品 | 激情综合五月婷婷 | 精品四虎免费观看国产高清午夜 | 特级黄色毛片 | 在线色片 | 日日干狠狠干 | 77ee成人 | 美女视频一区二区三区在线 | 亚洲精品成人久久久影院 | 日欧毛片 | 欧美一级特黄aaaaaaa在线观看 | 国产女主播精品大秀系列在线 | 特黄特色大片免费播放器9 特黄特色大片免费视频播放 | 怡红院日本 | 黄视频网站免费观看 | 三级成人网 | 五月天停婷基地 | sihu免费观看在线高清 | 人人射人人插 | 在线观看精品国产福利片100 | 国产成人91青青草原精品 | 日本成人小视频 | 亚洲四虎永久在线播放 | 欧美性黑人极品hd网站 | 亚洲日本一区二区三区在线不卡 | 在线观看国产三级 | 操碰人人 | 成人精品亚洲人成在线 | 3344成年在线视频免费播放男男 | 他也色在线 | 国产亚洲欧美成人久久片 | 操妞网| 热99在线视频 | 色狠狠狠狠综合影视 | 伊人网在线免费视频 | 色老头在线视频 | 牛仔裤美女国产精品毛片 | 国产精品久久久久久久9999 |