企业计算

Kubernetes服务发现

现代应用程序依靠微服务来保持可伸缩性和高效性。Kubernetes为微服务提供了完美的环境,并与它提供的工具和特性一起工作。当应用程序的每个部分都放在一个容器中时,整个系统就变得更具可伸缩性。

微服务和容器的使用也适用于当今的CI/CD工作流程。无需关闭整个系统进行更新,因为每个微服务(容器)都可以单独更新。这反过来又缩短了容器的生命周期。

在应用程序及其微服务的生命周期中,有些可能会失败并导致意外问题。此时服务网格可以帮助重新路由、安全性等。

  Kubernetes服务发现解释

  动态IP分配

在我们了解如何管理服务以及如何建立高效的服务发现之前,我们必须首先看看服务发现的主要挑战:IP分配;更具体地说,Kubernetes动态地将IP地址分配给pod和服务的方式。

是的,可以为单个pod和服务定义IP地址,但这样做实际上限制了Kubernetes环境的可伸缩性。环境默认为在每次重新启动集群、pod或服务时为pod和服务分配新的IP地址。

要克服这个挑战,有两种方法可以使用。首先是通过查看服务的环境变量。与Docker允许容器相互通信的方式类似,Kubernetes允许扫描注入容器的环境变量。

如果您有一个在多个端口上运行的服务,运行kubectl exec memcached-rm58b env命令,然后对服务名称执行一个快速grep,将显示分配给该服务的可用IP地址和端口。当然,这并不是管理服务发现的最有效方法。

  Kube DNS去营救

从长远来看,第二种方法通常被认为更有效,而且由于Kubernetes附加的Kube DNS,这种方法成为可能。顾名思义,Kube DNS是一个作为内部DNS解析器的附加组件。

Kube DNS更不可知,只依赖于名称空间。也不需要以不同的方式配置pod和服务。甚至不需要修改集群、pods和服务的配置文件,以允许基于DNS的服务发现。

Kube DNS还支持高级DNS查询和DNS策略。例如,您可以将每个pod配置为遵循不同于其运行的节点的DNS属性。这意味着您可以使用专用DNS区域自定义pod之间的通信方式。

也可以更进一步,在每个pod的基础上配置DNS策略。您只需将node DNS策略设置为None,然后手动配置每个pod以满足您的特定需要。

  标签和选择器

如前所述,您可以使用参数进一步影响pod和服务之间的通信方式。Kubernetes服务发现支持对高级控件使用标签和选择器。尤其是在管理复杂集群时,标签非常方便;可以将标签分配给组件和pod,以便于识别。

Kubernetes处理标签和选择器的方式使这些参数更易于使用。它们本质上是添加到元数据中的简单键值参数。是的,它们实际上不会影响系统或其他环境。在复杂的环境中,您可以跨pod和服务甚至节点自由使用标签和选择器。

接下来,我们有了复制控制器。同样,这个工具的名字说明了一切;它是一个允许基于Kubernetes的系统具有高可用性和可伸缩性的工具。您可以使用复制控制器来创建和管理副本pod并保持高可用性。同样简单的是,你可以在一次扫描中移除豆荚和它们的复制品。

  服务网格和高度可扩展的系统

为了完成SET,我们有与现有基础设施和平台相关的高级服务发现方法。AWS云图就是一个有趣的例子。AWS环境中的应用程序资源可以有唯一的名称,这些资源将由Cloud Map自动映射。服务一旦注册就自动成为可发现的,并且一旦pod或服务启动,注册过程就会发生。

最新的方法是使用服务网格使管理复杂的微服务阵列变得容易。服务网格为服务和pod的通信方式增加了标准化。如果您试图创建一个高可用性的系统,那么使用service mesh来保持pod在环境中的可见性是一个完美的解决方案。在本文中,我们详细介绍了一个完整的外部Kubernetes服务网格。

  图像标题

如果您的环境在AWS上,那么您可以使用AWS App mesh形式的服务网格功能。它使用API调用自动处理从流量路由、流量平衡、调用和电路中断等所有内容。所有微服务都可以启用App Mesh以便于管理。由于这个工具是Amazon生态系统的一部分,它会自动与其他工具(如Amazon EKS、IAM和VPC)一起工作。

KubNeNes服务发现是使该容器平台具有灵活性和灵活性的要素之一。通过标准化,服务网格等高级方法无疑使Kubernetes服务发现更加强大。只要服务在运行,就可以使用正确的API调用来向每个pod提供数据,而不会造成中断。

本文由探界科技编译整理!

本文由 探界网 作者:行者 发表,转载请注明来源!

关键词:,

热评文章