W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
Kubernetes 1.24 支持容器網(wǎng)絡(luò)接口 (CNI) 集群網(wǎng)絡(luò)插件。 你必須使用和你的集群相兼容并且滿足你的需求的 CNI 插件。 在更廣泛的 Kubernetes 生態(tài)系統(tǒng)中你可以使用不同的插件(開源和閉源)。
你必須使用與 v0.4.0 或更高版本的 CNI 規(guī)范相符合的 CNI 插件。 Kubernetes 推薦使用一個兼容 v1.0.0 CNI 規(guī)范的插件(插件可以兼容多個規(guī)范版本)。
CNI 插件需要實現(xiàn) Kubernetes 網(wǎng)絡(luò)模型。 CRI 管理它自己的 CNI 插件。 在使用插件時,需要記住兩個 kubelet 命令行參數(shù):
cni-bin-dir
?: kubelet 在啟動時探測這個目錄中的插件
network-plugin
?: 要使用的網(wǎng)絡(luò)插件來自 ?cni-bin-dir
?。 它必須與從插件目錄探測到的插件報告的名稱匹配。 對于 CNI 插件,其值為 "cni"。除了提供 NetworkPlugin 接口 來配置和清理 Pod 網(wǎng)絡(luò)之外,該插件還可能需要對 kube-proxy 的特定支持。 iptables 代理顯然依賴于 iptables,插件可能需要確保 iptables 能夠監(jiān)控容器的網(wǎng)絡(luò)通信。 例如,如果插件將容器連接到 Linux 網(wǎng)橋,插件必須將 ?net/bridge/bridge-nf-call-iptables
? 系統(tǒng)參數(shù)設(shè)置為?1
?,以確保 iptables 代理正常工作。 如果插件不使用 Linux 網(wǎng)橋(而是類似于 Open vSwitch 或者其它一些機制), 它應(yīng)該確保為代理對容器通信執(zhí)行正確的路由。
默認情況下,如果未指定 kubelet 網(wǎng)絡(luò)插件,則使用 ?noop
?插件, 該插件設(shè)置 ?net/bridge/bridge-nf-call-iptables=1
?,以確保簡單的配置 (如帶網(wǎng)橋的 Docker )與 iptables 代理正常工作。
通過給 Kubelet 傳遞 ?--network-plugin=cni
? 命令行選項可以選擇 CNI 插件。 Kubelet 從 ?--cni-conf-dir
? (默認是 ?/etc/cni/net.d
?) 讀取文件并使用 該文件中的 CNI 配置來設(shè)置各個 Pod 的網(wǎng)絡(luò)。 CNI 配置文件必須與 CNI 規(guī)約 匹配,并且配置所引用的所有所需的 CNI 插件都應(yīng)存在于 ?--cni-bin-dir
?(默認是 ?/opt/cni/bin
?)下。
如果這個目錄中有多個 CNI 配置文件,kubelet 將會使用按文件名的字典順序排列 的第一個作為配置文件。
除了配置文件指定的 CNI 插件外,Kubernetes 還需要標(biāo)準的 CNI ?lo
? 插件,最低版本是0.2.0。
CNI 網(wǎng)絡(luò)插件支持 ?hostPort
?。 你可以使用官方 portmap 插件,它由 CNI 插件團隊提供,或者使用你自己的帶有 portMapping 功能的插件。
如果你想要啟動 ?hostPort
?支持,則必須在 ?cni-conf-dir
? 指定 ?portMappings capability
?。 例如:
{
"name": "k8s-pod-network",
"cniVersion": "0.3.0",
"plugins": [
{
"type": "calico",
"log_level": "info",
"datastore_type": "kubernetes",
"nodename": "127.0.0.1",
"ipam": {
"type": "host-local",
"subnet": "usePodCidr"
},
"policy": {
"type": "k8s"
},
"kubernetes": {
"kubeconfig": "/etc/cni/net.d/calico-kubeconfig"
}
},
{
"type": "portmap",
"capabilities": {"portMappings": true}
}
]
}
CNI 網(wǎng)絡(luò)插件還支持 pod 入口和出口流量整形。 你可以使用 CNI 插件團隊提供的 bandwidth 插件,也可以使用你自己的具有帶寬控制功能的插件。
如果你想要啟用流量整形支持,你必須將 ?bandwidth
?插件添加到 CNI 配置文件 (默認是 ?/etc/cni/net.d
?)并保證該可執(zhí)行文件包含在你的 CNI 的 bin 文件夾內(nèi) (默認為 ?/opt/cni/bin
?)。
{
"name": "k8s-pod-network",
"cniVersion": "0.3.0",
"plugins": [
{
"type": "calico",
"log_level": "info",
"datastore_type": "kubernetes",
"nodename": "127.0.0.1",
"ipam": {
"type": "host-local",
"subnet": "usePodCidr"
},
"policy": {
"type": "k8s"
},
"kubernetes": {
"kubeconfig": "/etc/cni/net.d/calico-kubeconfig"
}
},
{
"type": "bandwidth",
"capabilities": {"bandwidth": true}
}
]
}
現(xiàn)在,你可以將 ?kubernetes.io/ingress-bandwidth
? 和 ?kubernetes.io/egress-bandwidth
? 注解添加到 pod 中。例如:
apiVersion: v1
kind: Pod
metadata:
annotations:
kubernetes.io/ingress-bandwidth: 1M
kubernetes.io/egress-bandwidth: 1M
...
--network-plugin=cni
? 用來表明我們要使用 ?cni
?網(wǎng)絡(luò)插件,實際的 CNI 插件 可執(zhí)行文件位于 ?--cni-bin-dir
?(默認是 ?/opt/cni/bin
?)下, CNI 插件配置位于 ?--cni-conf-dir
?(默認是 ?/etc/cni/net.d
?)下。Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: