From ec0612b4b28a2ea97bd9c5557a5f0c64fb0505a8 Mon Sep 17 00:00:00 2001 From: RA489 Date: Thu, 19 Nov 2020 14:52:23 +0530 Subject: [PATCH] =?UTF-8?q?=E4=BD=BF=E7=94=A8=20Minikube=20=E5=AE=89?= =?UTF-8?q?=E8=A3=85=20Kubernetes?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../setup/learning-environment/minikube.md | 916 ------------------ content/zh/docs/tutorials/hello-minikube.md | 2 +- 2 files changed, 1 insertion(+), 917 deletions(-) delete mode 100644 content/zh/docs/setup/learning-environment/minikube.md diff --git a/content/zh/docs/setup/learning-environment/minikube.md b/content/zh/docs/setup/learning-environment/minikube.md deleted file mode 100644 index 8ee92a3482..0000000000 --- a/content/zh/docs/setup/learning-environment/minikube.md +++ /dev/null @@ -1,916 +0,0 @@ ---- -title: 使用 Minikube 安装 Kubernetes -weight: 30 -content_type: concept ---- - - - - - -Minikube 是一种可以让你在本地轻松运行 Kubernetes 的工具。 -Minikube 在笔记本电脑上的虚拟机(VM)中运行单节点 Kubernetes 集群, -供那些希望尝试 Kubernetes 或进行日常开发的用户使用。 - - - - -## Minikube 功能 - -Minikube 支持以下 Kubernetes 功能: - - - -* DNS -* NodePorts -* ConfigMaps 和 Secrets -* Dashboards -* 容器运行时: Docker、[CRI-O](https://github.com/kubernetes-incubator/cri-o) 以及 - [containerd](https://github.com/containerd/containerd) -* 启用 CNI (容器网络接口) -* Ingress - - -## 安装 - -请参阅[安装 Minikube](/zh/docs/tasks/tools/install-minikube/)。 - - -## 快速开始 - -这个简短的演示将指导你如何在本地启动、使用和删除 Minikube。请按照以下步骤开始探索 Minikube。 - - -1. 启动 Minikube 并创建一个集群: - - ```shell - minikube start - ``` - - 输出类似于: - - ``` - Starting local Kubernetes cluster... - Running pre-create checks... - Creating machine... - Starting local Kubernetes cluster... - ``` - - - - 有关使用特定 Kubernetes 版本、VM 或容器运行时启动集群的详细信息,请参阅[启动集群](#starting-a-cluster)。 - - -2. 现在,你可以使用 kubectl 与集群进行交互。有关详细信息,请参阅[与集群交互](#interacting-with-your-cluster)。 - - - 让我们使用名为 `echoserver` 的镜像创建一个 Kubernetes Deployment,并使用 `--port` 在端口 8080 上暴露服务。`echoserver` 是一个简单的 HTTP 服务器。 - - ```shell - kubectl create deployment hello-minikube --image=k8s.gcr.io/echoserver:1.10 - ``` - - 输出类似于: - - ``` - deployment.apps/hello-minikube created - ``` - -3. 要访问 `hello-minikube` Deployment,需要将其作为 Service 公开: - - ```shell - kubectl expose deployment hello-minikube --type=NodePort --port=8080 - ``` - - 选项 `--type = NodePort` 指定 Service 的类型。 - - - 输出类似于: - - ``` - service/hello-minikube exposed - ``` - -4. 现在 `hello-minikube` Pod 已经启动,但是你必须等到 Pod 启动完全才能通过暴露的 Service 访问它。 - - - 检查 Pod 是否启动并运行: - - ```shell - kubectl get pod - ``` - - 如果输出显示 `STATUS` 为 `ContainerCreating`,则表明 Pod 仍在创建中: - - ``` - NAME READY STATUS RESTARTS AGE - hello-minikube-3383150820-vctvh 0/1 ContainerCreating 0 3s - ``` - - 如果输出显示 `STATUS` 为 `Running`,则 Pod 现在正在运行: - - ``` - NAME READY STATUS RESTARTS AGE - hello-minikube-3383150820-vctvh 1/1 Running 0 13s - ``` - - -5. 获取暴露 Service 的 URL 以查看 Service 的详细信息: - - ```shell - minikube service hello-minikube --url - ``` - -6. 要查看本地集群的详细信息,请在浏览器中复制粘贴并访问上一步骤输出的 URL。 - - - 输出类似于: - - ``` - Hostname: hello-minikube-7c77b68cff-8wdzq - - Pod Information: - -no pod information available- - - Server values: - server_version=nginx: 1.13.3 - lua: 10008 - - Request Information: - client_address=172.17.0.1 - method=GET - real path=/ - query= - request_version=1.1 - request_scheme=http - request_uri=http://192.168.99.100:8080/ - - Request Headers: - accept=*/* - host=192.168.99.100:30674 - user-agent=curl/7.47.0 - - Request Body: - -no body in request- - ``` - - - 如果你不再希望运行 Service 和集群,则可以删除它们。 - - -7. 删除 `hello-minikube` Service: - - ```shell - kubectl delete services hello-minikube - ``` - - 输出类似于: - - ``` - service "hello-minikube" deleted - ``` - - -8. 删除 `hello-minikube` Deployment: - - ```shell - kubectl delete deployment hello-minikube - ``` - - 输出类似于: - - ``` - deployment.extensions "hello-minikube" deleted - ``` - - -9. 停止本地 Minikube 集群: - - ```shell - minikube stop - ``` - - 输出类似于: - - ``` - Stopping "minikube"... - "minikube" stopped. - ``` - - - 有关更多信息,请参阅[停止集群](#stopping-a-cluster)。 - - -10. 删除本地 Minikube 集群: - - ```shell - minikube delete - ``` - - 输出类似于: - - ``` - Deleting "minikube" ... - The "minikube" cluster has been deleted. - ``` - - 有关更多信息,请参阅[删除集群](#deletion-a-cluster)。 - - -## 管理你的集群 - -### 启动集群 {#starting-a-cluster} - -`minikube start` 命令可用于启动集群。 - - -此命令将创建并配置一台虚拟机,使其运行单节点 Kubernetes 集群。 - -此命令还会配置你的 [kubectl](/zh/docs/reference/kubectl/overview/) 安装,以便使其能与你的 Kubernetes 集群正确通信。 - - - -{{< note >}} -如果你启用了 web 代理,则需要将此信息传递给 `minikube start` 命令: - -```shell -minikube start --docker-env http_proxy= --docker-env https_proxy= --docker-env no_proxy=192.168.99.0/24 -``` - -不幸的是,单独设置环境变量不起作用。 - -Minikube 还创建了一个 `minikube` 上下文,并将其设置为 kubectl 的默认上下文。 - -要切换回此上下文,请运行以下命令:`kubectl config use-context minikube`。 -{{< /note >}} - - -#### 指定 Kubernetes 版本 - -你可以通过将 `--kubernetes-version` 字符串添加到 `minikube start` 命令来指定要用于 -Minikube 的 Kubernetes 版本。例如,要运行版本 {{< param "fullversion" >}},你可以运行以下命令: - -```shell -minikube start --kubernetes-version {{< param "fullversion" >}} -``` - - -#### 指定 VM 驱动程序 {#specifying-the-vm-driver} - -你可以通过将 `--vm-driver=` 参数添加到 `minikube start` 来更改 VM 驱动程序。 - - -例如命令: - -```shell -minikube start --vm-driver= -``` - -Minikube 支持以下驱动程序: - - -{{< note >}} -有关支持的驱动程序以及如何安装插件的详细信息,请参阅[驱动程序](https://minikube.sigs.k8s.io/docs/drivers/)。 -{{< /note >}} - - - -* virtualbox -* vmwarefusion -* kvm2 ([驱动安装](https://minikube.sigs.k8s.io/docs/drivers/#kvm2-driver)) -* hyperkit ([驱动安装](https://minikube.sigs.k8s.io/docs/drivers/#hyperkit-driver)) -* hyperv ([驱动安装](https://github.com/kubernetes/minikube/blob/master/docs/drivers.md#hyperv-driver)) - - -请注意,下面的 IP 是动态的,可以更改。可以使用 `minikube ip` 检索。 - -* vmware ([驱动安装](https://github.com/kubernetes/minikube/blob/master/docs/drivers.md#vmware-unified-driver)) (VMware 统一驱动) -* none (在主机上运行Kubernetes组件,而不是在 VM 中。使用该驱动依赖 Docker - ([安装 Docker](https://docs.docker.com/install/linux/docker-ce/ubuntu/)) 和 Linux 环境) - - -#### 通过别的容器运行时启动集群 - -你可以通过以下容器运行时启动 Minikube。 - -{{< tabs name="container_runtimes" >}} -{{% tab name="containerd" %}} - -要使用 [containerd](https://github.com/containerd/containerd) 作为容器运行时,请运行: - -```bash -minikube start \ - --network-plugin=cni \ - --enable-default-cni \ - --container-runtime=containerd \ - --bootstrapper=kubeadm -``` - - -或者你可以使用扩展版本: - -```bash -minikube start \ - --network-plugin=cni \ - --enable-default-cni \ - --extra-config=kubelet.container-runtime=remote \ - --extra-config=kubelet.container-runtime-endpoint=unix:///run/containerd/containerd.sock \ - --extra-config=kubelet.image-service-endpoint=unix:///run/containerd/containerd.sock \ - --bootstrapper=kubeadm -``` -{{% /tab %}} -{{% tab name="CRI-O" %}} - -要使用 [CRI-O](https://github.com/kubernetes-incubator/cri-o) 作为容器运行时,请运行: - -```bash -minikube start \ - --network-plugin=cni \ - --enable-default-cni \ - --container-runtime=cri-o \ - --bootstrapper=kubeadm -``` - -或者你可以使用扩展版本: - -```bash -minikube start \ - --network-plugin=cni \ - --enable-default-cni \ - --extra-config=kubelet.container-runtime=remote \ - --extra-config=kubelet.container-runtime-endpoint=/var/run/crio.sock \ - --extra-config=kubelet.image-service-endpoint=/var/run/crio.sock \ - --bootstrapper=kubeadm -``` -{{% /tab %}} -{{< /tabs >}} - - -#### 通过重用 Docker 守护进程使用本地镜像 - - -当为 Kubernetes 使用单个 VM 时,重用 Minikube 的内置 Docker 守护程序非常有用。重用内置守护程序意味着你不必在主机上构建 Docker 镜像仓库并将镜像推入其中。相反,你可以在与 Minikube 相同的 Docker 守护进程内部构建,这可以加速本地实验。 - - -{{< note >}} -一定要用非 `latest` 的标签来标记你的 Docker 镜像,并使用该标签来拉取镜像。因为 `:latest` 标记的镜像,其默认镜像拉取策略是 `Always`,如果在默认的 Docker 镜像仓库(通常是 DockerHub)中没有找到你的 Docker 镜像,最终会导致一个镜像拉取错误(`ErrImagePull`)。 -{{< /note >}} - - -要在 Mac/Linux 主机上使用 Docker 守护程序,请在 shell 中运行 `docker-env command`: - -```shell -eval $(minikube docker-env) -``` - - -你现在可以在 Mac/Linux 机器的命令行中使用 Docker 与 Minikube VM 内的 Docker 守护程序进行通信: - -```shell -docker ps -``` - - -在 Centos 7 上,Docker 可能会报如下错误: - -``` -Could not read CA certificate "/etc/docker/ca.pem": open /etc/docker/ca.pem: no such file or directory -``` - - -你可以通过更新 /etc/sysconfig/docker 来解决此问题,以确保 Minikube 的环境更改得到遵守: - -```shell -< DOCKER_CERT_PATH=/etc/docker ---- -> if [ -z "${DOCKER_CERT_PATH}" ]; then -> DOCKER_CERT_PATH=/etc/docker -> fi -``` - - -### 配置 Kubernetes - - -Minikube 有一个 "configurator" 功能,允许用户使用任意值配置 Kubernetes 组件。 - -要使用此功能,可以在 `minikube start` 命令中使用 `--extra-config` 参数。 - - -此参数允许重复,因此你可以使用多个不同的值多次传递它以设置多个选项。 - - -此参数采用 `component.key=value` 形式的字符串,其中 `component` 是下面列表中的一个字符串,`key` 是配置项名称,`value` 是要设置的值。 - - -通过检查每个组件的 Kubernetes `componentconfigs` 的文档,可以找到有效的 key。 - -下面是每个组件所支持的配置的介绍文档: - -* [kubelet](https://godoc.org/k8s.io/kubernetes/pkg/kubelet/apis/config#KubeletConfiguration) -* [apiserver](https://godoc.org/k8s.io/kubernetes/cmd/kube-apiserver/app/options#ServerRunOptions) -* [proxy](https://godoc.org/k8s.io/kubernetes/pkg/proxy/apis/config#KubeProxyConfiguration) -* [controller-manager](https://godoc.org/k8s.io/kubernetes/pkg/controller/apis/config#KubeControllerManagerConfiguration) -* [etcd](https://godoc.org/github.com/coreos/etcd/etcdserver#ServerConfig) -* [scheduler](https://godoc.org/k8s.io/kubernetes/pkg/scheduler/apis/config#KubeSchedulerConfiguration) - - -#### 例子 - - -要在 Kubelet 上将 `MaxPods` 设置更改为 5,请传递此参数:`--extra-config=kubelet.MaxPods=5`。 - - -此功能还支持嵌套结构。要在调度程序上将 `LeaderElection.LeaderElect` 设置更改为 `true`,请传递此参数:`--extra-config=scheduler.LeaderElection.LeaderElect=true`。 - - -要将 `apiserver` 的 `AuthorizationMode` 设置为 `RBAC`,你可以使用:`--extra-config=apiserver.authorization-mode=RBAC`。 - - -### 停止集群 {#stopsing-a-cluster} - -`minikube stop` 命令可用于停止集群。 - -此命令关闭 Minikube 虚拟机,但保留所有集群状态和数据。 - -再次启动集群会将其恢复到以前的状态。 - - -### 删除集群 {#deletion-a-cluster} - -`minikube delete` 命令可用于删除集群。 - -此命令将关闭并删除 Minikube 虚拟机,不保留任何数据或状态。 - - -## 与集群交互 {#interacting-with-your-cluster} - - -### Kubectl - - -`minikube start` 命令创建一个名为 `minikube` 的 [kubectl 上下文](/docs/reference/generated/kubectl/kubectl-commands#-em-set-context-em-)。 - -此上下文包含与 Minikube 集群通信的配置。 - - -Minikube 会自动将此上下文设置为默认值,但如果你以后需要切换回它,请运行: - - -`kubectl config use-context minikube`, - - -或者像这样,每个命令都附带其执行的上下文:`kubectl get pods --context=minikube`。 - - -### 仪表盘 - - -要访问 [Kubernetes Dashboard](/zh/docs/tasks/access-application-cluster/web-ui-dashboard/), -请在启动 Minikube 后在 shell 中运行此命令以获取地址: - -```shell -minikube dashboard -``` - - -### Service - - -要访问通过节点(Node)端口公开的 Service,请在启动 Minikube 后在 shell 中运行此命令以获取地址: - -```shell -minikube service [-n NAMESPACE] [--url] NAME -``` - - -## 网络 - - -Minikube VM 通过 host-only IP 暴露给主机系统,可以通过 `minikube ip` 命令获得该 IP。 - -在 NodePort 上,可以通过该 IP 地址访问任何类型为 `NodePort` 的服务。 - - -要确定服务的 NodePort,可以像这样使用 `kubectl` 命令: - - -`kubectl get service $SERVICE --output='jsonpath="{.spec.ports[0].nodePort}"'` - - -## 持久卷(PersistentVolume) - -Minikube 支持 `hostPath` 类型的 [持久卷](/docs/concepts/storage/persistent-volumes/)。 - -这些持久卷会映射为 Minikube VM 内的目录。 - - -Minikube VM 引导到 tmpfs,因此大多数目录不会在重新启动(`minikube stop`)之后保持不变。 - -但是,Minikube 被配置为保存存储在以下主机目录下的文件: - -* `/data` -* `/var/lib/minikube` -* `/var/lib/docker` - - -下面是一个持久卷配置示例,用于在 `/data` 目录中保存数据: - -```yaml -apiVersion: v1 -kind: PersistentVolume -metadata: - name: pv0001 -spec: - accessModes: - - ReadWriteOnce - capacity: - storage: 5Gi - hostPath: - path: /data/pv0001/ -``` - - -## 挂载宿主机文件夹 - -一些驱动程序将在 VM 中挂载一个主机文件夹,以便你可以轻松地在 VM 和主机之间共享文件。目前这些都是不可配置的,并且根据你正在使用的驱动程序和操作系统的不同而不同。 - - - -{{< note >}} -KVM 驱动程序中尚未实现主机文件夹共享。 -{{< /note >}} - -| 驱动 | 操作系统 | 宿主机文件夹 | VM 文件夹 | -| --- | --- | --- | --- | -| VirtualBox | Linux | /home | /hosthome | -| VirtualBox | macOS | /Users | /Users | -| VirtualBox | Windows | C://Users | /c/Users | -| VMware Fusion | macOS | /Users | /Users | -| Xhyve | macOS | /Users | /Users | - - -## 私有容器镜像仓库 - - -要访问私有容器镜像仓库,请按照[此页](/zh/docs/concepts/containers/images/)上的步骤操作。 - - -我们建议你使用 `ImagePullSecrets`,但是如果你想在 Minikube VM 上配置访问权限,可以将 `.dockercfg` 放在 `/home/docker` 目录中,或将`config.json` 放在 `/home/docker/.docker` 目录。 - - -## 附加组件 - - -为了让 Minikube 正确启动或重新启动自定义插件,请将你希望用 Minikube 启动的插件放在 `~/.minikube/addons` 目录中。此文件夹中的插件将被移动到 Minikube VM 并在每次 Minikube 启动或重新启动时被启动。 - - -## 基于 HTTP 代理使用 Minikube - - -Minikube 创建了一个包含 Kubernetes 和 Docker 守护进程的虚拟机。 - -当 Kubernetes 尝试使用 Docker 调度容器时,Docker 守护程序可能需要访问外部网络来拉取容器镜像。 - - -如果你配置了 HTTP 代理,则可能也需要为 Docker 进行代理设置。 - -要实现这一点,可以在 `minikube start` 期间将所需的环境变量作为参数传递给启动命令。 - - -例如: - -```shell -minikube start --docker-env http_proxy=http://$YOURPROXY:PORT \ - --docker-env https_proxy=https://$YOURPROXY:PORT -``` - - -如果你的虚拟机地址是 192.168.99.100,那么你的代理设置可能会阻止 `kubectl` 直接访问它。 - -要绕过此 IP 地址的代理配置,你应该修改 no_proxy 设置。你可以这样做: - -```shell -export no_proxy=$no_proxy,$(minikube ip) -``` - - -## 已知的问题 - - -需要多个节点的功能无法在 Minikube 中使用。 - - -## 设计 - - -Minikube 使用 [libmachine](https://github.com/docker/machine/tree/master/libmachine) 配置虚拟机,[kubeadm](https://github.com/kubernetes/kubeadm) 配置 Kubernetes 集群。 - - -有关 Minikube 的更多信息,请参阅[提案](https://git.k8s.io/community/contributors/design-proposals/cluster-lifecycle/local-cluster-ux.md)。 - - -## 其他链接 - - - -* **目标和非目标**: 有关 Minikube 项目的目标和非目标,请参阅我们的 [roadmap](https://git.k8s.io/minikube/docs/contributors/roadmap.md)。 -* **开发指南**: 请查阅 [CONTRIBUTING.md](https://git.k8s.io/minikube/CONTRIBUTING.md) 获取有关如何提交 Pull Request 的概述。 -* **构建 Minikube**: 有关如何从源代码构建/测试 Minikube 的说明,请参阅[构建指南](https://git.k8s.io/minikube/docs/contributors/build_guide.md)。 -* **添加新依赖**: 有关如何向 Minikube 添加新依赖的说明,请参阅[添加依赖项指南](https://minikube.sigs.k8s.io/docs/contrib/building/iso/)。 -* **添加新插件**: 有关如何为 Minikube 添加新插件的说明,请参阅[添加插件指南](https://git.k8s.io/minikube/docs/contributors/adding_an_addon.md)。 -* **MicroK8s**: 希望避免运行虚拟机的 Linux 用户可以考虑使用 [MicroK8s](https://microk8s.io/) 作为替代品。 - - -## 社区 - -我们欢迎你向社区提交贡献、提出问题以及参与评论!Minikube 开发人员可以在 -[Slack](https://kubernetes.slack.com) 的 #minikube 频道上互动交流 -(点击[这里](https://slack.kubernetes.io/)获得邀请)。 -我们还有 [kubernetes-dev Google Groups 邮件列表](https://groups.google.com/forum/#!forum/kubernetes-dev)。 -如果你要发信到列表中,请在主题前加上 "minikube: "。 - diff --git a/content/zh/docs/tutorials/hello-minikube.md b/content/zh/docs/tutorials/hello-minikube.md index 7a0853348d..834ccec67b 100644 --- a/content/zh/docs/tutorials/hello-minikube.md +++ b/content/zh/docs/tutorials/hello-minikube.md @@ -41,7 +41,7 @@ Katacoda provides a free, in-browser Kubernetes environment. You can also follow this tutorial if you've installed [Minikube locally](/docs/tasks/tools/install-minikube/). --> {{< note >}} -如果你已在本地安装 [Minikube](/zh/docs/tasks/tools/install-minikube/),也可以按照本教程操作。 +如果你已在本地安装 [Minikube](https://minikube.sigs.k8s.io/docs/start/),也可以按照本教程操作。 {{< /note >}}