返回介绍

PART Ⅰ : 容器云OPENSHIFT

PART Ⅱ:容器云 KUBERNETES

PART Ⅲ:持续集成与持续部署

PART Ⅴ:日志/监控/告警

PART Ⅵ:基础

PART Ⅶ:数据存储、处理

PART VIII:CODE

PART X:HACKINTOSH

PART XI:安全

openshift 的多租户网络

发布于 2024-06-08 21:16:47 字数 4884 浏览 0 评论 0 收藏 0

Openshift容器网络默认是基于Open vSwitch(OVS)实现的。

Openshift提供两种网络方案:

  • ovs-subnet(子网模式):为集群节点上的容器提供一个扁平化的二层虚拟网路,所有在这个二层网路中容器可直接通信。
  • ovs-multitenet(多租户模式):基于项目的网络隔离,即不同项目间的容器之间不能直接通信。启动多租户网络隔离后,每个项目创建后都会被分配一个虚拟网络ID(Virtual Network ID ,VNID).OVS网桥会为该项目的所有数据流量标记上VNID,在默认情况下,只有数据包上的VNID与目标容器所在项目的VNID匹配上后,数据包才允许被转发到目标容器中。当有些项目的容器应用是通过公共服务的,后期可通过配置将多个项目见的网络连通,或者将项目设置为全局可访问。

需要将集群中所有的master节点配置文件/etc/origin/master/master-config.yaml和node节点配置文件/etc/origin/node/node-config.yaml中的networkPluginName的属性值从redhat/openshift-ovs-subnet修改为redhat/openshift-ovs-multitenant,然后重启Openshift集群Master节点的origin-master-controllers.service服务和Node节点的origin-node.service服

  1. 在一个项目中的一个pod的终端中ping/telnet/curl/nslook另一个项目中的pod的ip地址或者对应svc的FQDN(<service>.<pod_namespace>.svc.cluster.local)

  2. 查看namespace的Netid是否一致

     $ oc get netnamespaces
     NAME                                NETID      EGRESS IPS
     default                             0          []
     kube-public                         5899696    []
     kube-service-catalog                0          []
     demo                                13843039   []
     dubbo                               11344186   []
     jenkins                             13843039   []
    

    当NETID相同时,表示这个两个project的网络是相通的

    当NETID为0时,表示这个Project的网络全局可访问

# project 1,2,3中所有的pod,service可以通过容器IP相互访问(通过service的FQDN不能相互访问)
oc adm pod-network join-projects --to=<project1> <project2> <project3>

#将某个project中所有的pod和service设置为全局可访问
oc adm pod-network make-projects-global <project2> <project3>

https://docs.okd.io/3.11/admin_guide/managing_networking.html

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文