--- title: minikube description: 在 minikube 上配置 Istio。 weight: 50 skip_seealso: true aliases: - /zh/docs/setup/kubernetes/prepare/platform-setup/minikube/ - /zh/docs/setup/kubernetes/platform-setup/minikube/ keywords: [platform-setup,kubernetes,minikube] owner: istio/wg-environments-maintainers test: no --- 按照文档安装 minikube,为 Istio 与一些基础应用准备足够的系统资源。 ## 前提条件 {#prerequisites} - 运行 minikube 需要管理员权限。 - 如果要启用[秘钥发现服务](https://www.envoyproxy.io/docs/envoy/latest/configuration/security/secret#sds-configuration)(SDS), 需要为 Kubernetes Deployment 添加[额外的配置](https://kubernetes.io/zh-cn/docs/tasks/configure-pod-container/configure-service-account/#service-account-token-volume-projection)。 查阅 [`api-server` 参考文档](https://kubernetes.io/zh-cn/docs/reference/command-line-tools-reference/kube-apiserver/)了解最新的可选参数。 ## 安装步骤 {#installation-steps} 1. 安装最新版的 [minikube](https://kubernetes.io/zh-cn/docs/tasks/tools/#minikube) 和 [minikube 虚拟机驱动](https://minikube.sigs.k8s.io/docs/start/#install-a-hypervisor)。 1. 如果您没有使用默认的驱动,需要配置 minikube 虚拟机驱动。 比如,如果您安装了 KVM 虚拟机,使用如下命令设置 minikube 的 `driver` 配置: {{< text bash >}} $ minikube config set driver kvm2 {{< /text >}} 1. 以 16384 `MB` 内存和 4 `CPUs` 启动 minikube。这个例子使用了 Kubernetes **1.26.1**。 您可以设置 `--kubernetes-version` 的值以指定任意 Istio 支持的 Kubernetes 版本: {{< text bash >}} $ minikube start --memory=16384 --cpus=4 --kubernetes-version=v1.26.1 {{< /text >}} 取决于您使用的虚拟机版本以及所运行的平台,最小内存要求也不同。16384 `MB` 足够运行 Istio 和 bookinfo。 {{< tip >}} 如果您没有足够的内存分配给 minikube 虚拟机,可能出现如下报错: - image pull failures - healthcheck timeout failures - kubectl failures on the host - general network instability of the virtual machine and the host - complete lock-up of the virtual machine - host NMI watchdog reboots minikube 中有一个不错的方法查看内存占用,即 `ssh` 到 minikube 虚拟机,然后从命令行运行 top 命令: {{< text bash >}} $ minikube ssh {{< /text >}} {{< text bash >}} $ top GiB Mem : 12.4/15.7 {{< /text >}} 这里显示虚拟机内全部的 15.7G 内存已占用了 12.4G。这个数据是在一个 16G 内存的 Macbook Pro 13" 中运行着 Istio 1.2 和 bookinfo 的 VMWare Fusion 虚拟机中生成的。 {{< /tip >}} 1. (可选,推荐)如果您希望 minikube 提供一个负载均衡给 Istio,您可以使用 [minikube tunnel](https://minikube.sigs.k8s.io/docs/tasks/loadbalancer/#using-minikube-tunnel)。 在另一个终端运行这个命令,因为 minikube tunnel 会阻塞的您的终端用于显示网络诊断信息: {{< text bash >}} $ minikube tunnel {{< /text >}} {{< warning >}} 有时 minikube 不会正确清理 tunnel network。强制清理使用如下命令: {{< text bash >}} $ minikube tunnel --cleanup {{< /text >}} {{< /warning >}}