kafa部署在k8s中,并且使用statefulset 方式部署,应用pod连接kafka 使用  kafka-0.kafka-hs.sy-platform-demo.svc.cluster.local.:9093, 如果k8s 外部开发测试,无法连接,所以需要外部网络与pod service网络打通

#kafka注册到zk中

[zk: localhost:2181(CONNECTED) 5] get /brokers/ids/0{"jmx_port":-1,"timestamp":"1578999678086","endpoints":["PLAINTEXT://kafka-0.kafka-hs.sy-platform-demo.svc.cluster.local.:9093"],"host":"kafka-0.kafka-hs.sy-platform-demo.svc.cluster.local.","version":3,"port":9093}

cZxid= 0x1300000caactime= Tue Jan 14 11:01:18 UTC 2020mZxid= 0x1300000caamtime= Tue Jan 14 11:01:18 UTC 2020pZxid= 0x1300000caacversion= 0dataVersion= 0aclVersion= 0ephemeralOwner= 0x36f841793790042dataLength= 215numChildren= 0

网络图谱如下

关闭完整的节点到节点BGP网格

如果要为Calico网络显式配置BGP拓扑,则需要关闭完整的节点到节点网格。有关更改全局BGP设置的说明,nodeToNodeMeshEnabled 设置为flase

如果您是从头开始构建网络的,不需要完整的节点到节点网格,我们建议在配置节点之前关闭网格。如果要将网络从全网状拓扑更新为其他拓扑(例如,开始使用路由反射器群集来增加缩放比例),请在禁用网状结构之前配置适当的对等点,以确保服务的连续性。

注意: 会出现无法访问

先决条件:calicoctl 已安装并配置。

1 首先 是否具有defaultBGP配置资源

[[email protected] ceph_rbd]# calicoctlget bgpconfig defaultFailed toget resources: resource does not exist: BGPConfiguration(default) with error: the server could not find the requested resource (get BGPConfigurations.crd.projectcalico.org default) #没有创建过

2.请使用以下命令创建资源。在执行前,根据需要调整nodeToNodeMeshEnabled和和asNumber线和值。

cat << EOF | calicoctl create -f -apiVersion: projectcalico.org/v3

kind: BGPConfiguration

metadata:

name:defaultspec:

logSeverityScreen: Info

nodeToNodeMeshEnabled:falseasNumber:63400

3. 如果资源确实存在,请使用以下命令检索它并将其保存到文件中。

calicoctl get bgpconfig default --export -o yaml > bgp.yaml

4 打开bgpconfig设置文件,修改nodeToNodeMeshEnabled或asNumber根据需要,然后保存该文件。有关这些设置的详细信息,请参考BGP配置资源。

vim bgp.yaml

5. 替换现有的BGP配置设置。

calicoctl replace -f bgp.yaml

配置集群内网反射器(网关)

对于较大的部署,您可以禁用完整的节点到节点网格,并配置一些节点以提供集群内路由反射。这样,每个节点仍将获得所有工作负载路由,但使用的BGP连接数量要少得多。

确定一个或多个Calico节点充当路由反射器。只要该节点保持正常运行,就只需要一个节点,但是我们建议选择两个或三个节点,以便在其中一些节点需要停机时间进行维护时继续正确的路由传播。

修改每个节点的节点资源,以:

将节点设置spec.bgp.routeReflectorClusterID为非空的群集ID,例如224.0.0.1

添加表明该节点是路由反射器的标签。

查看所有节点

[[email protected] ~]# calicoctl getnode

NAME

master1

master2

master3

node1

node2

node3

node4

使用一个节点充当反射器

命令如下:calicoctl get node --export -o yaml > node.yml

calicoctl get node node4 --export -o yaml > node4.yaml

apiVersion: projectcalico.org/v3

kind: Node

metadata:

annotations:

projectcalico.org/kube-labels: ‘{"beta.kubernetes.io/arch":"amd64","beta.kubernetes.io/os":"linux","kubernetes.io/arch":"amd64","kubernetes.io/hostname":"node4","kubernetes.io/os":"linux"}‘creationTimestamp:"2020-04-01T07:16:09Z"labels:

beta.kubernetes.io/arch: amd64

beta.kubernetes.io/os: linux

i-am-a-route-reflector: "true"kubernetes.io/arch: amd64

kubernetes.io/hostname: node4

kubernetes.io/os: linux

name: node4

resourceVersion:"3249621"uid: b855402d-ff5c-469b-87e1-0208ebf2c90e

spec:

bgp:

ipv4Address:172.16.230.28/24ipv4IPIPTunnelAddr:10.20.3.64routeReflectorClusterID:172.16.230.254 #添加

编辑node.yml,使其包括

metadata:

labels:

i-am-a-route-reflector: truespec:

bgp:

routeReflectorClusterID:172.16.230.254

然后应用更新的YAML。

calicoctl apply -f node4.yml

配置BGPPeer资源,以告知其他Calico节点与路由反射器节点对等:

calicoctl apply -f - <

kind: BGPPeer

apiVersion: projectcalico.org/v3

metadata:

name: peer-to-rrs

spec:

nodeSelector:!has(i-am-a-route-reflector)

peerSelector: has(i-am-a-route-reflector)

EOF

配置BGPPeer资源,使路由反射器节点相互对等:

calicoctl apply -f - <

kind: BGPPeer

apiVersion: projectcalico.org/v3

metadata:

name: rr-mesh

spec:

nodeSelector: has(i-am-a-route-reflector)

peerSelector: has(i-am-a-route-reflector)

EOF

配置IP-in-IP 模式

Always: 永远进行 IPIP 封装(默认)

CrossSubnet: 只在跨网段时才进行 IPIP 封装,适合有 Kubernetes 节点在其他网段的情况,属于中肯友好方案

Never: 从不进行 IPIP 封装,适合确认所有 Kubernetes 节点都在同一个网段下的情况

将IP-in-IPipipMode设置Always为时,Calico将使用IP-in-IP路由从启用了Calico的主机发出的所有流量到IP池中的所有Calico网络容器和VM。

使用的IP-in-IPipipMode的CrossSubnet,IP-in-IP封装也可以选择性地执行,仅用于跨越子网边界的流量。

导出ippool配置

calicoctl get ippool default-ipv4-ippool -o yaml > ippool.yaml

修改 ipipMode 值为 CrossSubnet

[[email protected] ~]# cat ippool.yaml

apiVersion: projectcalico.org/v3

kind: IPPool

metadata:

creationTimestamp:"2020-04-01T07:58:10Z"name:default-ipv4-ippool

resourceVersion:"21004"uid: dd5b3e61-8a58-44d0-aac5-d248430a017c

spec:

blockSize:26cidr:10.20.0.0/16ipipMode: CrossSubnet

natOutgoing:truenodeSelector: all()

vxlanMode: Never

执行

calicoctl apply -f ippool.yaml

添加路由:

172.16.230.249网段

route add 10.20.0.0 mask 255.255.0.0 172.16.230.28route add10.254.0.0 mask 255.255.192.0 172.16.230.28

参考:

原文:https://www.cnblogs.com/fengjian2016/p/12696966.html

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐