在docker-for-desktop OSX上删除kubernetes集群

Joh*_*ith 12 docker kubernetes kubectl minikube

什么是等效的命令minikube delete泊坞窗换桌面上OSX

据我了解,minikube创建了一个VM来托管其kubernetes集群,但我不明白docker-for-desktop如何在OSX上管理它.

VAS*_*VAS 19

在Docker中删除Kubernetes for OS X是一项非常容易的任务.

转到Preferences,打开Reset选项卡,然后单击Reset Kubernetes cluster.

在此输入图像描述

在此之前使用Kubectl创建的所有对象都将被删除.

您还可以重置docker VM image(Reset disk image)和所有设置(Reset to factory defaults),甚至卸载Docker.

  • 有什么办法可以从命令行做到这一点?每次都进入用户界面很糟糕。 (4认同)
  • 在Mac版Docker(18.06.1-ce)上,没有“重置Kubernetes”集群按钮。但是,禁用Kubernetes并在Kubernetes选项卡上单击Apply是可行的。 (2认同)

VAS*_*VAS 16

在最近的 Mac ( 2.1.7 ) Docker Edge 版本中,Preferences设计已更改。现在您可以通过切换到Preferences窗口右上角的 bug 平面来重置 Kubernetes 集群和其他 docker 方面:

注意:只有启用了 Kubernetes 集群,您才能重置它。如果取消选中“启用 Kubernetes”复选框,“重置 Kubernetes 集群”按钮将变为非活动状态。

在此处输入图片说明

为方便起见,主首选项平面的 Kubernetes 选项卡上还显示了“重置 Kubernetes 集群”:

在此处输入图片说明

  • 重新设计的不幸之处在于,如果您停留在“Kubernetes 正在启动”上,则无法禁用它。 (9认同)
  • 不,这没有帮助。我也被困住了 尝试找到配置以在控制台中禁用它 (2认同)

VAS*_*VAS 6

要使用命令行重置 Docker-desktop Kubernetes 集群,请将以下内容放入文件 ( dd-reset.sh) 并将其标记为可执行 ( chmod a+x dd-reset.sh)

#!/bin/bash

dr='docker run -it --rm --privileged --pid=host debian nsenter -t 1 -m -u -n -i'

${dr} sh -c 'export PATH=$PATH:/containers/services/docker/rootfs/usr/bin:/containers/services/docker/rootfs/usr/local/bin:/var/lib/kube-binary-cache/ && \
if [ ! -e /var/run/docker.sock ] ; then ln -s /containers/services/docker/rootfs/var/run/docker.sock /var/run/docker.sock ; fi && \
kube-reset.sh'

sleep 3

echo "cluster resetted. restarting docker-desktop..."
osascript -e 'quit app "Docker"'

open --background -a Docker
echo "docker-desktop started. Wait 3-5 mins for kubernetes to start."
Run Code Online (Sandbox Code Playgroud)

解释

此方法使用 Docker-desktop VM 的内部脚本。为了使其工作,需要对用户环境进行一些准备。

我无法使用kube-start.sh虚拟机内部的脚本启动 Kubernetes 集群,因此我使用 MacOS 命令来重新启动 Docker 应用程序。

即使目前 Docker 首选项中未启用 Kubernetes 集群,此方法也适用,但需要至少启用 Kubernetes 一次才能使用该脚本。

它已经过测试,Docker Edge for MacOS v2.2.2.0 (43066)
不保证它与早期或更高版本兼容。

此版本的 Docker 用于kubeadm初始化 Kubernetes 集群。脚本位于文件夹中/containers/services/docker/rootfs/usr/bin

  • kube-pull.sh(将 kubernetes 二进制文件带到虚拟机)
  • kube-reset.sh(跑步kube-stop.sh并做kubeadm reset一些rm事情)
  • kube-restart.sh(运行kube-stop.sh并且kube-start.sh
  • kube-start.sh (运行kube-pull.sh并且kubelet.sh
  • kube-stop.sh (杀死kubeletkube-apiserver进程,以及所有k8s容器)
  • kubeadm-init.sh(初始化Kubernetes集群)
  • kubelet.sh(运行kubeadm-init.sh并启动kubelet二进制文件)

集群配置位于文件中/containers/services/docker/lower/etc/kubeadm/kubeadm.yaml

使用的资源