TF+K8s轻松上手丨通过Kubernetes的服务进行基本应用程序连接



  • 点击此处下载文档,查看本文所有相关链接。

    这是所有Kubernetes CNI插件所能提供的最基础和最根本的功能。应用程序Pods之间要能相互通信,而Kubernetes Services是确保Pods随时间推移来实现应用程序规模性和可用性的一种方式。

    使用场景

    所有主要的CNI插件都提供基本的Pod到Pod的连通性以及某些服务类型,例如ClusterIP。

    除此之外,Tungsten Fabric原生支持LoadBalancer。在AWS上运行时,LoadBalancer在清单中使用Service创建面向公众的AWS ELB,从而使您的应用程序可从Internet一步访问。

    这也意味着在本地和所有主要的公共云中,对所有集成Tungsten Fabric的Kubernetes,可以在应用程序中使用Kubernetes部署清单而无需更改。

    部署

    创建部署时,CNI与Kubernetes协同工作,为每个应用程序Pod分配网络IP地址,并将每个Pod“连接”到集群网络。

    *注意:大多数CNI通过创建一个overlay network来工作,这一网络在大多数情况下都包含在单个Kubernetes集群的边界内。所以,不同集群中的Pod无法直接通信。

    在本文档中我们不会介绍多集群方案,但是Tungsten Fabric能够支持此类配置。一次安装Tungsten Fabric就可以同时服务于多个Kubernetes集群。在这种情况下,即使Kubernetes集群本身位于不同的位置,来自不同集群的Pod也可以直接相互通信。*

    服务

    Kubernetes中的服务是“公开运行在一组Pod上的应用程序的抽象方法”。在大多数情况下,服务是简单的Round-Robin负载均衡器。它具有用于接收网络请求的虚拟IP地址(“VIP”),以及接受这些请求转发的零个或多个端点的IP地址。

    在大多数情况下,服务会通过在运行的Pod上查找匹配的标签(称为“选择器”,Selectors)来自动发现属于应用程序Pod的端点IP地址。

    应用程序的部署和服务示例

    确保您位于沙箱控制节点上,以root用户身份登录,并且位于正确的目录中:

    32de53d3-824f-47dd-9302-799bccf4814a-image.png

    查看cnawebapp-loadbalancer.yaml文件,查找以Kind: Deployment和 Kind: Service开头的部分

    68e7c9ab-9ddf-4872-92a0-e0feff23a94a-image.png

    注意:

    • spec.template.spec.containers.ports.containerPort在Deployments中显示Pod将侦听的TCP端口;

    • spec.ports 在服务中显示服务的VIP将监听的端口;

    • spec.selector在服务中会显示服务要向其发送流量的Pod上的标签。

    接下来,部署我们的示例应用程序,看看会发生什么:
    4e7650fa-636a-447f-8f4e-7e0b980077f8-image.png

    这将创建以下应用程序拓扑:

    f0ea5317-10c4-49ed-8406-3c6b860c2b56-image.png

    如果应用程序部署没有错误,我们应该能够看到:

    所有Pod都有自己的IP地址,并且正在各自的端口上监听:

    51a2427c-cb51-41ee-8abc-1f65d6867ee6-image.png

    所有服务都有VIP和正在监听的端口:

    21a7b90c-0def-473d-b441-2a50ae3717bc-image.png

    所有服务都发现了各自的端点:

    8a0d5a0d-6fd9-48d4-81b3-817fe8935497-image.png

    由于Tungsten Fabric提供了对Kubernetes的LoadBalancer服务支持,因此现在应该能够从Internet连接到我们的应用程序。我们可以找出负载均衡器的公共DNS名称:

    1b7f4905-13ae-4f38-aef0-efc7e0303f00-image.png

    让我们通过将网络浏览器指向该地址来进行检查,可以看到应用位于:
    aa01af9988cc311e9badf06b57ebf630-1452353610.us-west-1.elb.amazonaws.com

    00ebd604-96d5-4c02-accd-7c90b89101fc-image.png

    成功了!

    清理

    使用该应用程序后,可以随时取消部署:

    f6afa851-80b6-496b-88c1-3617f88ccd8e-image.png

    回顾和下一步

    在此用例中,我们使用Tungsten Fabric Kubernetes CNI插件并与AWS的Elastic Load Balancing集成,部署了示例应用程序,并且它可以从互联网访问。

    如果这就是我们想要的,那么目的已经达到了。但是,如果我们需要SSL卸载,或者想基于HTTP主机和/或路径将传入请求发送到不同的应用程序组件,则需要使用Kubernetes Ingress。用例2涵盖了这一场景。(用例2的详细内容近期发布,敬请关注)

    更多TF+K8s文章
    第一篇:TF Carbide 评估指南--准备篇


Log in to reply