欧美free性护士vide0shd,老熟女,一区二区三区,久久久久夜夜夜精品国产,久久久久久综合网天天,欧美成人护士h版

首頁綜合 正文
目錄

柚子快報(bào)邀請(qǐng)碼778899分享:k8s 多網(wǎng)卡方案multus

柚子快報(bào)邀請(qǐng)碼778899分享:k8s 多網(wǎng)卡方案multus

http://yzkb.51969.com/

kubernetes 多網(wǎng)卡方案之 Multus_CNI 部署以及基本使用

一、multus cni 出現(xiàn)的背景

在k8s的環(huán)境中啟動(dòng)一個(gè)容器,默認(rèn)情況下只存在兩個(gè)虛擬網(wǎng)絡(luò)接口(loopback 和 eth0), loopback 的流量始終都會(huì)在本容器內(nèi)或本機(jī)循環(huán),對(duì)業(yè)務(wù)起到支撐作用的是 eth0,能夠滿足大部分的業(yè)務(wù)場(chǎng)景。

但是當(dāng)一個(gè)應(yīng)用或服務(wù)既需要對(duì)外提供 API 調(diào)用服務(wù),也需要滿足自身基于分布式特性產(chǎn)生的數(shù)據(jù)同步(一些業(yè)務(wù)場(chǎng)景的控制面和數(shù)據(jù)面的分離場(chǎng)景),那么這時(shí)候一張網(wǎng)卡的性能顯然很難達(dá)到生產(chǎn)級(jí)別的要求,網(wǎng)絡(luò)流量延時(shí)、阻塞便成為此應(yīng)用的一項(xiàng)瓶頸。

為了實(shí)現(xiàn)生產(chǎn)環(huán)境的實(shí)際需求,出現(xiàn)了許多容器多網(wǎng)絡(luò)方案。根據(jù)開源社區(qū)活躍度、是否實(shí)現(xiàn) CNI 規(guī)范以及穩(wěn)定性,大部分場(chǎng)景使用 multus-cni 作為在 K8s 環(huán)境下的容器多網(wǎng)絡(luò)方案。

二、multus cni 介紹

Multus CNI 是一種符合CNI規(guī)范的開源插件,為實(shí)現(xiàn) K8s環(huán)境下容器多網(wǎng)卡而提出的解決方案并與其他 CNI 插件搭配使用。Multus CNI 本身不提供網(wǎng)絡(luò)配置功能,它是通過用其他滿足 CNI 規(guī)范的插件進(jìn)行容器的網(wǎng)絡(luò)配置。

如下圖所示,當(dāng)集群環(huán)境存在 Multus CNI 插件并添加額外配置后,將會(huì)發(fā)現(xiàn)此容器內(nèi)不再僅有 eth0 接口 CNI 是一組限于容器網(wǎng)絡(luò)面的規(guī)范,定義了容器網(wǎng)絡(luò)資源創(chuàng)建、管理的規(guī)則。其自身實(shí)現(xiàn)并提供了內(nèi)置且通用的網(wǎng)絡(luò)插件,同時(shí)為第三方實(shí)現(xiàn)其規(guī)范預(yù)留了擴(kuò)展。 cni類型如下:

類型作用插件Main負(fù)責(zé)容器接口(網(wǎng)橋、虛擬網(wǎng)卡)的創(chuàng)建bridge、ipvlan、macvlan、ptp等Ipampod Ip地址的分配管理host-local、dhcp、calico-ipam、static等Meta用于和第三方插件適配擴(kuò)展應(yīng)用或則內(nèi)核參數(shù)調(diào)整tuning、bandwidth、portmap等

以上可以得知,Multus CNI 屬于 Meta 類, 它可以與其他第三方插件適配,主插件來作為 Pod 的主網(wǎng)絡(luò)并且被 K8s所感知,它們可以搭配使用且不沖突。

Main 插件是用于在集群中創(chuàng)建額外的網(wǎng)絡(luò):

1:bridge:創(chuàng)建基于網(wǎng)橋的額外網(wǎng)絡(luò)可讓同一主機(jī)中的 Pod 相互通信,并與主機(jī)通信。

2:host-device:創(chuàng)建 host-device 額外網(wǎng)絡(luò)可讓 Pod 訪問主機(jī)系統(tǒng)上的物理以太網(wǎng)網(wǎng)絡(luò)設(shè)備。

3:macvlan:創(chuàng)建基于 macvlan 的額外網(wǎng)絡(luò)可讓主機(jī)上的 Pod 通過使用物理網(wǎng)絡(luò)接口與其他主機(jī)和那些主機(jī)上的 Pod 通信。附加到基于 macvlan 的額外網(wǎng)絡(luò)的每個(gè) Pod 都會(huì)獲得一個(gè)唯一的 MAC 地址。

4:ipvlan:創(chuàng)建基于 ipvlan 的額外網(wǎng)絡(luò)可讓主機(jī)上的 Pod 與其他主機(jī)和那些主機(jī)上的 Pod 通信,這類似于基于 macvlan 的額外網(wǎng)絡(luò)。與基于 macvlan 的額外網(wǎng)絡(luò)不同,每個(gè) Pod 共享與父級(jí)物理網(wǎng)絡(luò)接口相同的 MAC 地址。

5:SR-IOV:創(chuàng)建基于 SR-IOV 的額外網(wǎng)絡(luò)可讓 Pod 附加到主機(jī)系統(tǒng)上支持 SR-IOV 的硬件的虛擬功能 (VF) 接口。

###############################################################

Ipam(IP Address Management)插件主要用來負(fù)責(zé)分配 IP 地址:

1:dhcp插件,節(jié)點(diǎn)上需要有 DHCP server;

2:host-local插件 ,是給定子網(wǎng)范圍,在單個(gè)幾點(diǎn)上基于這個(gè)子網(wǎng)進(jìn)行 ip 地址分配;

3:static插件,靜態(tài)地址管理,直接指定 ip 地址使用的。

4:calico-ipam ,是 clalico cni 自己的 ip 地址分配插件,是一種集中式 ip 分配插件;

5:whereabouts ,也是一個(gè)集中式 ip 分配插件,用的比較少,使用了 sriov 設(shè)備才用到的,這個(gè)是 k8snetworkplumbingwg 社區(qū)開源的。

###########################################

Meta 插件:由 CNI 社區(qū)維護(hù)的內(nèi)部插件

1:flannel,這就是專門為 Flannel 項(xiàng)目提供的 CNI 插件;

2:tunning,是一個(gè)通過 sysctl 調(diào)整網(wǎng)絡(luò)設(shè)備參數(shù)的二進(jìn)制文件;

3:portmap ,是一個(gè)通過 iptables 配置端口映射的二進(jìn)制文件;

4:bandwidth ,是一個(gè)使用 Token Bucket Filter(TBF)來進(jìn)行限流的二進(jìn)制文件;

5:calico,是專門為 Calico 項(xiàng)目提供的 CNI 插件。

三、multus cni 部署

本次測(cè)試環(huán)境中使用的主cni為calico,網(wǎng)絡(luò)模式是ipip模式,如下:

[root@node1 ~]# kubectl get po -A | grep calico

kube-system calico-kube-controllers-75c594996d-x49mw 1/1 Running 5 (13d ago) 206d

kube-system calico-node-htq5b 1/1 Running 1 (13d ago) 206d

kube-system calico-node-x6xwl 1/1 Running 1 (13d ago) 206d

kube-system calico-node-xdx46 1/1 Running 1 (13d ago) 206d

#######查看IPIPMODE為Always

[root@node1 ~]# calicoctl get ippool -o wide

NAME CIDR NAT IPIPMODE VXLANMODE DISABLED DISABLEBGPEXPORT SELECTOR

default-ipv4-ippool 10.233.64.0/18 true Always Never false false all()

下載multus cni文件部署multus 服務(wù)

1: 克隆文件

git clone https://github.com/k8snetworkplumbingwg/multus-cni.git && cd multus-cni/deployments

##################################

2:部署服務(wù)

[root@node1 deployments]# kubectl apply -f multus-daemonset-thick.yml

customresourcedefinition.apiextensions.k8s.io/network-attachment-definitions.k8s.cni.cncf.io changed

clusterrole.rbac.authorization.k8s.io/multus changed

clusterrolebinding.rbac.authorization.k8s.io/multus changed

serviceaccount/multus changed

configmap/multus-daemon-config changed

daemonset.apps/kube-multus-ds created

[root@node1 deployments]#

#################################

3:查看multus服務(wù)是否正常

[root@node1 ~]# kubectl get ds -n kube-system | grep multus

kube-multus-ds 3 3 3 3 3 44s

[root@node1 ~]#

[root@node1 ~]# kubectl get po -o wide -n kube-system | grep multus

kube-multus-ds-fqdxg 1/1 Running 0 53s 192.168.5.126 node2

kube-multus-ds-gx2c7 1/1 Running 0 53s 192.168.5.27 node3

kube-multus-ds-z2j4n 1/1 Running 0 53s 192.168.5.79 node1

[root@node1 ~]#

multus cni作為ds 進(jìn)程,會(huì)在每個(gè)節(jié)點(diǎn)做已下操作

1:在每個(gè)節(jié)點(diǎn)運(yùn)行multus-daemon進(jìn)程

[root@node1 net.d]# ps -ef | grep multus

root 25811 25696 0 18:33 ? 00:00:00 /usr/src/multus-cni/bin/multus-daemon

root 31445 14072 0 18:43 pts/0 00:00:00 grep --color=auto multus

[root@node1 net.d]#

#################################

2:在每個(gè)節(jié)點(diǎn)的/opt/cni/bin/上生成一個(gè) Multus 二進(jìn)制可執(zhí)行文件。可執(zhí)行文件的作用是配置 Pod 的網(wǎng)絡(luò)棧,DaemonSet 的作用是實(shí)現(xiàn)網(wǎng)絡(luò)互通。

[root@node1 net.d]# ll /opt/cni/bin/ | grep multus

-rwxr-xr-x 1 root root 45946850 Nov 1 18:33 multus-shim

[root@node1 net.d]#

注意:一個(gè) Network Namespace 的網(wǎng)絡(luò)棧包括:網(wǎng)卡(Network interface)、回環(huán)設(shè)備(Loopback Device)、路由表(Routing Table)和 iptables 規(guī)則。

##########################

3:在每個(gè)節(jié)點(diǎn)的/etc/cni/net.d目錄下生成00-multus.conf,如下:

[root@node1 net.d]# cat 00-multus.conf | jq .

{

"capabilities": {

"bandwidth": true,

"portMappings": true

},

"cniVersion": "0.3.1",

"logLevel": "verbose",

"logToStderr": true,

"name": "multus-cni-network",

"clusterNetwork": "/host/etc/cni/net.d/10-calico.conflist", ##從此文件讀取集群calico網(wǎng)絡(luò)配置(版本不一樣,文件內(nèi)容可能會(huì)有差異,以自己環(huán)境為準(zhǔn))

"type": "multus-shim"

}

至此multus cni的部署已經(jīng)完成,接下來需要測(cè)試使用,網(wǎng)上的一些教程使用的大部分是macvlan的形式,比較簡(jiǎn)單。本次我們打算使用calico和flannel兩種cni相結(jié)合的方式來實(shí)現(xiàn)pod 的多網(wǎng)卡方案。

四、環(huán)境信息

已有環(huán)境的信息如下:

calico網(wǎng)絡(luò)作為master plugin,走eth0網(wǎng)卡;flannel網(wǎng)絡(luò)作為attachment網(wǎng)絡(luò),走eth1網(wǎng)卡

主機(jī)eth0eth1node1192.168.5.79192.168.10.11node2192.168.5.126192.168.10.12node3192.168.5.27192.168.10.13

每個(gè)節(jié)點(diǎn)使用eth0作為默認(rèn)路由

[root@node1 ~]# route -n

Kernel IP routing table

Destination Gateway Genmask Flags Metric Ref Use Iface

0.0.0.0 192.168.5.1 0.0.0.0 UG 0 0 0 eth0

10.233.90.0 0.0.0.0 255.255.255.0 U 0 0 0 *

10.233.90.1 0.0.0.0 255.255.255.255 UH 0 0 0 cali41f400bfcca

10.233.92.0 192.168.5.27 255.255.255.0 UG 0 0 0 tunl0

10.233.96.0 192.168.5.126 255.255.255.0 UG 0 0 0 tunl0

169.254.169.254 192.168.10.2 255.255.255.255 UGH 0 0 0 eth1

192.168.5.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0

192.168.10.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1

主機(jī)網(wǎng)絡(luò)拓?fù)淙缦拢?/p>

五、flannel部署

下載yaml文件

在主機(jī)運(yùn)行wget下載flannel的yaml 文件

[root@node1 ~]# wget https://raw.githubusercontent.com/flannel-io/flannel/master/Documentation/kube-flannel.yml

修改啟動(dòng)參數(shù)

1:此次是calico和flannel網(wǎng)絡(luò)分離使用不同的網(wǎng)卡,所以要修改flannel網(wǎng)絡(luò)使用的網(wǎng)卡為eth1

編輯flannel.yaml文件,添加如下內(nèi)容

containers:

- name: kube-flannel

image: docker.io/flannel/flannel:v0.22.3

command:

- /opt/bin/flanneld

args:

- --ip-masq

- --kube-subnet-mgr

- --iface=eth1 ####設(shè)置使用網(wǎng)卡為eth1

#######################################3

2:修改網(wǎng)絡(luò),避免和現(xiàn)有的calico以及物理網(wǎng)絡(luò)沖突

net-conf.json: |

{

"Network": "10.233.0.0/16",

"Backend": {

"Type": "vxlan" ###網(wǎng)絡(luò)模式為vxlan

}

}

部署flannel

1:部署flannel

[root@node1 ~]# kubectl apply -f flannel.yaml

namespace/kube-flannel created

clusterrole.rbac.authorization.k8s.io/flannel created

clusterrolebinding.rbac.authorization.k8s.io/flannel created

serviceaccount/flannel created

configmap/kube-flannel-cfg created

daemonset.apps/kube-flannel-ds created

[root@node1 ~]#

#################################

2:查看pod啟動(dòng)狀態(tài)

[root@node1 ~]# kubectl get po -A -o wide | grep flannel

kube-flannel kube-flannel-ds-6tkzg 1/1 Running 0 3m39s 192.168.5.126 node2

kube-flannel kube-flannel-ds-72ccp 1/1 Running 0 5m20s 192.168.5.79 node1

kube-flannel kube-flannel-ds-gvhlc 1/1 Running 0 3m47s 192.168.5.27 node3

[root@node1 ~]#

###########################

3:查看flannel的啟動(dòng)日志

[root@node1 ~]# kubectl logs kube-flannel-ds-6tkzg -n kube-flannel

Defaulted container "kube-flannel" out of: kube-flannel, install-cni-plugin (init), install-cni (init)

I1102 03:07:31.013498 1 main.go:212] CLI flags config: {etcdEndpoints:http://127.0.0.1:4001,http://127.0.0.1:2379 etcdPrefix:/coreos.com/network etcdKeyfile: etcdCertfile: etcdCAFile: etcdUsername: etcdPassword: version:false kubeSubnetMgr:true kubeApiUrl: kubeAnnotationPrefix:flannel.alpha.coreos.com kubeConfigFile: iface:[eth1] ifaceRegex:[] ipMasq:true ifaceCanReach: subnetFile:/run/flannel/subnet.env publicIP: publicIPv6: subnetLeaseRenewMargin:60 healthzIP:0.0.0.0 healthzPort:0 iptablesResyncSeconds:5 iptablesForwardRules:true netConfPath:/etc/kube-flannel/net-conf.json setNodeNetworkUnavailable:true useMultiClusterCidr:false}

W1102 03:07:31.013748 1 client_config.go:617] Neither --kubeconfig nor --master was specified. Using the inClusterConfig. This might not work.

I1102 03:07:31.133998 1 kube.go:145] Waiting 10m0s for node controller to sync

I1102 03:07:31.134230 1 kube.go:490] Starting kube subnet manager

I1102 03:07:31.145860 1 kube.go:511] Creating the node lease for IPv4. This is the n.Spec.PodCIDRs: [10.233.64.0/24]

I1102 03:07:31.146023 1 kube.go:511] Creating the node lease for IPv4. This is the n.Spec.PodCIDRs: [10.233.66.0/24]

I1102 03:07:32.134217 1 kube.go:152] Node controller sync successful

I1102 03:07:32.134272 1 main.go:232] Created subnet manager: Kubernetes Subnet Manager - node2

I1102 03:07:32.134290 1 main.go:235] Installing signal handlers

I1102 03:07:32.134579 1 main.go:543] Found network config - Backend type: vxlan

I1102 03:07:32.135308 1 match.go:259] Using interface with name eth1 and address 192.168.10.12

I1102 03:07:32.135345 1 match.go:281] Defaulting external address to interface address (192.168.10.12)

I1102 03:07:32.135446 1 vxlan.go:141] VXLAN config: VNI=1 Port=0 GBP=false Learning=false DirectRouting=false

W1102 03:07:32.178714 1 main.go:596] no subnet found for key: FLANNEL_SUBNET in file: /run/flannel/subnet.env

I1102 03:07:32.178731 1 main.go:482] Current network or subnet (10.233.0.0/16, 10.233.65.0/24) is not equal to previous one (0.0.0.0/0, 0.0.0.0/0), trying to recycle old iptables rules

I1102 03:07:32.181267 1 kube.go:511] Creating the node lease for IPv4. This is the n.Spec.PodCIDRs: [10.233.65.0/24]

I1102 03:07:32.229373 1 main.go:357] Setting up masking rules

I1102 03:07:32.232287 1 main.go:408] Changing default FORWARD chain policy to ACCEPT

I1102 03:07:32.234353 1 iptables.go:290] generated 7 rules

I1102 03:07:32.236378 1 main.go:436] Wrote subnet file to /run/flannel/subnet.env

I1102 03:07:32.236397 1 main.go:440] Running backend.

I1102 03:07:32.236791 1 iptables.go:290] generated 3 rules

I1102 03:07:32.236913 1 vxlan_network.go:65] watching for new subnet leases

###########################

4:確認(rèn)各個(gè)節(jié)點(diǎn)flannel插件以及網(wǎng)絡(luò)正常

[root@node1 ~]# ll /opt/cni/bin/ | grep flannel

-rwxr-xr-x 1 root root 2414517 Nov 2 11:03 flannel ###會(huì)在每個(gè)節(jié)點(diǎn)生成flannel的二進(jìn)制文件

[root@node1 ~]# cat /var/run/flannel/subnet.env ###每個(gè)節(jié)點(diǎn)可用網(wǎng)絡(luò)的CIDR

FLANNEL_NETWORK=10.233.0.0/16

FLANNEL_SUBNET=10.233.64.1/24

FLANNEL_MTU=1450

FLANNEL_IPMASQ=true

[root@node1 ~]#

[root@node1 ~]# ip a ###在每個(gè)節(jié)點(diǎn)多了一個(gè)flannel.1的網(wǎng)橋

49: flannel.1: mtu 1450 qdisc noqueue state UNKNOWN group default

link/ether d2:7e:4a:31:fe:e9 brd ff:ff:ff:ff:ff:ff

inet 10.233.64.0/32 scope global flannel.1

valid_lft forever preferred_lft forever

inet6 fe80::d07e:4aff:fe31:fee9/64 scope link

valid_lft forever preferred_lft forever

#############################################

5:創(chuàng)建NetworkAttachmentDefinition

編輯yaml文件內(nèi)容如下:

apiVersion: "k8s.cni.cncf.io/v1"

kind: NetworkAttachmentDefinition

metadata:

name: flannel

spec:

config: '{

"cniVersion": "0.3.0",

"type": "flannel",

"delegate": {

"hairpinMode": true,

"isDefaultGateway": false #這里要設(shè)為false,否則flannel會(huì)在容器里面添加默認(rèn)路由,走flannel生成的net1網(wǎng)卡;因?yàn)閏alico使用了默認(rèn)網(wǎng)卡eth0,所以容器里面的默認(rèn)路由也要走calico生成的容器網(wǎng)卡

}

}'

[root@node1 ~]# kubectl apply -f flannel-nad.yaml

networkattachmentdefinition.k8s.cni.cncf.io/flannel created

[root@node1 ~]#

[root@node1 ~]# kubectl get Network-Attachment-Definition -A

NAMESPACE NAME AGE

default flannel 27s

六、修改calico網(wǎng)絡(luò)使用網(wǎng)卡

因?yàn)榄h(huán)境在最初之前已經(jīng)部署了calico,是按照calico網(wǎng)絡(luò)默認(rèn)方式選擇的可用的ip地址,因?yàn)檫@次要測(cè)試流量分離所以最好要修改下。

calico選擇ip的方式有兩種

1:first-found:第一個(gè)接口的第一個(gè)有效IP地址,會(huì)排除docker網(wǎng)絡(luò),localhost。我們環(huán)境中有兩個(gè)網(wǎng)卡,所以要選擇一個(gè)有效的的網(wǎng)卡

2:can-reach=DESTINATION:可以理解為calico會(huì)從部署節(jié)點(diǎn)路由中獲取到達(dá)目的ip或者域名的源ip地址

我們檢查下目前calico使用的是哪種模式如下:

[root@node1 ~]# kubectl get ds -n kube-system | grep calico

calico-node 3 3 3 3 3 kubernetes.io/os=linux 207d

[root@node1 ~]#

###查看calico daemonset中IP_AUTODETECTION_METHOD 配置

[root@node1 ~]# kubectl get ds/calico-node -n kube-system -o yaml

- name: IP_AUTODETECTION_METHOD

value: can-reach=$(NODEIP) ###可以看到使用是can-reach方式,將本機(jī)eth0的ip作為流量網(wǎng)卡使用

####進(jìn)入pod查看環(huán)境變量,如下:

[root@node1 ~]# kubectl exec -it calico-node-htq5b -nkube-system bash

[root@node1 /]# env | grep IP_AUTODETECTION_METHOD

IP_AUTODETECTION_METHOD=can-reach=192.168.5.79 ###可以看到是本機(jī)eth0的ip

[root@node1 /]#

修改calico使用指定網(wǎng)卡eth0

有以下兩種方式

1:命令行執(zhí)行替換變量

[root@node1 ~]# kubectl set env daemonset/calico-node -n kube-system IP_AUTODETECTION_METHOD=interface=eth0

daemonset.apps/calico-node env updated

####修改完之后,pod自動(dòng)重啟如下:

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

calico-kube-controllers-75c594996d-x49mw 1/1 Running 5 (13d ago) 207d

calico-node-749ll 1/1 Running 0 12s

calico-node-hbz99 1/1 Running 0 33s

calico-node-lgpcj 1/1 Running 0 43s

##############################################

2:編輯daemonset ,如下:

[root@node1 ~]# kubectl edit daemonset/calico-node -n kube-system

- name: IP_AUTODETECTION_METHOD

value: interface=eth0 ###修改為eth0 ,效果和上面一樣,pod會(huì)自動(dòng)重啟

###############################################

3:進(jìn)入pod,查看是否生效

[root@node1 ~]# kubectl exec -it calico-node-749ll -nkube-system bash

[root@node3 /]# env | grep IP_AUTODETECTION_METHOD

IP_AUTODETECTION_METHOD=interface=eth0 ###變量已經(jīng)生效

[root@node3 /]#

[root@node3 /]#

七、啟動(dòng)pod測(cè)試

1:編輯pod yaml,如下:

---

apiVersion: v1

kind: Pod

metadata:

name: nginx

annotations:

k8s.v1.cni.cncf.io/networks: flannel

spec:

containers:

- name: nginx

image: docker.io/library/nginx:latest

imagePullPolicy: IfNotPresent

######################################################

2:?jiǎn)?dòng)pod,查看狀態(tài)

[root@node1 ~]# kubectl apply -f pod.yaml

pod/nginx created

[root@node1 ~]# kubectl get po -o wide ###默認(rèn)顯示的還是calico的網(wǎng)絡(luò)

NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES

nginx 1/1 Running 0 8s 172.16.28.2 node3

######################################################

3:此pod位于node3節(jié)點(diǎn),ssh到node3,進(jìn)入pod命名空間查看ip以及路由問題

[root@node3 ~]# crictl ps | grep nginx

fcfbae2ace1b9 12766a6745eea 4 minutes ago Running nginx 0 0365e4a0f167f nginx

[root@node3 ~]# crictl inspect fcfbae2ace1b9 | grep -i pid

"pid": 23237,

"pid": 1

"type": "pid"

[root@node3 ~]# nsenter -t 23237 -n bash

[root@node3 ~]# ip a

1: lo: mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000

link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

inet 127.0.0.1/8 scope host lo

valid_lft forever preferred_lft forever

inet6 ::1/128 scope host

valid_lft forever preferred_lft forever

2: tunl0@NONE: mtu 1480 qdisc noop state DOWN group default qlen 1000

link/ipip 0.0.0.0 brd 0.0.0.0

4: eth0@if79: mtu 1480 qdisc noqueue state UP group default

link/ether ea:25:5b:31:e1:69 brd ff:ff:ff:ff:ff:ff link-netnsid 0

inet 172.16.28.2/32 scope global eth0

valid_lft forever preferred_lft forever

inet6 fe80::e825:5bff:fe31:e169/64 scope link

valid_lft forever preferred_lft forever

6: net1@if81: mtu 1450 qdisc noqueue state UP group default

link/ether ea:86:51:86:34:69 brd ff:ff:ff:ff:ff:ff link-netnsid 0

inet 10.233.66.2/24 brd 10.233.66.255 scope global net1

valid_lft forever preferred_lft forever

inet6 fe80::e886:51ff:fe86:3469/64 scope link

valid_lft forever preferred_lft forever

net1就是使用flannel網(wǎng)絡(luò)獲取到的ip地址

################################################################

4:查看容器中的路由

[root@node3 ~]# route -n

Kernel IP routing table

Destination Gateway Genmask Flags Metric Ref Use Iface

0.0.0.0 169.254.1.1 0.0.0.0 UG 0 0 0 eth0

10.233.0.0 10.233.66.1 255.255.0.0 UG 0 0 0 net1

10.233.66.0 0.0.0.0 255.255.255.0 U 0 0 0 net1

169.254.1.1 0.0.0.0 255.255.255.255 UH 0 0 0 eth0

[root@node3 ~]#

以上可以看到默認(rèn)路由是容器內(nèi)部的eth0 ,走的物理機(jī)網(wǎng)卡的eth0

測(cè)試網(wǎng)絡(luò)是否可通,在容器的宿主機(jī)node3上測(cè)試兩個(gè)ip地址都可以通 從其他物理節(jié)點(diǎn)測(cè)試,calico網(wǎng)絡(luò)172段的可通,flannel的不可達(dá),因?yàn)閜od默認(rèn)路由走的eth0.

在創(chuàng)建一個(gè)pod,測(cè)試不同主機(jī)之間的pod能否互通

[root@node1 ~]# kubectl get po -o wide ###新建nginx2,位于node2節(jié)點(diǎn)

NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES

nginx 1/1 Running 0 32m 172.16.28.2 node3

nginx2 1/1 Running 0 3m45s 172.16.44.1 node2

進(jìn)入nginx2容器,ping nginx容器ip,如下:

[root@node2 ~]# ip a

1: lo: mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000

link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

inet 127.0.0.1/8 scope host lo

valid_lft forever preferred_lft forever

inet6 ::1/128 scope host

valid_lft forever preferred_lft forever

2: tunl0@NONE: mtu 1480 qdisc noop state DOWN group default qlen 1000

link/ipip 0.0.0.0 brd 0.0.0.0

4: eth0@if85: mtu 1480 qdisc noqueue state UP group default

link/ether 56:9b:fe:a4:da:5a brd ff:ff:ff:ff:ff:ff link-netnsid 0

inet 172.16.44.1/32 scope global eth0

valid_lft forever preferred_lft forever

inet6 fe80::549b:feff:fea4:da5a/64 scope link

valid_lft forever preferred_lft forever

6: net1@if87: mtu 1450 qdisc noqueue state UP group default

link/ether a6:41:e5:f8:b1:25 brd ff:ff:ff:ff:ff:ff link-netnsid 0

inet 10.233.65.2/24 brd 10.233.65.255 scope global net1

valid_lft forever preferred_lft forever

inet6 fe80::a441:e5ff:fef8:b125/64 scope link

valid_lft forever preferred_lft forever

[root@node2 ~]# ping 10.233.65.2 ##測(cè)試容器本身ip

PING 10.233.65.2 (10.233.65.2) 56(84) bytes of data.

64 bytes from 10.233.65.2: icmp_seq=1 ttl=64 time=0.141 ms

^C

--- 10.233.65.2 ping statistics ---

1 packets transmitted, 1 received, 0% packet loss, time 0ms

rtt min/avg/max/mdev = 0.141/0.141/0.141/0.000 ms

[root@node2 ~]# ping 10.233.66.2 ###測(cè)試node3節(jié)點(diǎn)ip,可通

PING 10.233.66.2 (10.233.66.2) 56(84) bytes of data.

64 bytes from 10.233.66.2: icmp_seq=1 ttl=62 time=4.77 ms

64 bytes from 10.233.66.2: icmp_seq=2 ttl=62 time=1.00 ms

^C

--- 10.233.66.2 ping statistics ---

2 packets transmitted, 2 received, 0% packet loss, time 1001ms

rtt min/avg/max/mdev = 1.001/2.889/4.777/1.888 ms

注意:在該環(huán)境中,如果使用networkpolicy,是能對(duì)容器的eth0顯示,并不能顯示net1網(wǎng)卡的流量策略,因?yàn)閒lannel本身不支持networkpolicy功能。

柚子快報(bào)邀請(qǐng)碼778899分享:k8s 多網(wǎng)卡方案multus

http://yzkb.51969.com/

相關(guān)閱讀

評(píng)論可見,查看隱藏內(nèi)容

本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場(chǎng)。

轉(zhuǎn)載請(qǐng)注明,如有侵權(quán),聯(lián)系刪除。

本文鏈接:http://gantiao.com.cn/post/18970918.html

發(fā)布評(píng)論

您暫未設(shè)置收款碼

請(qǐng)?jiān)谥黝}配置——文章設(shè)置里上傳

掃描二維碼手機(jī)訪問

文章目錄