首页 > 编程语言 >在K8S中,nodePort的externalTrafficPolicy字段有什么作用?

在K8S中,nodePort的externalTrafficPolicy字段有什么作用?

时间:2024-02-29 10:00:43浏览次数:18  
标签:流量 externalTrafficPolicy 字段 集群 nodePort K8S 节点 路由

在 Kubernetes (K8s) 中,externalTrafficPolicy 字段是 Service 对象的一个属性,它主要应用于 NodePortLoadBalancer 类型的服务,用于控制外部流量进入集群后如何路由到后端的 Pods。

externalTrafficPolicy 可以设置为两种值:Cluster(默认值)和 Local

  1. Cluster

    • externalTrafficPolicy 设置为 Cluster 时,Kubernetes 将采用集群内部的负载均衡机制,无论外部流量来自哪个节点,都可能会被路由到集群中任何节点上的后端 Pods。这意味着即便流量最初到达的节点上有能够处理该流量的 Pod,也可能将流量发送到其他节点上的 Pod。这种策略有利于充分利用集群资源,确保负载均衡的效果。
  2. Local

    • externalTrafficPolicy 设置为 Local 时,Kubernetes 将仅把流量路由到接收外部流量的节点上的本地 Endpoints(Pods)。如果该节点上没有匹配的 Pod,则流量不会被转发到集群中的其他节点。启用本地流量策略有助于减少网络跳数,提高性能,尤其适用于那些需要考虑延迟敏感度的应用场景,但这也意味着可能会牺牲一定的负载均衡能力,因为并非所有节点都始终具有可用的本地副本。

综上所述,externalTrafficPolicy 字段的主要作用在于控制从集群外部流入的流量如何在集群内部进行分发,以此来调整流量路由策略以适应不同应用场景的需要,如是否需要全局负载均衡,或者优先考虑降低网络延迟。

标签:流量,externalTrafficPolicy,字段,集群,nodePort,K8S,节点,路由
From: https://www.cnblogs.com/huangjiabobk/p/18042769

相关文章

  • 在K8S中,nodePort默认端口范围是多少? 为什么是这个端口范围?
    在Kubernetes(K8s)中,NodePort服务类型的默认端口范围通常是30000-32767。这个范围是Kubernetes项目早期设定的标准,并且被广泛接受为默认配置。选择这个端口范围的原因有以下几点:避免冲突:低于30000的端口往往被系统保留给一些知名的网络服务和应用程序使用。设置较高......
  • k8s标签的增删改查和选择器
    在Kubernetes(K8s)中,标签(Label)是与资源对象相关联的键值对,用于实现多维度的资源分组管理功能。下面是关于Kubernetes标签的增删改查操作的简要说明:查询标签(查)要查看资源对象的标签,可以使用kubectlget命令并加上--show-labels选项。例如,要查看所有节点的标签,可以运行:......
  • k8s是如何保障滚动升级时下线的pod不被访问
    Kubernetes(k8s)通过一系列机制保障在滚动升级时,下线的Pod不再被访问。以下是一些主要的保障措施:Service抽象:在Kubernetes中,Pod通常不是直接暴露给外部访问的,而是通过Service来抽象和暴露。Service提供一个稳定的网络端点,无论背后的Pod如何变化,Service的IP和端......
  • 记一次酣畅淋漓的 K8s Ingress 排错过程(302,404,503,...)
    故事开始第1关:【流量重定向到/】第2关:【应用返回302,重定向到/,引入503错误】第3关:【静态资源访问遇到503问题】第4关:【静态资源访问遇到403问题】第5关:【WebSocketclosewithstatuscode1006】最后效果故事开始如果你配置过Ingress,那你一定遇到过......
  • k8s hpa自定义指标
    参考链接 https://blog.csdn.net/fly910905/article/details/105375822这个大佬写的挺好的。不再搬运了,仅不不懂的地方记录一下。哈哈哈模拟增加memory的脚本解释一下,因为我也第一次见到这么玩,命令也是新鲜#!/bin/bashmkdir/tmp/memorymount-ttmpfs-osize=40Mt......
  • K8s Controller 开发指南
    一个Kubernetes控制器是一个主动的协调过程,它会监视某个对象的期望desired状态,并且还会监视实际current状态,然后不断的尝试使当前的实际状态更接近期望的状态。最简单的实现方式是一个循环:for{desired:=getDesiredState()current:=getCurrentState()makeCha......
  • socket io 微服务 k8s 解决方案
    spingboot+socketio依赖对于socketio-client2.x版本<dependency><groupId>com.corundumstudio.socketio</groupId><artifactId>netty-socketio</artifactId><version>1.7.19</version></dependency>注册Naco......
  • 在K8S中,Pod优雅终止过程是什么?
    在Kubernetes(K8s)中,Pod的优雅终止过程是一个有序的过程,旨在确保Pod中运行的应用程序能够平滑关闭,释放资源,并尽可能减少因突然关闭带来的数据丢失和服务中断。以下是Pod优雅终止的一般步骤:删除Pod请求用户或控制器发出删除Pod的请求,比如通过kubectldeletepod<pod-name>......
  • 在K8S中,helm是什么?如何使用?
    在Kubernetes(K8s)中,Helm是一个用于简化Kubernetes应用程序部署和管理的包管理工具。它采用了声明式配置和模板化的概念,使得Kubernetes资源的打包、安装、升级、回滚等操作变得更加方便和高效。Helm主要由两个核心组件构成:HelmCLI(命令行接口):提供了一系列命令,让用户能够在本......
  • 在K8S中,etcd数据库中数据如何更改?
    在Kubernetes(K8s)中,etcd中的数据更改主要发生在以下几个场景中:创建、更新和删除Kubernetes资源对象:当用户在Kubernetes中创建(POST)、更新(PUT)或删除(DELETE)一个资源对象(如Pod、Service、Deployment等)时,KubernetesAPI服务器会将这些更改转换为对etcd的相应操作。API服务器会将更改......