【发布时间】:2019-02-03 15:40:59
【问题描述】:
我有一个包含 3 个 pod 的 k8s 部署,并且我已经设置了一个 NodePort 服务来将 SSH(端口 22)转发到 3 个 pod。一切都按预期工作,但每次我通过 SSH 登录时,我都会得到一个随机的 pod。我想让它变得粘稠,这样我总是能得到同一个豆荚,但我不确定这是否可能。
根据the documentation,设置sessionAffinity: ClientIP 可能不适用于NodePorts。我认为externalTrafficPolicy: Local 不会起作用,因为您需要使用 LoadBalancer 服务。我认为 LoadBalancer 服务对我来说不可行,因为我需要创建数百个这样的服务,而每个 LoadBalancer 都需要花钱并用完配额。
我在这里想知道的是,是否有可能创建一个服务,它不指向部署中的所有 3 个 pod,而是恰好指向 1 个 pod。这将有助于我的情况。我可以手动将一个特殊标签附加到 1 个 pod 并将服务选择器设置为该标签,但如果 pod 死亡并被替换,我觉得它很脆弱。
【问题讨论】:
-
一个服务不指向部署中的所有 3 个 pod,而是恰好指向 1 个 pod 我希望你能理解 kubernetes 的世界观与什么相反您正在描述,这将继续使这项任务越来越难。话虽如此,您是否愿意编写您的 own controller 来监视 pod 并移动标签?
标签: networking ssh kubernetes google-cloud-platform google-compute-engine