简体   繁体   English

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

[英]Delete kubernetes cluster on docker-for-desktop OSX?

What is the equivalent command for minikube delete in docker-for-desktop on OSX OSX 上minikube delete -for-desktop 中minikube delete的等效命令是什么

As I understand, minikube creates a VM to host its kubernetes cluster but I do not understand how docker-for-desktop is managing this on OSX.据我了解,minikube 创建了一个虚拟机来托管其 kubernetes 集群,但我不明白 docker-for-desktop 如何在 OSX 上管理它。

Tear down Kubernetes in Docker for OS X is quite an easy task.在 OS X 的 Docker 中拆除 Kubernetes 是一项非常简单的任务。

Go to Preferences , open Reset tab, and click Reset Kubernetes cluster .转到Preferences ,打开Reset选项卡,然后单击Reset Kubernetes cluster

在此处输入图片说明

All object that have been created with Kubectl before that will be deleted.在此之前使用 Kubectl 创建的所有对象都将被删除。

You can also reset docker VM image ( Reset disk image ) and all settings ( Reset to factory defaults ) or even uninstall Docker.您还可以重置 docker VM 映像( Reset disk image )和所有设置( Reset to factory defaults )甚至卸载 Docker。

In recent Docker Edge versions for Mac ( 2.1.7 ) Preferences design has been changed.在最近的 Mac ( 2.1.7 ) Docker Edge 版本中, Preferences设计已更改。 Now you can reset Kubernetes cluster and other docker aspects by switching to the bug plane in the top right of Preferences window:现在您可以通过切换到Preferences窗口右上角的错误平面来重置 Kubernetes 集群和其他 docker 方面:

Note: You are able to reset Kubernetes cluster only if it's enabled.注意:只有启用了 Kubernetes 集群,您才能重置它。 If you uncheck "Enable Kubernetes" checkbox, "Reset Kubernetes cluster" button becomes inactive.如果取消选中“启用 Kubernetes”复选框,“重置 Kubernetes 集群”按钮将变为非活动状态。

在此处输入图片说明

For convenience "Reset Kubernetes cluster" is also present on the Kubernetes tab in the main Preferences plane:为方便起见,主首选项平面的 Kubernetes 选项卡上还显示了“重置 Kubernetes 集群”:

在此处输入图片说明

It's really under the hood in the code.它真的在代码中。 Docker for Mac uses these components: Hyperkit , VPNkit and DataKit Docker for Mac 使用这些组件: HyperkitVPNkitDataKit

Kubernetes runs in the same Hyperkit VM created for docker and the kube-apiserver is exposed. Kubernetes 在为 docker 创建的同一个 Hyperkit VM 中运行,并且 kube-apiserver 是公开的。

You can connect to the VM with this:您可以通过以下方式连接到 VM:

screen ~/Library/Containers/com.docker.docker/Data/vms/0/tty

Then you can see all the Kubernetes processes in the VM:然后就可以看到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

So if you uncheck the following box (unclear from the docs what command it uses):因此,如果您取消选中以下框(从文档中不清楚它使用的是什么命令):

码头工人

You can see that the processes are removed:可以看到删除了进程:

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:~#

To reset Docker-desktop Kubernetes cluster using command line, put the following content to a file ( dd-reset.sh ) and mark it executable ( chmod a+x dd-reset.sh )要使用命令行重置 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."

Explanation :说明

This method uses internal scripts from Docker-desktop VM.此方法使用来自 Docker-desktop VM 的内部脚本。 To make it work, some preparation of user environment is required.要使其工作,需要对用户环境进行一些准备。

I wasn't able to start Kubernetes cluster using kube-start.sh script from inside the VM, so I've used MacOS commands to restart Docker application instead.我无法从 VM 内部使用kube-start.sh脚本启动 Kubernetes 集群,因此我改用 MacOS 命令重新启动 Docker 应用程序。

This method works even if your Kubernetes cluster is not enabled in Docker preferences at the moment, but it's required to enable Kubernetes at least once to use the script.即使您的 Kubernetes 集群目前未在 Docker 首选项中启用,此方法也有效,但需要至少启用 Kubernetes 一次才能使用该脚本。

It was tested on Docker Edge for MacOS v2.2.2.0 (43066)它在Docker Edge for MacOS v2.2.2.0 (43066)上进行了测试
There is no guarantee that it will be compatible with earlier or later versions.不能保证它与早期或更高版本兼容。

This version of Docker uses kubeadm to initialize Kubernetes cluster.此版本的 Docker 使用kubeadm来初始化 Kubernetes 集群。 Scripts are located in the folder /containers/services/docker/rootfs/usr/bin :脚本位于文件夹/containers/services/docker/rootfs/usr/bin

  • kube-pull.sh (brings kubernetes binaries to VM) kube-pull.sh (将 kubernetes 二进制文件带到 VM)
  • kube-reset.sh (runs kube-stop.sh and do kubeadm reset + some rm stuff) kube-reset.sh (运行kube-stop.sh并执行kubeadm reset + 一些rm东西)
  • kube-restart.sh (runs kube-stop.sh and kube-start.sh ) kube-restart.sh (运行kube-stop.shkube-start.sh
  • kube-start.sh (runs kube-pull.sh and kubelet.sh ) kube-start.sh (运行kube-pull.shkubelet.sh
  • kube-stop.sh (kills kubelet and kube-apiserver processes, and all k8s containers) kube-stop.sh (杀死kubeletkube-apiserver进程,以及所有k8s容器)
  • kubeadm-init.sh (initializes Kubernetes cluster) kubeadm-init.sh (初始化 Kubernetes 集群)
  • kubelet.sh (runs kubeadm-init.sh and starts kubelet binary) kubelet.sh (运行kubeadm-init.sh并启动kubelet二进制文件)

Cluster configuration is located in the file /containers/services/docker/lower/etc/kubeadm/kubeadm.yaml集群配置位于文件/containers/services/docker/lower/etc/kubeadm/kubeadm.yaml

Resources used :使用的资源

What is the equivalent command for minikube delete in docker-for-desktop on OSX在OSX上的minikube delete -for-desktop中用于minikube delete的等效命令是什么

As I understand, minikube creates a VM to host its kubernetes cluster but I do not understand how docker-for-desktop is managing this on OSX.据我了解,minikube创建了一个VM来托管其kubernetes集群,但我不了解docker-for-desktop如何在OSX上管理它。

On docker desktop version 3.5.2 (engine version 20.10.7), the reset button has been moved inside the docker preferences.在 docker 桌面版本 3.5.2(引擎版本 20.10.7)上,重置按钮已移至 docker 首选项内。

You can get there by following the below steps:您可以按照以下步骤到达那里:

  1. Click on the docker icon in the menu bar and choose 'Preferences'.单击菜单栏中的泊坞窗图标,然后选择“首选项”。 在此处输入图片说明
  2. Go to the Kubernetes tab.转到 Kubernetes 选项卡。 在此处输入图片说明
  3. Click on the Reset Kubernetes CLuster button.单击Reset Kubernetes CLuster按钮。 This is the red color button.这是红色按钮。

This will delete all pods and reset the kubernetes.这将删除所有 pod 并重置 kubernetes。 You can execute the docker ps command at terminal to verify that there are no containers running.您可以在终端执行docker ps命令来验证没有容器正在运行。 在此处输入图片说明

只需删除保存 kubernetes 资源的 vm。

$ minikube delete

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 更改 Kubernetes docker-for-desktop 集群网络ip - Change Kubernetes docker-for-desktop cluster network ip 如何将 Windows docker 容器部署到 docker-for-desktop Kubernetes 集群? 拉取访问被拒绝 - How do I deploy Windows docker containers to docker-for-desktop Kubernetes cluster? pull access denied 在docker-for-desktop kubernetes中的哪里可以找到ca.crt? - Where to find ca.crt in docker-for-desktop kubernetes? Docker-for-desktop kubernetes 从私有仓库拉取镜像 - Docker-for-desktop kubernetes pull image from private repository 相当于带有 docker-for-desktop Kube.netes 节点的“minikube ssh” - equivalent of "minikube ssh" with docker-for-desktop Kubernetes node 如何访问 docker-for-desktop 上的 PersistentVolume 文件? - How to access PersistentVolume files on docker-for-desktop? 如何在 Docker 桌面上创建一个新的 Kubernetes 集群? - How to create a new Kubernetes cluster on Docker Desktop? Kubernetes集群设置过程在Windows 10台机器上Docker桌面 - Kubernetes cluster setup process in Docker Desktop on Windows 10 machine 无法在本地 Kubernetes 集群上公开端口(通过 Docker 桌面) - Can't expose port on local Kubernetes cluster (via Docker Desktop) 如何在 Docker 桌面 Kubernetes 集群上找到主 IP? - How do I find the master IP on Docker Desktop Kubernetes Cluster?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM