重新加载 Kubernetes ReplicationController 以获取新创建的服务

Reload Kubernetes ReplicationController to get newly created Service

有没有办法重新加载当前 replicationcontroller 创建的 运行 pods 以重新应用新创建的 services

示例:

我有一个由 ReplicationController 配置文件创建的 运行 pods。我删除了一个名为 mongo-svc 的服务,并使用不同的端口重新创建了它。有没有办法用新 mongo-svc 的新 IP 和端口更新 pod 的 env 文件?

'reapply' 是什么意思?

通常根据labels.In选择服务点的pods 也就是说,您可以从pods中添加/删除标签以将其包含/排除在服务中.

阅读此处了解有关定义服务的更多信息:http://kubernetes.io/v1.1/docs/user-guide/services.html#defining-a-service

有关标签的更多信息,请点击此处:http://kubernetes.io/v1.1/docs/user-guide/labels.html

希望对您有所帮助!

您可以 重新启动 pods 只需删除它们:如果它们链接到复制控制器,RC 将负责重新启动它们

kubectl delete pod <your-pod-name>

如果您有几个 pods,那么 copy/paste pod 名称就足够了,但是如果您有很多 pods,它就会变得很麻烦。

所以另一种删除 pods 并重新启动它们的方法是将 RC 缩小到 0 个实例,然后备份到您需要的数量。

kubectl scale --replicas=0 rc <your-rc>
kubectl scale --replicas=<n> rc <your-rc>

By-the-way,您可能还想查看“rolling-updates”以更加生产友好的方式执行此操作,但这意味着更新 RC 配置。

如果您希望同一个 pod 拥有新服务,答案是否定的。你可以(我强烈建议不要这样做)运行 kubectl exec <pod-name> -c <containers> -- export <service env var name>=<service env var value>。但你最好的选择是 运行 kubectl delete <pod-name> 并让你的复制控制器处理工作。

我已经 运行 遇到类似的问题,因为服务是 运行 在 kubernetes 之外,例如数据库,为了解决这个问题,我一直在创建这个 https://github.com/cpg1111/kubongo在不删除 pods 的情况下更新服务的端点。同样的想法也可以应用于 kubernetes 中的其他 pods 以自动化服务更新。基本上它监视一个特定的服务,当它的 IP 因任何原因发生变化时,它会更新所有 pods 而不会删除它们。这确实使用与 kubectl exec 相同的代码,但是它是自动化的,清理输入并确保 export 在所有 pods.

上执行