欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

k8s安裝calico時(shí)如何選擇網(wǎng)卡問(wèn)題

 更新時(shí)間:2024年07月30日 10:14:53   作者:跳躍音符#3712  
這篇文章主要介紹了k8s安裝calico時(shí)如何選擇網(wǎng)卡問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

1.了解calico的通信

默認(rèn)情況下calico使用的是IPIP模式進(jìn)行通信,所有節(jié)點(diǎn)之間建立tunl0隧道。

每創(chuàng)建一個(gè)pod在宿主機(jī)上都會(huì)產(chǎn)生一個(gè)以cali開(kāi)頭的虛擬接口,如下圖pod1生成了一個(gè)calixxxxx網(wǎng)卡,pod2生成了一個(gè)caliyyyyy虛擬網(wǎng)卡。

每個(gè)pod發(fā)出去的數(shù)據(jù)包會(huì)直接轉(zhuǎn)發(fā)到cali開(kāi)頭的網(wǎng)卡,這個(gè)接口跟pod里的網(wǎng)卡是veth pair的關(guān)系。

veth pair最直接的理解就是“網(wǎng)線直連”,pod1發(fā)出去的所有數(shù)據(jù)包,“閉著眼”轉(zhuǎn)發(fā)給calixxxxx,calixxxxx從其他地方收到的數(shù)據(jù)包“閉著眼”轉(zhuǎn)發(fā)給pod1。

請(qǐng)?zhí)砑訄D片描述

cali開(kāi)頭的網(wǎng)卡會(huì)連接到tunl0上,pod1和pod2通信時(shí),pod1發(fā)出的數(shù)據(jù)包先到達(dá)calixxxxx,然后進(jìn)入vms71的tunl0接口,再然后到達(dá)隧道的另一端vms72的tunl0接口,然后轉(zhuǎn)發(fā)到caliyyyy,最終到達(dá)了pod2。所以tunl0隧道的作用就是封裝所有pod之間的流量。

現(xiàn)在的問(wèn)題是tunl0隧道所走的物理線路是哪條呢?默認(rèn)情況下calico會(huì)自動(dòng)選擇,但是如果有多張網(wǎng)卡的話我們想手動(dòng)選擇網(wǎng)卡,下面分成5種情況來(lái)看tunl0如何選擇物理線路。

2.實(shí)驗(yàn)準(zhǔn)備

本實(shí)驗(yàn)共兩臺(tái)節(jié)點(diǎn),如下。

[root@vms71 ~]# kubectl get nodes
NAME            STATUS   ROLES                  AGE   VERSION
vms71.rhce.cc   Ready    control-plane,master   54m   v1.23.2
vms72.rhce.cc   Ready    <none>                 54m   v1.23.2
[root@vms71 ~]#

為了測(cè)試,特地把vms72上的網(wǎng)卡名做了修改,原來(lái)的ens32修改名為eth0,原來(lái)的ens33修改名為eth1。

vms71上ens32 ----- vms72上eth1   同一網(wǎng)段。
vms71上ens33 ----- vms72上eth0   同一網(wǎng)段。

同一網(wǎng)段的網(wǎng)卡,結(jié)合上圖,我這里并沒(méi)寫(xiě)錯(cuò)。

練習(xí)時(shí)會(huì)在vms71上創(chuàng)建pod1,在vms72上創(chuàng)建pod2,所編寫(xiě)的pod.yaml內(nèi)容如下

[root@vms71 ~]# cat pod.yaml 
apiVersion: v1
kind: Pod
metadata:
  creationTimestamp: null
  labels:
    run: pod1
  name: pod1
spec:
  nodeName: vms71.rhce.cc
  terminationGracePeriodSeconds: 0
  containers:
  - image: localhost/centos:test
    imagePullPolicy: IfNotPresent
    command: ["sh","-c","sleep 1d"]
    name: pod1
    resources: {}
  dnsPolicy: ClusterFirst
  restartPolicy: Always
status: {}
---
apiVersion: v1
kind: Pod
metadata:
  creationTimestamp: null
  labels:
    run: pod2
  name: pod2
spec:
  nodeName: vms72.rhce.cc
  terminationGracePeriodSeconds: 0
  containers:
  - image: localhost/centos:test
    imagePullPolicy: IfNotPresent
    command: ["sh","-c","sleep 1d"]
    name: pod2
    resources: {}
  dnsPolicy: ClusterFirst
  restartPolicy: Always
status: {}
[root@vms71 ~]#

第一種情況 指定網(wǎng)卡1

修改calico.yaml的內(nèi)容,找到IP_AUTODETECTION_METHOD

    - name: IP_AUTODETECTION_METHOD
     value: "interface=ens33,eth0"

這里指定tunl0隧道所對(duì)應(yīng)的物理接口為ens33或者eth0。

在vms71上他會(huì)選擇ens33,在vms72上會(huì)選擇eth0。

安裝calico。

[root@vms71 ~]# kubectl apply -f calico.yaml
configmap/calico-config created
    ...輸出...
[root@vms71 ~]#

創(chuàng)建測(cè)試用的pod。

[root@vms71 ~]# kubectl apply -f pod.yaml 
pod/pod1 created
pod/pod2 created
[root@vms71 ~]#
[root@vms71 ~]# kubectl get pods -owide
NAME   READY   STATUS    RESTARTS   AGE        IP             NODE        
pod1   1/1     Running   0          14s   10.244.118.193   vms71.rhce.cc 
pod2   1/1     Running   0          14s   10.244.5.194     vms72.rhce.cc 
[root@vms71 ~]#

整個(gè)拓?fù)鋱D應(yīng)該如下。

進(jìn)入到pod1里去,然后通過(guò)traceroute訪問(wèn) pod2的IP即 10.244.5.194。

[root@vms71 ~]# kubectl exec -it pod1 -- bash
[root@pod1 /]#
[root@pod1 /]# traceroute 10.244.5.194
traceroute to 10.244.5.194 (10.244.5.194), 30 hops max, 60 byte packets
 1  192-168-26-71.kubernetes.default.svc.cluster.local (192.168.26.71)  0.049 ms  0.009 ms  0.007 ms
 2  10.244.5.192 (10.244.5.192)  0.477 ms  0.414 ms  0.378 ms
 3  10.244.5.194 (10.244.5.194)  0.615 ms  0.577 ms  0.540 ms
[root@pod1 /]# exit
[root@vms71 ~]#

從這里可以看到在pod1發(fā)出去的包,直接到達(dá)隧道另一端即vms72上的tunl0,然后再轉(zhuǎn)發(fā)到pod2的。

那么vms71和vms72之間的隧道之間是怎么走的呢?

先查看vms71的路由。

[root@vms71 ~]# ip route  | grep tunl0
10.244.5.192/26 via 192.168.30.72 dev tunl0 proto bird onlink 
[root@vms71 ~]#

凡是去往網(wǎng)段10.244.5.192/26的數(shù)據(jù)包都發(fā)送到192.168.30.72(這是vms72的eth0接口,也是隧道tunl0的另一端)。

查看vms72的路由。

[root@vms72 ~]# ip route  | grep tunl0
10.244.118.192/26 via 192.168.30.71 dev tunl0 proto bird onlink 
[root@vms72 ~]#
凡是去往網(wǎng)段10.244.
```118.192/26的數(shù)據(jù)包都發(fā)送到192.168.30.71(這是vms71的ens33接口,也是隧道tunl0的另一端)。

刪除pod1和pod2。
```shell
[root@vms71 ~]# kubectl delete -f pod.yaml 
pod "pod1" deleted
pod "pod2" deleted
[root@vms71 ~]#
刪除calico。
[root@vms71 ~]# kubectl delete -f calico.yaml 
configmap "calico-config" deleted
    ...輸出...
[root@vms71 ~]#

第二種情況 指定網(wǎng)卡2

修改calico.yaml的內(nèi)容,修改IP_AUTODETECTION_METHOD的值。

      - name: IP_AUTODETECTION_METHOD
      value: "interface=ens32,eth1"

這里指定tunl0所使用的物理線路是ens32或者eth1,vms71上有ens32所以選擇ens32,vms72上有eth1則選擇eth1。

安裝calico。

[root@vms71 ~]# kubectl apply -f calico.yaml
configmap/calico-config created
    ...輸出...
[root@vms71 ~]#

創(chuàng)建pod。

[root@vms71 ~]# kubectl apply -f pod.yaml 
pod/pod1 created
pod/pod2 created
[root@vms71 ~]#
[root@vms71 ~]# kubectl get pods -owide
NAME   READY   STATUS    RESTARTS   AGE   IP               NODE 
pod1   1/1     Running   0          3s    10.244.118.193   vms71.rhce.cc 
pod2   1/1     Running   0          3s    10.244.5.194     vms72.rhce.cc  
[root@vms71 ~]#

兩個(gè)pod的IP保持和之前一樣。

進(jìn)入到pod1里去,然后通過(guò)traceroute訪問(wèn) pod2的IP即 10.244.5.194。

[root@vms71 ~]# kubectl exec -it pod1 -- bash
[root@pod1 /]# traceroute 10.244.5.194
traceroute to 10.244.5.194 (10.244.5.194), 30 hops max, 60 byte packets
 1  192-168-26-71.kubernetes.default.svc.cluster.local (192.168.26.71)  0.050 ms  0.009 ms  0.007 ms
 2  10.244.5.192 (10.244.5.192)  0.493 ms  0.407 ms  0.365 ms
 3  10.244.5.194 (10.244.5.194)  0.482 ms  0.468 ms  0.461 ms
[root@pod1 /]# exit
exit
[root@vms71 ~]#

查看vms71的路由。

[root@vms71 ~]# ip route  | grep tunl0
10.244.5.192/26 via 192.168.26.72 dev tunl0 proto bird onlink 
[root@vms71 ~]#

凡是去往網(wǎng)段10.244.5.192/26的數(shù)據(jù)包都發(fā)送到192.168.26.72(這是vms72的eth1接口,也是隧道tunl0的另一端)。

查看vms72的路由。

[root@vms72 ~]# ip route  | grep tunl0
10.244.118.192/26 via 192.168.26.71 dev tunl0 proto bird onlink 
[root@vms72 ~]#

凡是去往網(wǎng)段10.244.118.192/26的數(shù)據(jù)包都發(fā)送到192.168.26.71(這是vms71的ens32接口,也是隧道tunl0的另一端)。

刪除pod1和pod2。

[root@vms71 ~]# kubectl delete -f pod.yaml 
pod "pod1" deleted
pod "pod2" deleted
[root@vms71 ~]#

刪除calico。

[root@vms71 ~]# kubectl delete -f calico.yaml 
configmap "calico-config" deleted
    ...輸出...
[root@vms71 ~]#

第三種情況 跳過(guò)指定網(wǎng)卡

修改calico.yaml的內(nèi)容,修改IP_AUTODETECTION_METHOD的值

            - name: IP_AUTODETECTION_METHOD
              value: "skip-interface=eth1,ens32"

tunl0選擇物理網(wǎng)卡時(shí)跳過(guò)eth1或者ens32。

在vms71上跳過(guò)ens32的話只能選擇ens33,在vms72上跳過(guò)eth1的話只能選擇eth0。

安裝calico。

[root@vms71 ~]# kubectl apply -f calico.yaml
configmap/calico-config created
    ...輸出...
[root@vms71 ~]#

先查看vms71的路由

[root@vms71 ~]# ip route  | grep tunl0
10.244.5.192/26 via 192.168.30.72 dev tunl0 proto bird onlink 
[root@vms71 ~]#

凡是去往網(wǎng)段10.244.5.192/26的數(shù)據(jù)包都發(fā)送到192.168.30.72(這是vms72的eth0接口,也是隧道tunl0的另一端)。

先查看vms72的路由

[root@vms72 ~]# ip route  | grep tunl0
10.244.118.192/26 via 192.168.30.71 dev tunl0 proto bird onlink 
[root@vms72 ~]#

凡是去往網(wǎng)段10.244.118.192/26的數(shù)據(jù)包都發(fā)送到192.168.30.71(這是vms71的ens33接口,也是隧道tunl0的另一端)。刪除calico。

[root@vms71 ~]# kubectl delete -f calico.yaml 
configmap "calico-config" deleted
    ...輸出...
[root@vms71 ~]#

第四種情況 通過(guò)網(wǎng)絡(luò)連通性判斷

修改calico.yaml的內(nèi)容,修改IP_AUTODETECTION_METHOD的值。

- name: IP_AUTODETECTION_METHOD              
value: "can-reach=192.168.30.1"

tunl0要選擇能和192.168.30.1通信的那張網(wǎng)卡,在vms71上ens33網(wǎng)卡和192.168.30.1是同一個(gè)網(wǎng)段,能夠和192.168.30.1通信,被選中。

在vms72上eth0網(wǎng)卡和192.168.30.1是同一網(wǎng)段可以通信,被選中。

創(chuàng)建calico。

[root@vms71 ~]# kubectl apply -f calico.yaml
configmap/calico-config created
    ...輸出...
[root@vms71 ~]#

先查看vms71的路由

[root@vms71 ~]# ip route  | grep tunl0
10.244.5.192/26 via 192.168.30.72 dev tunl0 proto bird onlink 
[root@vms71 ~]#

凡是去往網(wǎng)段10.244.5.192/26的數(shù)據(jù)包都發(fā)送到192.168.30.72(這是vms72的eth0接口,也是隧道tunl0的另一端)。

先查看vms72的路由

[root@vms72 ~]# ip route  | grep tunl0
10.244.118.192/26 via 192.168.30.71 dev tunl0 proto bird onlink 
[root@vms72 ~]#

凡是去往網(wǎng)段10.244.118.192/26的數(shù)據(jù)包都發(fā)送到192.168.30.71(這是vms71的ens33接口,也是隧道tunl0的另一端)。

刪除calico。

[root@vms71 ~]# kubectl delete -f calico.yaml 
configmap "calico-config" deleted
    ...輸出...
[root@vms71 ~]#

第五種情況 通過(guò)cidr判斷

修改calico.yaml的內(nèi)容,修改IP_AUTODETECTION_METHOD的值。

- name: IP_AUTODETECTION_METHOD              
value: "cidr=192.168.26.0/24"

tunl0選擇選擇192.168.26.0/24網(wǎng)段的網(wǎng)卡,vms71選中的是ens32,vms72上選中的應(yīng)該是eth1了,因?yàn)樗麄兌际菍儆?92.168.26.0/24網(wǎng)段的。

創(chuàng)建calico。

[root@vms71 ~]# kubectl apply -f calico.yaml
configmap/calico-config created
    ...輸出...
[root@vms71 ~]#

查看vms71的路由。

[root@vms71 ~]# ip route  | grep tunl0
10.244.5.192/26 via 192.168.26.72 dev tunl0 proto bird onlink 
[root@vms71 ~]#

凡是去往網(wǎng)段10.244.5.192/26的數(shù)據(jù)包都發(fā)送到192.168.26.72(這是vms72的eth1接口,也是隧道tunl0的另一端)。

查看vms72的路由。

[root@vms72 ~]# ip route  | grep tunl0
10.244.118.192/26 via 192.168.26.71 dev tunl0 proto bird onlink 
[root@vms72 ~]#

凡是去往網(wǎng)段10.244.118.192/26的數(shù)據(jù)包都發(fā)送到192.168.26.71(這是vms71的ens32接口,也是隧道tunl0的另一端)。

刪除calico。

[root@vms71 ~]# kubectl delete -f calico.yaml 
configmap "calico-config" deleted
    ...輸出...
[root@vms71 ~]#

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • k8s如何給node添加標(biāo)簽(最新推薦)

    k8s如何給node添加標(biāo)簽(最新推薦)

    k8s集群如果由大量節(jié)點(diǎn)組成,可將節(jié)點(diǎn)打上對(duì)應(yīng)的標(biāo)簽,然后通過(guò)標(biāo)簽進(jìn)行篩選及查看,更好的進(jìn)行資源對(duì)象的相關(guān)選擇與匹配,這篇文章主要介紹了k8s如何給node添加標(biāo)簽,需要的朋友可以參考下
    2023-02-02
  • windows下搭建Consul集群

    windows下搭建Consul集群

    這篇文章介紹了windows下搭建Consul集群的方法,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • 如何在Centos中搭建 K8s 1.23 集群

    如何在Centos中搭建 K8s 1.23 集群

    文章詳細(xì)介紹了在CentOS上搭建Kubernetes 1.23集群的步驟,包括準(zhǔn)備環(huán)境、安裝Kubernetes軟件包、上傳離線鏡像、初始化集群、添加節(jié)點(diǎn)、安裝網(wǎng)絡(luò)插件以及測(cè)試驗(yàn)證,感興趣的朋友一起看看吧
    2025-03-03
  • k8s常用命令大全(最新推薦)

    k8s常用命令大全(最新推薦)

    這篇文章主要介紹了k8s常用命令大全,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-03-03
  • Kubernetes中創(chuàng)建命名空間實(shí)現(xiàn)方法

    Kubernetes中創(chuàng)建命名空間實(shí)現(xiàn)方法

    這篇文章主要為大家介紹了Kubernetes中創(chuàng)建命名空間實(shí)現(xiàn)方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11
  • 2022最新青龍面板對(duì)接機(jī)器人的詳細(xì)過(guò)程(傻妞對(duì)接onebot(oicq)協(xié)議實(shí)現(xiàn)機(jī)器人功能)

    2022最新青龍面板對(duì)接機(jī)器人的詳細(xì)過(guò)程(傻妞對(duì)接onebot(oicq)協(xié)議實(shí)現(xiàn)機(jī)器人功能)

    這篇文章主要介紹了2022最新青龍面板對(duì)接機(jī)器人的詳細(xì)過(guò)程(傻妞對(duì)接onebot(oicq)協(xié)議實(shí)現(xiàn)機(jī)器人功能),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-05-05
  • K8s中的臨時(shí)容器Ephemeral?Containers使用

    K8s中的臨時(shí)容器Ephemeral?Containers使用

    這篇文章主要介紹了K8s中的臨時(shí)容器Ephemeral?Containers使用,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • Kubernetes實(shí)現(xiàn)CI與CD配置教程

    Kubernetes實(shí)現(xiàn)CI與CD配置教程

    這篇文章主要為大家介紹了基于Kubernetes實(shí)現(xiàn)CI與CD配置教程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-05-05
  • k8s?常見(jiàn)面試題集錦

    k8s?常見(jiàn)面試題集錦

    這篇文章主要為大家介紹了k8s?常見(jiàn)面試題集錦,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-09-09
  • k8s?pod如何使用sriov

    k8s?pod如何使用sriov

    這篇文章主要介紹了k8s?pod如何使用sriov問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-07-07

最新評(píng)論