NSX DC能为容器云原生做些什么(2)

本文涉及的产品
应用型负载均衡 ALB,每月750个小时 15LCU
云防火墙,500元 1000GB
传统型负载均衡 CLB,每月750个小时 15LCU
简介: 临近年末,工作量突然猛增,都没有时间更新公众号~今日得空,我们继续来聊聊NSX DC能为容器云原生做些什么。

上回说到,NSX DC与容器集成后,能为管理员带来显而易见的三大好处,分别是:

0x01.IPAM解决混乱无章的地址规划

0x02.TRACE FLOW帮助管理员快速定位网络故障

0x03.Pod细粒度的QoS支持

今天,我们来聊一聊NSX DC建置的云原生网络还能提供哪些强大的功能。


0x04.灵活便捷的负载均衡功能实现在与一些企业IT交流的过程中,我发现大部分企业均采用外部专门的负载均衡器提供容器访问入口。在这种情况下,系统管理员需要面对以下几个问题:

  • 外部负载均衡器难以实现东西向负载均衡的需求
  • 容器入口(南北向负载均衡)很难做到自动化、灵活性的配置

我们知道,VMware NSX DC可提供网络功能虚拟化功能(后文称NFV),其中就包括了负载均衡器。那么,在采用NSX DC与容器集成的场景下,能否解决上述两个系统管理员的痛点呢?

先来看看东西向负载均衡的情况:

  • 创建一个名为nsx-demo的命名空间、四个容器Pod和一个服务
  apiVersion:v1
  kind:Service
  metadata:
    name: nsx-demo
    labels:
      app: nsx-demo
  spec:
    ports:
      - port: 80
    selector:
      app: nsx-demo

image.png

image.png

image.png

  • 我们来查看一下该服务的群集IP

image.png

  • 该IP地址为nsx-demo相关Pods的东西向负载均衡群集IP地址;
    查看流表,看到该东西向负载均衡器地址已经激活,并参与流量交互

image.png

  • 可以看到已经有访问流量被自动负载均衡到不同的Pod

image.png

  • 为了验证东西负载均衡器,我们使用另一个命令空间的Pod,尝试访问群集地址,确认流量被负载均衡到不同的POD

# wget -O- http://172.30.158.1

image.png

  • 第一次负载到192.168.0.37,第二次负载到192.168.0.35

image.png

  • 查看流表,可以看到这些记录

image.png

通过这个演示,各位可以发现NSX DC在为容器提供东西向负载均衡的时候,拥有2个特点:

  • 负载均衡依赖Linux的虚拟服务内核模块(IPVS)
  • 东西向的负载均衡场景下,NSX DC不会创建负载均衡器实例

那么,在提供南北向负载均衡的时候,NSX DC又是如何实现的呢?

  • 与验证东西向负载均衡一样,我创建了一个nsx-web命名空间、两个容器Pod和一个基于Service Type的负载均衡器
   apiVersion:v1
   kind:Service
   metadata:
     name: nsx-web
     labels:
      app: mod2
   spec:
     ports:
     - port: 80
      targetPort: 80
      protocol: TCP
      name: nsx-web
    selector:
      app: nsx-web
    type: LoadBalancer

image.png

  • 等待容器创建完成,查看负载均衡器IP地址
    可以看到相关容器的负载均衡器地址为192.168.8.133:80,而192.168.8.133是我实现在NSX DC Manager(后文称NSXMGR)上定义的,专门用于负载均衡器虚拟服务器网络地址的IP地址池中的一个可用地址

image.png

  • 在NSXMGR上查看创建的虚拟机服务器
    IP和端口与容器信息相匹配,并且自动关联了服务器池

image.png

  • 查看服务器池和成员服务器,可以看到相关成员服务器IP地址与容器命令行查看到的信息相匹配image.png

image.png


  • 外部用户访问负载均衡器IP地址
    可以看到不同的用户被负载均衡到两个内部Pod

image.png

image.png

在这种采用定义Service Type为LoadBalancer的场景下,每一个容器入口(南北向负载均衡器)都会由NSXMGR自动创建出一个虚拟负载均衡器,并且自动分配一个预先定义的可用的IP地址。用户使用YAML创建负载均衡器服务的时候,NCP会将这些信息提交给NSXMGR,NSXMGR在收到用户的配置请求后,自动完成所有的配置工作;不再需要管理员手动去负载均衡器管理界面进行配置,减轻了工作量,助力业务快速上线。

不过,有人会问如果使用这种方式来实现对容器业务的访问,业务数量与可路由的IP地址数量(负载均衡器IP地址池容量)需要满足1:1;强大的NSX DC能否对此情况进行优化呢?答案是肯定的!除了基于Service Type的负载均衡,NSX DC也支持Ingress形式的南北向负载均衡。

apiVersion:extensions/v1beta1
kind:Ingress
metadata:
  name: nsx-demo-ingress
spec:
  rules:
  - host: nsx-web-openshift.tenant2.teamv.local
    http:
      paths:
      - backend:
          serviceName: nsx-demo
          servicePort: 80

与之前的演示相同,我创建一个nsx-demo命名空间、两个容器Pod和一个Ingress入口
等待容器和入口创建完成

image.png

  • 在默认创建的HTTP负载均衡虚拟机服务器上,可以看到HTTP FORWARDING出现了入口转发匹配条件,与创建的容器信息一致

image.png

image.png

  • 确认负载均衡成员和虚拟服务器IP地址

image.png

image.png

  • 外部用户访问nsx-web.tenant2.teamv.local(域名),可以负载均衡到两个容器POD
    注意:外部需要添加DNS解析记录,直接使用IP地址无法触发HTTP FORWARDING规则

image.png

image.png

在这种基于Ingress的南北向负载均衡器场景中,不同的URI可以指向相同的IP地址,通过匹配不同的HTTP转发规则实现N:1的可路由IP地址分配。通过上述三个演示用例,各位可以看到NSX DC与容器集成后,提供满足东西向、南北向的负载均衡为业务及应用服务;系统管理员无需额外的负载均衡配置,NSX DC提供的Edge负载均衡完全可以满足容器业务的高性能、灵活性和自动化配置要求。

0x05.Pod细粒度的安全微分段,提供容器网络安全防护在之前的连载中,我们讲过NSX三个字母的含义,即网络安全任意
越来越多的企业已经从传统的数据中心组网,演变成一个集合了数据中心、分支机构、容器、虚拟化和公有云等等多元素的“虚拟云网络”。现在企业对于安全越发重视,NSX DC能否实现容器业务的安全防护呢?如果能,细粒度能否满足等保2.0定义的合规呢?在回答这个问题之前,我们先将目光从容器网络转移到普通的NSX DC逻辑网络拓扑上;无论是NSX DC产品中的NSX-V还是NSX-T,提供虚拟机安全防护的“分布式防火墙”都是由连接在逻辑交换机(虚拟机端口组)上虚拟机的虚拟网卡,与逻辑交换机(虚拟机端口组)的接口之间的IO链实现的。
在上一篇分享中,我提到NSX DC提供的容器NameSpace其实就是逻辑交换机,每一个容器Pod都会连接在NameSpace的某一个端口上,因此NSX DC同样可以实现容器的安全微分段,而且是Pod级别的细粒度。我们不妨来看一下这个用例:

  • 创建一组3-Tier应用

image.png

  • 等待2台Web、1台App、1台DB和1台Redis容器正常运行

image.png

  • 在NSXMGR界面,可以非常直观地查看到NAMESPACE YELB-K8S的状态

image.png

image.png

image.png

  • 根据NCP配置文件的定义,所有的容器分布式防火墙策略均会被创建在对应的Sections区间内,默认情况下,目前YELB-K8S容器可以被不受限制地访问

image.png

  • 同样地,该组容器可通过INGRESS实现南北向负载均衡,域名为yelb-k8s.tenant2.teamv.local

image.png

  • 默认情况下,用户可以通过域名访问容器应用,前端Web收到用户请求后,将由中间件yelb-appserver处理

image.png

  • 创建一组分布式防火墙策略
    注意,管理员也可以在NSXMGR上通过UI界面,手动创建策略

image.png

  • 在NSXMGR上,这些策略将会在对应的区域之间被创建

image.png

  • 在完成防火墙策略创建后,用户依旧可以正常访问YELB-K8S应用

image.png

  • 通过NSXMGR可以查看到Tenant1租户的一台服务器访问YELB-K8S应用的数据流走向

image.png

  • 同时对于阻挡的流量,分布式防火墙将直接进行处理,流量不会进入传输网络转发

image.png

在虚拟云网络环境越来越普遍的今天,安全边界越来越模糊,解耦网络边界与安全边界已经势在必行。对于普通的虚拟化环境而言,NSX DC能实现最小计算单元,即虚拟机的安全微分段防护;而对于容器环境来说,NSX DC同样能实现最小计算单元,即容器Pod的安全微分段防护。在上次的分享用例中,我演示了使用NSXMGR的TraceFlow功能,描绘端到端的数据流走向,来提高管理员的运维效率;同时NSXMGR也能提供Pod细粒度的QoS。在今天的最后一个用例中,我将演示NSX DC如何针对云原生网络提供端口镜像功能。

0x06.Pod细粒度的端口镜像,提供云原生网络运维支持

  • 创建一个UBUNTU容器

image.png

  • 在NSXMGR上创建新的端口镜像文件,将容器流量Mirror到特定的服务器,如172.16.18.120

image.png

  • 在逻辑交换机或者端口级别,关联该端口镜像配置文件

image.png

  • 在容器内部执行包括PING、CURL等操作

image.png

  • 在目标服务器通过Wireshark抓包,可以看到相互的通信流

image.png

  • 在测试用例结束后,恢复端口镜像配置

image.png

在传统的数据中心网络,当业务流量不出宿主机的场景下,管理员无法通过端口镜像实现抓包、分析和取证等工作。而NSX DC构建的云原生网络,很好地解决了这个运维痛点,是解耦网络边界与安全边界的一个典型应用。

现在,我们来总结一下演示过的NSX DC提供的网络与安全解决方案覆盖的对象:

  • VMware vSphere
  • KVM或者基于KVM的解决方案,如OpenStack
  • 裸金属服务器
  • 容器平台

NSX DC能够为异构的平台、多云平台等提供统一的虚拟云网络环境,提供目标对象最小计算单元细粒度的安全防护,同时提供标准API接口,满足与第三方产品的集成。在后续的分享中,我将演示VMware vRealize Automation与NSX DC产品集成的用例,提供自动化的网络与安全交付,敬请期待。


相关文章
|
20天前
|
Kubernetes Cloud Native 微服务
探索云原生技术:容器化与微服务架构的融合之旅
本文将带领读者深入了解云原生技术的核心概念,特别是容器化和微服务架构如何相辅相成,共同构建现代软件系统。我们将通过实际代码示例,探讨如何在云平台上部署和管理微服务,以及如何使用容器编排工具来自动化这一过程。文章旨在为开发者和技术决策者提供实用的指导,帮助他们在云原生时代中更好地设计、部署和维护应用。
|
17天前
|
监控 NoSQL 时序数据库
《docker高级篇(大厂进阶):7.Docker容器监控之CAdvisor+InfluxDB+Granfana》包括:原生命令、是什么、compose容器编排,一套带走
《docker高级篇(大厂进阶):7.Docker容器监控之CAdvisor+InfluxDB+Granfana》包括:原生命令、是什么、compose容器编排,一套带走
156 77
|
3天前
|
存储 Kubernetes 开发者
容器化时代的领航者:Docker 和 Kubernetes 云原生时代的黄金搭档
Docker 是一种开源的应用容器引擎,允许开发者将应用程序及其依赖打包成可移植的镜像,并在任何支持 Docker 的平台上运行。其核心概念包括镜像、容器和仓库。镜像是只读的文件系统,容器是镜像的运行实例,仓库用于存储和分发镜像。Kubernetes(k8s)则是容器集群管理系统,提供自动化部署、扩展和维护等功能,支持服务发现、负载均衡、自动伸缩等特性。两者结合使用,可以实现高效的容器化应用管理和运维。Docker 主要用于单主机上的容器管理,而 Kubernetes 则专注于跨多主机的容器编排与调度。尽管 k8s 逐渐减少了对 Docker 作为容器运行时的支持,但 Doc
29 5
容器化时代的领航者:Docker 和 Kubernetes 云原生时代的黄金搭档
|
15天前
|
供应链 安全 Cloud Native
阿里云容器服务助力企业构建云原生软件供应链安全
本文基于2024云栖大会演讲,探讨了软件供应链攻击的快速增长趋势及对企业安全的挑战。文中介绍了如何利用阿里云容器服务ACK、ACR和ASM构建云原生软件供应链安全,涵盖容器镜像的可信生产、管理和分发,以及服务网格ASM实现应用无感的零信任安全,确保企业在软件开发和部署过程中的安全性。
|
15天前
|
人工智能 Kubernetes Cloud Native
阿里云容器服务,智算时代云原生操作系统
2024云栖大会,阿里巴巴研究员易立分享了阿里云容器服务的最新进展。容器技术已成为云原生操作系统的基石,支持多样化的应用场景,如自动驾驶、AI训练等。阿里云容器服务覆盖公共云、边缘云、IDC,提供统一的基础设施,助力客户实现数字化转型和技术创新。今年,阿里云在弹性计算、网络优化、存储解决方案等方面进行了多项重要升级,进一步提升了性能和可靠性。
|
21天前
|
Kubernetes Cloud Native Docker
云原生之旅:从容器化到微服务
本文将带领读者踏上云原生的旅程,深入探讨容器化和微服务架构的概念、优势以及它们如何共同推动现代软件的发展。我们将通过实际代码示例,展示如何在Kubernetes集群上部署一个简单的微服务应用,并解释相关的配置和操作。无论你是云原生新手还是希望深化理解,这篇文章都将为你提供有价值的见解和实操指南。
|
1月前
|
Kubernetes Cloud Native Docker
云原生之旅:从传统架构到容器化服务的演变
随着技术的快速发展,云计算已经从简单的虚拟化服务演进到了更加灵活和高效的云原生时代。本文将带你了解云原生的概念、优势以及如何通过容器化技术实现应用的快速部署和扩展。我们将以一个简单的Python Web应用为例,展示如何利用Docker容器进行打包和部署,进而探索Kubernetes如何管理这些容器,确保服务的高可用性和弹性伸缩。
|
27天前
|
Kubernetes Cloud Native 开发者
云原生入门:从容器到微服务
本文将带你走进云原生的世界,从容器技术开始,逐步深入到微服务架构。我们将通过实际代码示例,展示如何利用云原生技术构建和部署应用。无论你是初学者还是有经验的开发者,这篇文章都将为你提供有价值的信息和启示。
|
1月前
|
运维 Cloud Native 云计算
云原生之旅:Docker容器化实战
本文将带你走进云原生的世界,深入理解Docker技术如何改变应用部署与运维。我们将通过实际案例,展示如何利用Docker简化开发流程,提升应用的可移植性和伸缩性。文章不仅介绍基础概念,还提供操作指南和最佳实践,帮助你快速上手Docker,开启云原生的第一步。
|
1月前
|
Kubernetes Cloud Native 云计算
云原生入门:Kubernetes 和容器化基础
在这篇文章中,我们将一起揭开云原生技术的神秘面纱。通过简单易懂的语言,我们将探索如何利用Kubernetes和容器化技术简化应用的部署和管理。无论你是初学者还是有一定经验的开发者,本文都将为你提供一条清晰的道路,帮助你理解和运用这些强大的工具。让我们从基础开始,逐步深入了解,最终能够自信地使用这些技术来优化我们的工作流程。

热门文章

最新文章