Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何阻止kubernetes群集?_Kubernetes_Google Cloud Platform_Google Kubernetes Engine - Fatal编程技术网

如何阻止kubernetes群集?

如何阻止kubernetes群集?,kubernetes,google-cloud-platform,google-kubernetes-engine,Kubernetes,Google Cloud Platform,Google Kubernetes Engine,我在一个kube-up.sh的帮助下在一个谷歌计算引擎上启动了Clater。此脚本创建了主节点和仆从组。在我不再需要它之后,我想停止一个集群并关闭所有虚拟机,这样就不会浪费金钱来处理实例。当我关闭它时(我只是关闭了我所有的集群虚拟机,因为我不知道另一种方法),然后在某个时候重新启动,我的集群将不再工作。“kubectl get nodes”显示的节点信息不正确(例如,我有一个B C nodes==仆从,它只显示甚至不存在的D),所有命令的运行速度都非常慢。也许我把它关掉了不正确。propery如

我在一个kube-up.sh的帮助下在一个谷歌计算引擎上启动了Clater。此脚本创建了主节点和仆从组。在我不再需要它之后,我想停止一个集群并关闭所有虚拟机,这样就不会浪费金钱来处理实例。当我关闭它时(我只是关闭了我所有的集群虚拟机,因为我不知道另一种方法),然后在某个时候重新启动,我的集群将不再工作。“kubectl get nodes”显示的节点信息不正确(例如,我有一个B C nodes==仆从,它只显示甚至不存在的D),所有命令的运行速度都非常慢。也许我把它关掉了不正确。propery如何停止集群并停止VMs,以便在某个时间内再次启动它?(不删除)

我有什么群集:

kubernetes-master             | us-central1-b
kubernetes-minion-group-nq7f  | us-central1-b
kubernetes-minion-group-gh5k  | us-central1-b
显示“kubectl获取节点”命令的内容:


在关闭主节点之前,它的显示是正确的(仆从的名称和计数是相同的)。

除非我有误解,否则听起来像是你试图通过计算引擎单独停止虚拟机来杀死集群。如果是这样,容器引擎将看到虚拟机已被杀死,并在它们的位置启动新的虚拟机以保持集群健康。如果要停止集群,必须通过容器引擎接口停止。通过这种方式,它将知道杀死节点不是一个错误,它将关闭所有已配置的VM和磁盘。

对我来说,最简单的方法是首先编辑集群配置,在其中一列中是副本/吊舱的数量,将吊舱的数量从3减少到零,这样信息仍然可以保存,但是这些资源不会处于活动状态,因此您不会被收费。

使用
kubectl delete deployment\u name

而不是kubectl删除POD——全部

之后,
kubectl drain node\u name
将为维护节点做好准备,因此您可以使用
kubectl delete node\u name
重新启动或删除节点

如果您删除了所有数据,请使用
kubeadm reset
清除所有数据并删除群集 或者,如果您使用GKE,只需删除集群。

感谢您的提示

您可以按照以下步骤从Kubernetes群集分离所有活动节点

1-转到Kubernetes引擎仪表板并选择群集。

2-转到“详细信息”并单击“编辑”,将池大小设置为零(0)

3-验证节点正在计算引擎仪表板上关闭


如果您使用的是kubeadm,则无法直接关闭。唯一的办法是复位


kubeadm reset

我已经找到了解决这个问题的方法,因为在开发阶段工作时,由于谷歌云收费,我面临着同样的问题。一旦您发出停止这些实例的命令,Kubernetes就会严格地重新启动google cloud compute VM,因为kubenetes就是这样设计的。例如:

gcloud compute instances stop [instance-name] --async --zone=us-central1-b
将停止实例一次,然后kubernetes将在意识到实例已关闭时自动触发重启。此命令将完美地用于任何其他实例,但不适用于使用Kubernetd cluster创建的实例

因为kubernetes正在处理计算实例,因为它倾向于重新启动被关闭的实例。为了停止实例tp以降低操作成本,您必须使用以下命令排空Kubernetd节点

停止计算VM实例。
  • 使用
    kubectl get nodes
    获取运行的od节点列表。这将列出在Kubernetd集群的当前上下文中运行的节点
  • 为了停止kuberneted服务,您可能需要关闭处于排放模式的所有节点。使用以下命令
    kubectl drain[pod/node name]
  • 然后使用gcloud命令关闭计算实例,使用以下命令
    gcloud compute instances stop[instances name]--async--zone=[zone]
    。这将停止VM实例,kubernetes不会触发实例的自动重启,因为它的节点/吊舱已经关闭
要重新启动计算VM实例
  • 使用以下命令重新启动计算VM实例
    gcloud计算实例start[instances name]--async--zone=[zone]
    。但是这个命令不足以开始使用kubernetes集群。您需要
    uncordon
    kubernetes节点,我们在上一步中已经耗尽了这些节点
  • 由于我们的节点处于
    drain
    模式,因此使用此命令将它们调出
    kubectl uncordon[node/pod name]
  • 现在,您将能够访问kubernetes群集节点公开的API

注意:使用google cloud console也可以实现同样的解决方案,但我是一名DevOps从业者,所以我一直在编写脚本来自动化工作流,我希望为您编写一个小脚本来实现这一点,从长远来看,这将对您有所帮助。

有点不清楚,可能是离题了。可能是一个更好的提问地方,但你需要显示命令。@BasileStarynkevitch我编辑了这个问题,并从我的计算引擎和控制台发布了一些屏幕截图。谢谢你的建议,我也会把它贴在那里。图片链接的味道不好,我们更喜欢缩进文本的命令。@BasileStarynkevitch好的,谢谢!我将其改为文本。您应该描述如何“关闭”集群。如果部署是使用GKE进行的,从版本1.7开始,大多数节点池现在都可以了,至少现在没有所谓的“容器引擎”,可能是指Kubernetes引擎。请参阅。刚刚尝试了此操作,但出现一个错误,指出最小池大小必须为1。请转到GCP控制台>Kubernetes引擎>群集,然后单击目标群集,显示其详细信息。(注意
Total size
,当前不是零。)向下滚动到底部,以查看节点池列表(通常只有0个)
gcloud compute instances stop [instance-name] --async --zone=us-central1-b