kubernetes - 服务 - pod 流量 - 选择器
问题描述
我建立
- 吊舱 p1; 服务 p1-s1;curl 输出 - pod1 - 有效!
- pod p2,服务 p2-s2 curl 输出 - pod2 - 有效!
- 我在选择器中创建了一个组合服务,我同时选择了标签 app=p1 和 app=p2 并观察到选择了最后一个选择器并且流量没有路由到第一个。这是预期的行为吗?
如果不是,我该如何重定向流量?
$ kubectl get pods --show-labels
NAME READY STATUS RESTARTS AGE LABELS
p1 1/1 Running 0 24s app=p1
p2 1/1 Running 0 21s app=p2
$ kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
p1-s1 NodePort 10.105.49.230 <none> 8888:30778/TCP 45s
p2-s2 NodePort 10.96.194.44 <none> 9999:32386/TCP 42s
$ curl 172.17.0.2:30778
"Pod1"
$ curl 172.17.0.2:32386
"Pod2"
综合服务
选择器:应用程序:p1 应用程序:p2 端口:-名称:p1 端口:8888 目标端口:3000 -名称:p2 端口:9999 目标端口:3000
$ kubectl get svc NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE 组合 NodePort 10.107.182.9 8888:30430/TCP,9999:30014/TCP 39s
$ curl 172.17.0.2:30430 "Pod2"
$ curl 172.17.0.2:30014 “Pod2”
解决方案
“.. 因为下一个键会覆盖前一个同名键”,服务仅在最后一个选择器的末尾创建一个端点。因此,流量被重定向到最后提到的 pod 键值。阅读线索了解详情。感谢@zerkms 的澄清。
推荐阅读
- jenkins - Jenkins API - 是否有用于只读访问的非用户(例如基于作业的)API 令牌?
- google-cloud-platform - Google Cloud 大量磁盘 I/O(操作)
- rest - 将 Angular 6 中的休息后响应作为客户端和 Spring 引导作为服务器 API
- visual-foxpro - 如何计算 VFP 中的条件?
- html - AngularJS Scroller Directive 用于创建没有库/插件的连续滚动图像
- linux - 如何在 BASH 中按名称排序然后修改日期
- javascript - 优化确保对象的属性不具有任何这些值的函数
- java - 如何模拟将返回非空值的多个对象
- python - 如何更改已打开流的缓冲?
- python - 带有 Agg 最小/最大日期的 Pandas Groupby