在OSX上的docker-for-desktop中,与minikube delete等效的命令是什么据我所知,minikube创建了一个虚拟机来托管它的kubernetes集群,但我不明白桌面停靠器是如何在OSX上管理它的。
minikube delete
des4xlb01#
在Docker for OS X中拆除Kubernetes是一项相当容易的任务。转到Preferences,打开Reset选项卡,然后单击Reset Kubernetes cluster。
Preferences
Reset
Reset Kubernetes cluster
在此之前使用Kubectl创建的所有对象都将被删除。您还可以重置Docker虚拟机映像(Reset disk image)和所有设置(Reset to factory defaults),甚至可以卸载Docker。
Reset disk image
Reset to factory defaults
qvtsj1bj2#
在最近的Mac版Docker Edge(2.1.7)中,Preferences的设计已经改变。现在您可以通过切换到Preferences窗口右上角的bug平面来重置Kubernetes集群和其他Docker方面:
**注意:**只有在启用Kubernetes群集时才能重置该群集。如果取消选中“启用Kubernetes”复选框,“重置Kubernetes群集”按钮将变为非活动状态。
为方便起见,“重置Kubernetes群集”也显示在主“首选项”平面的“Kubernetes”选项卡上:
yzxexxkh3#
要使用命令行重置Docker-desktop Kubernetes群集,请将以下内容放入文件(dd-reset.sh)并将其标记为可执行(chmod a+x dd-reset.sh)
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."
说明:
此方法使用来自Docker桌面虚拟机的内部脚本。要使其工作,需要对用户环境进行一些准备。我无法从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-start.sh
Docker Edge for MacOS v2.2.2.0 (43066)
kubeadm
/containers/services/docker/rootfs/usr/bin
kube-pull.sh
kube-reset.sh
kube-stop.sh
kubeadm reset
rm
kube-restart.sh
kubelet.sh
kubelet
kube-apiserver
k8s
kubeadm-init.sh
群集配置位于文件/containers/services/docker/lower/etc/kubeadm/kubeadm.yaml中
/containers/services/docker/lower/etc/kubeadm/kubeadm.yaml
所用资源:
umuewwlo4#
它实际上隐藏在代码中。Docker for Mac使用以下组件:Hyperkit、VPNkit和DataKitKubernetes运行在为Docker创建的同一Hyperkit虚拟机中,并公开了kube-apiserver。您可以使用以下命令连接到VM:
screen ~/Library/Containers/com.docker.docker/Data/vms/0/tty
然后,您可以看到VM中的所有Kubernetes进程:
linuxkit-025000000001:~# ps -Af | grep kube 1251 root 0:00 /usr/bin/logwrite -n kubelet /usr/bin/kubelet.sh 1288 root 0:51 kubelet --kubeconfig=/etc/kubernetes/kubelet.conf --bootstrap-kubeconfig=/etc/kubernetes/bootstrap-kubelet.conf --pod-manifest-path=/etc/kubernetes/manifests --allow-privileged=true --cluster-dns=10.96.0.10 --cluster-domain=cluster.local --cgroups-per-qos=false --enforce-node-allocatable= --network-plugin=cni --cni-conf-dir=/etc/cni/net.d --cni-bin-dir=/opt/cni/bin --cadvisor-port=0 --kube-reserved-cgroup=podruntime --system-reserved-cgroup=systemreserved --cgroup-root=kubepods --hostname-override=docker-for-desktop --fail-swap-on=false 3564 root 0:26 kube-scheduler --address=127.0.0.1 --leader-elect=true --kubeconfig=/etc/kubernetes/scheduler.conf 3616 root 1:45 kube-controller-manager --cluster-signing-key-file=/run/config/pki/ca.key --address=127.0.0.1 --root-ca-file=/run/config/pki/ca.crt --service-account-private-key-file=/run/config/pki/sa.key --kubeconfig=/etc/kubernetes/controller-manager.conf --cluster-signing-cert-file=/run/config/pki/ca.crt --leader-elect=true --use-service-account-credentials=true --controllers=*,bootstrapsigner,tokencleaner 3644 root 1:59 kube-apiserver --admission-control=Initializers,NamespaceLifecycle,LimitRanger,ServiceAccount,DefaultStorageClass,DefaultTolerationSeconds,NodeRestriction,MutatingAdmissionWebhook,ValidatingAdmissionWebhook,ResourceQuota --requestheader-username-headers=X-Remote-User --requestheader-group-headers=X-Remote-Group --service-account-key-file=/run/config/pki/sa.pub --secure-port=6443 --insecure-port=8080 --insecure-bind-address=0.0.0.0 --requestheader-client-ca-file=/run/config/pki/front-proxy-ca.crt --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --requestheader-extra-headers-prefix=X-Remote-Extra- --advertise-address=192.168.65.3 --service-cluster-ip-range=10.96.0.0/12 --tls-private-key-file=/run/config/pki/apiserver.key --enable-bootstrap-token-auth=true --requestheader-allowed-names=front-proxy-client --tls-cert-file=/run/config/pki/apiserver.crt --proxy-client-key-file=/run/config/pki/front-proxy-client.key --proxy-client-cert-file=/run/config/pki/front-proxy-client.crt --allow-privileged=true --client-ca-file=/run/config/pki/ca.crt --kubelet-client-certificate=/run/config/pki/apiserver-kubelet-client.crt --kubelet-client-key=/run/config/pki/apiserver-kubelet-client.key --authorization-mode=Node,RBAC --etcd-servers=https://127.0.0.1:2379 --etcd-cafile=/run/config/pki/etcd/ca.crt --etcd-certfile=/run/config/pki/apiserver-etcd-client.crt --etcd-keyfile=/run/config/pki/apiserver-etcd-client.key 3966 root 0:01 /kube-dns --domain=cluster.local. --dns-port=10053 --config-dir=/kube-dns-config --v=2 4190 root 0:05 /usr/local/bin/kube-proxy --config=/var/lib/kube-proxy/config.conf 4216 65534 0:03 /sidecar --v=2 --logtostderr --probe=kubedns,127.0.0.1:10053,kubernetes.default.svc.cluster.local,5,SRV --probe=dnsmasq,127.0.0.1:53,kubernetes.default.svc.cluster.local,5,SRV 4606 root 0:00 /compose-controller --kubeconfig --reconciliation-interval 30s 4905 root 0:01 /api-server --kubeconfig --authentication-kubeconfig --authorization-kubeconfig --etcd-servers=https://127.0.0.1:2379 --etcd-cafile=/etc/docker-compose/etcd/ca.crt --etcd-certfile=/etc/docker-compose/etcd/client.crt --etcd-keyfile=/etc/docker-compose/etcd/client.key --secure-port=9443 --tls-ca-file=/etc/docker-compose/tls/ca.crt --tls-cert-file=/etc/docker-compose/tls/server.crt --tls-private-key-file=/etc/docker-compose/tls/server.key
因此,如果您取消选中以下框(从文档中不清楚它使用的命令):
您可以看到进程已删除:
linuxkit-025000000001:~# [ 6616.856404] cni0: port 2(veth5f6c8b28) entered disabled state [ 6616.860520] device veth5f6c8b28 left promiscuous mode [ 6616.861125] cni0: port 2(veth5f6c8b28) entered disabled state linuxkit-025000000001:~# linuxkit-025000000001:~# [ 6626.816763] cni0: port 1(veth87e77142) entered disabled state [ 6626.822748] device veth87e77142 left promiscuous mode [ 6626.823329] cni0: port 1(veth87e77142) entered disabled state linuxkit-025000000001:~# ps -Af | grep kube linuxkit-025000000001:~#
wi3ka0sx5#
在Docker桌面版本3.5.2(引擎版本20.10.7)上,重置按钮已被移到Docker首选项中。您可以通过以下步骤到达那里:1.点击菜单栏中的Docker图标并选择“首选项”。
1.转到Kubernetes选项卡。
1.单击Reset Kubernetes CLuster按钮。这是红色按钮。这将删除所有pod并重置kubernetes。您可以在终端执行docker ps命令以验证是否没有container正在运行。
Reset Kubernetes CLuster
docker ps
jdzmm42g6#
在我的案例中,Docker Kubernetes停止使用Docker Desktop V4. 17. 0,因为Coredns Pod无法拉取指定的图像。在本地群集上执行kubectl get all --all-namespaces,如果coredns pod无法启动,请尝试应用kubectl patch deployment -n kube-system coredns --patch-file docker-local-core-dns-image-patch.yamldocker-local-core-dns-image-patch.yaml文件内容更新要拉取的映像:
kubectl get all --all-namespaces
kubectl patch deployment -n kube-system coredns --patch-file docker-local-core-dns-image-patch.yaml
spec: template: spec: containers: - name: coredns image: registry.k8s.io/coredns/coredns:v1.9.3
ar5n3qh57#
只需删除保存kubernetes资源的虚拟机。$ minikube delete
$ minikube delete
7条答案
按热度按时间des4xlb01#
在Docker for OS X中拆除Kubernetes是一项相当容易的任务。
转到
Preferences
,打开Reset
选项卡,然后单击Reset Kubernetes cluster
。在此之前使用Kubectl创建的所有对象都将被删除。
您还可以重置Docker虚拟机映像(
Reset disk image
)和所有设置(Reset to factory defaults
),甚至可以卸载Docker。qvtsj1bj2#
在最近的Mac版Docker Edge(2.1.7)中,
Preferences
的设计已经改变。现在您可以通过切换到Preferences
窗口右上角的bug平面来重置Kubernetes集群和其他Docker方面:**注意:**只有在启用Kubernetes群集时才能重置该群集。如果取消选中“启用Kubernetes”复选框,“重置Kubernetes群集”按钮将变为非活动状态。
为方便起见,“重置Kubernetes群集”也显示在主“首选项”平面的“Kubernetes”选项卡上:
yzxexxkh3#
要使用命令行重置Docker-desktop Kubernetes群集,请将以下内容放入文件(
dd-reset.sh
)并将其标记为可执行(chmod a+x dd-reset.sh
)说明:
此方法使用来自Docker桌面虚拟机的内部脚本。要使其工作,需要对用户环境进行一些准备。
我无法从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
(终止kubelet
和kube-apiserver
进程,以及所有k8s
容器)kubeadm-init.sh
(初始化Kubernetes群集)kubelet.sh
(运行kubeadm-init.sh
并启动kubelet
二进制)群集配置位于文件
/containers/services/docker/lower/etc/kubeadm/kubeadm.yaml
中所用资源:
umuewwlo4#
它实际上隐藏在代码中。Docker for Mac使用以下组件:Hyperkit、VPNkit和DataKit
Kubernetes运行在为Docker创建的同一Hyperkit虚拟机中,并公开了kube-apiserver。
您可以使用以下命令连接到VM:
然后,您可以看到VM中的所有Kubernetes进程:
因此,如果您取消选中以下框(从文档中不清楚它使用的命令):
您可以看到进程已删除:
wi3ka0sx5#
在Docker桌面版本3.5.2(引擎版本20.10.7)上,重置按钮已被移到Docker首选项中。
您可以通过以下步骤到达那里:
1.点击菜单栏中的Docker图标并选择“首选项”。
1.转到Kubernetes选项卡。
1.单击
Reset Kubernetes CLuster
按钮。这是红色按钮。这将删除所有pod并重置kubernetes。您可以在终端执行
docker ps
命令以验证是否没有container正在运行。jdzmm42g6#
在我的案例中,Docker Kubernetes停止使用Docker Desktop V4. 17. 0,因为Coredns Pod无法拉取指定的图像。
在本地群集上执行
kubectl get all --all-namespaces
,如果coredns pod无法启动,请尝试应用kubectl patch deployment -n kube-system coredns --patch-file docker-local-core-dns-image-patch.yaml
docker-local-core-dns-image-patch.yaml文件内容更新要拉取的映像:
ar5n3qh57#
只需删除保存kubernetes资源的虚拟机。
$ minikube delete