Kubernetes最佳实践 映射外部服务

Kubernetes最佳实践创建小型容器
Kubernetes最佳实践。具有Kubernetes
最佳实践命名空间的Kubernetes组织。 Kubernetes可行性测试与就绪性和活力测试Kubernetes
最佳实践。设置查询和资源限制
Kubernetes最佳实践。正确断开Terminate的连接

如果您像大多数人一样,很可能会使用在群集外部运行的资源。您可能正在使用Taleo API使用Google Cloud Vision API发送文本消息或分析图像。

如果您在所有环境中使用相同的端点-服务器端请求接收点,并且不打算将服务器转移到Kubernetes,则在代码中直接具有端点服务是完全正常的。但是,还有许多其他方案。在这个Kubernetes最佳实践系列中,您将学习如何使用Kubernetes内置机制来发现集群内部和外部的服务。

广泛使用的外部服务的一个例子是在Kubernetes集群外部运行的数据库。与诸如Google Cloud Data Store或Google Cloud Spanner之类的云数据库对所有类型的访问使用相同的终结点不同,大多数数据库在不同情况下具有单独的终结点。
使用传统数据库(例如MySQL和MongoDB)的最佳实践通常要求您连接到用于不同环境的不同组件。您可能有一台用于生产数据的大型计算机,而一台用于测试环境的小型计算机。它们每个都有自己的IP地址或域名,但是当您从一种环境迁移到另一种环境时,您可能不想更改代码。因此,您可以使用Kubernetes内置服务来发现基于外部DNS的服务,而不是对这些地址进行硬编码,就像使用本机Kubernetes服务一样。



假设您在Google Compute Engine中运行MongoDB数据库。在您将其转移到集群之前,您将被困在这个混合世界中。

幸运的是,您可以使用Kubernetes静态服务使您的生活更轻松。在此示例中,我使用Google Cloud Launcher创建了MongoDB服务器。由于它是在同一网络(或Kubernetes VPC群集)上创建的,因此可以使用高性能的内部IP地址对其进行访问。



这是Google Cloud的默认设置,因此您无需进行任何配置。现在您有了IP地址,第一步就是创建服务。您可能会注意到此服务没有炉膛选择器。也就是说,我们创建了一个不知道将流量发送到哪里的服务。这将允许您手动创建终结点对象,该对象将接收来自该服务的流量。



以下代码示例显示端点使用与服务相同的mongo名称来确定数据库的IP地址。



Kubernetes将使用所有IP地址来查找端点,就像它们是常规的Kubernetes吊舱一样,因此现在您可以使用一个简单的连接字符串访问数据库,使用上述名称mongodb:// mongo。但是,根本不需要在代码中使用IP地址。

如果IP地址将来会更改,则只需使用新的IP地址更新端点,就无需以任何其他方式更改您的应用程序。

如果您使用托管在第三方主机上的数据库,则主机的所有者很可能为您提供了URI的统一资源标识符。因此,如果为您提供了IP地址,则可以简单地使用前面的方法。此示例表明,我在mLab主机上托管了两个MongoDB数据库。



其中一个是开发人员数据库,另一个是生产数据库。这些数据库的连接字符串如下-mLab为您提供了动态URI和动态端口。如您所见,它们是不同的。



为了忽略这一点,我们使用Kubernetes并连接到开发人员数据库。您可以创建一个外部Kubernetes服务名称,它将为您提供静态服务,该服务会将流量重定向到该外部服务。



该服务将执行简单的内核级CNAME重定向,这对性能的影响将降至最低。因此,您可以使用更简单的连接字符串。



但是,由于外部名称使用CNAME重定向,因此它无法执行端口转发。因此,此解决方案仅适用于静态端口,不能与动态端口一起使用。但是默认情况下,免费的mLab免费层为用户提供了动态端口号,您不能更改此端口号。这意味着对于dev和prod,您需要不同的连接命令行。坏消息是您将需要对端口号进行硬编码。那么如何使端口转发正常工作呢?

第一步是从URI获取IP地址。如果运行nslookup,主机名或ping URI命令,则可以获得数据库的IP地址。如果服务同时向您返回了多个IP地址,则可以在对象的端点处使用所有这些地址。



请记住,URI IP可能会更改,恕不另行通知,因此在产品中使用它们非常冒险。使用此IP地址,无需指定端口即可连接到远程数据库。因此,Kubernetes服务相当透明地执行端口转发。



通过映射外部资源或将外部资源映射到内部资源,您可以在将来最大程度地减少重构工作的情况下灵活地在群集中使用这些服务。它还可以简化管理并深入了解贵公司使用的外部服务。

即将继续...


一点广告:)


感谢您与我们在一起。你喜欢我们的文章吗?想看更多有趣的资料吗?通过下订单或向您的朋友推荐给开发人员的基于云的VPS,最低价格为4.99美元这是我们为您发明的入门级服务器 独特类似物:关于VPS(KVM)E5-2697 v3(6核)的全部真相10GB DDR4 480GB SSD 1Gbps从$ 19还是如何划分服务器?(RAID1和RAID10提供选件,最多24个内核和最大40GB DDR4)。

阿姆斯特丹的Equinix Tier IV数据中心的戴尔R730xd便宜2倍吗?在荷兰,我们有2台Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100电视戴尔R420-2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB-$ 99起!阅读有关如何构建基础设施大厦的信息。使用Dell R730xd E5-2650 v4服务器花费一欧元9000欧元的c类?

All Articles