【发布时间】:2021-02-18 00:38:07
【问题描述】:
我们需要外部客户端通过在 Kubernetes 容器/会话上运行的静态主机名连接到 POD。问题是,每当我们重新启动会话时,我们都会为该容器生成一个新的主机名。有没有办法为 pod 获取一个固定的主机名,这样每次重启时它都不会改变??
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
anaconda-app-0072b5a97aad4bc5ba708a405609ad2e-74757d95fd-4cfms 2/2 Running 521 18d
anaconda-app-048b92d480d34da3a6602eace5f4c1c4-84d5669674-drx2c 1/2 CrashLoopBackOff 5086 77d
anaconda-app-0a529b10874e4c79a361050897bf3a00-64fdf8967f-ctc9z 2/2 Running 521 18d
anaconda-app-128b6866e59a408d937768835c04666c-5b774b8977-rhbp7 1/2 CrashLoopBackOff 5087 18d
如果我们可以在会话重新启动时为 pod 获取一个静态名称,那将是非常棒的,这样我们就可以为客户端提供一个静态 IP/主机名?
【问题讨论】:
-
您应该在 Pod 前面有一个 Service,并且该 Service 的名称将是稳定的。
-
您在一个问题中提出了两个不同的问题,它们的答案大相径庭:(a)“可以为 pod 获取固定的主机名”,通过设置
spec: hostname:(b)“连接到通过静态主机名的 POD”更像是 David 所说的,让外部世界可靠地连接到 一个 Pod 需要大量的工作,因为这不是 k8s 对世界的看法 -
@DavidMaze 当我运行 $ kubectl get serviceaccounts 时,它确实表明我确实有 serviceaccount,“anaconda-enterprise”,但我的 PODS 总是生成类似“anaconda-app-0072b5a97aad4bc5ba708a405609ad2e-74757d95fd-4cfms”的内容并且每次会话重新启动时都不同
-
服务,而不是 ServiceAccount。是的,您的 Deployment 的每个副本都有不同的 pod 名称,并且每次您更改 Deployment 的任何部分时都会更改。
-
请阅读有关Service 的文档。有你需要知道的一切。如果您认为这不适合您(我的意思是服务,而不是阅读)结帐StatefulSet。如果那时您仍然不知道该怎么做,请回来并用以前获得的知识提出更详细的问题。
标签: python kubernetes anaconda tabpy anaconda-cluster