如何完全清除 minikube 配置或将 IP 重置回 192.168.99.100

How to completely purge minikube config or reset IP back to 192.168.99.100

我想彻底清除 Minikube,这样我就可以像第一次安装它一样重新开始,以避免一些配置冲突。 Mailnly 拥有初始 IP 192.168.99.100,不幸的是它在下一个 minikube start 增加到 192.168.99.101,等等。我已经 运行 删除 Minikube:

minikube delete rm -rf ~/.minikube rm -rf ~/.kube

我是 运行 minikube 版本:Ubuntu 18.04 上的 v0.31.0,带有驱动程序 VirtualBox 5.2.18

Minikube 用于不同的平台,因此添加与其中最流行的平台相关的信息可能会有所帮助。

Minikube 不负责为其 VM 分配 IP 地址。

如果您在 Windows 或 MacOS 上启动 minikube,则会创建新的 VM。该 VM 从管理程序 DHCP 服务池中获取第一个可用的 IP 地址。简而言之,DHCP 服务会为虚拟机保留这个 IP 一段时间,通常是 24 小时到 7 天。如果在此期间客户端没有刷新DHCP租约并且该IP在网络上不可用,则该IP被认为是免费的并且可以提供给另一个客户端。

VirtualBox对其DHCP服务只有基本设置,不允许配置租用时间或静态ip绑定。因此,在使用 minikube ssh 创建 VM 后,您可以尝试更改 minikube VM 网络接口的 ip 配置。或者您可以在创建后立即使用 VM MAC 地址,因为 DHCP 提供基于主机 MAC 地址的 IP 地址。

HyperV 将本地网络上现有的 DHCP 用于共享网络,或将手动配置的 DHCP 服务器用于内部网络。如果您有权访问 DHCP 管理控制台,则可以在使用 minikube start.

启动新 VM 之前删除旧的 minikube VM IP 绑定

对于 Linux,您可以选择两个选项,您可以使用 virtualbox hypervisor 并像在 Windows 或 MAC 上一样创建 VM,因此 DHCP 将像我提到的那样工作以前,或者您可以使用 -vm-driver=none 参数并在没有 VM 的主机环境中设置 Kubernetes 集群。在这种情况下,您的主机将成为具有相同 IP 配置的 Kubernetes 主节点。

我在使用 VirtualBox 的 Mac 上也发现了这个问题。我尝试删除主机网络管理器,但它对我不起作用。但是,我确实找到了另一种解决方案。

发布minikube delete后,我删除了以下文件:

/Users/{username}/Library/VirtualBox/HostInterfaceNetworking-vboxnet0-Dhcpd.leases

再次启动 minikube 将地址重置为 .100。

文件内容:

<?xml version="1.0"?>
<Leases version="1.0">
  <Lease mac="08:00:27:66:6a:19" id="01080027666a19" network="0.0.0.0" state="expired">
    <Address value="192.168.99.102"/>
    <Time issued="1555277299" expiration="1200"/>
  </Lease>
  <Lease mac="08:00:27:08:03:a3" id="010800270803a3" network="0.0.0.0" state="expired">
    <Address value="192.168.99.101"/>
    <Time issued="1555276993" expiration="1200"/>
  </Lease>
  <Lease mac="08:00:27:32:ed:f8" id="0108002732edf8" network="0.0.0.0" state="expired">
    <Address value="192.168.99.100"/>
    <Time issued="1555276537" expiration="1200"/>
  </Lease>
</Leases>

对于Ubuntu 18.0.4你可以试试

rm -r /home/username/.config/VirtualBox/HostInterfaceNetworking-vboxnet0-Dhcpd.leases

如果您使用 virtualbox 作为 vm-driver,您可以在 Linux/Mac 上使用此 Python 脚本将 ip 重置为 192.168.99.100:

./minikube_reset

#!/usr/bin/env python3

import subprocess as sp
from sys import platform
import os

if __name__ == "__main__":

    print("Resetting Virtualbox DHCP...")

    procs = sp.run("ps aux", shell=True, stdout=sp.PIPE)\
        .stdout.decode("utf8").lower().split('\n')

    pids = [
        p.split()[1] for p in procs if 'vboxsvc' in p or 'vboxnetdhcp' in p
    ]

    for pid in pids:
        sp.run(['kill', '-9', pid])

    cfg_dir = ".config" if platform != 'darwin' else 'Library'
    file = f"~/{cfg_dir}/VirtualBox/HostInterfaceNetworking-vboxnet0-Dhcpd.leases"

    try:
        os.remove(os.path.expanduser(file))
    except OSError as e:
        pass

如果您通过 chmod +x minikube_reset 将脚本设为可执行文件并将其放入您的 路径 ,您可以 运行:

minikube stop    # Stop your running minikube instance.
minikube_reset   # Reset the ip.
minikube start   # Start new minikube instance with 192.168.99.100.

您的 minikube 实例应始终在 minikube_reset 之后以 192.168.99.100 开头。

我最近 运行 在 mpb 上关注这个问题;在 VirtualBox v6.0.10

上跟踪 minikube helmtiller 的问题

我发现的最干净的解决方案按预期工作

#!/bin/sh

function minikube_reset_vbox_dhcp_leases() {
  # # Reset Virtualbox DHCP Lease Info
  echo "Resetting Virtualbox DHCP Lease Info..."
  kill -9 $(ps aux |grep -i "vboxsvc\|vboxnetdhcp" | awk '{print }') 2>/dev/null

  if [[ -f ~/Library/VirtualBox/HostInterfaceNetworking-vboxnet0-Dhcpd.leases ]] ; then
    rm  ~/Library/VirtualBox/HostInterfaceNetworking-vboxnet0-Dhcpd.leases
  fi
}

minikube_reset_vbox_dhcp_leases

来源:issues/951