--- title: 你好,Minikube content_type: tutorial weight: 5 menu: main: title: "Get Started" weight: 10 post: >
准备好动手操作了么?构建一个简单的 Kubernetes 集群来运行示例应用。
card: name: tutorials weight: 10 --- 本教程向你展示如何使用 Minikube 和 Katacoda 在 Kubernetes 上运行一个应用示例。Katacoda 提供免费的浏览器内 Kubernetes 环境。 {{< note >}} 如果你已在本地安装 Minikube,也可以按照本教程操作。 安装指南参阅 [minikube start](https://minikube.sigs.k8s.io/docs/start/) 。 {{< /note >}} ## {{% heading "objectives" %}} * 将一个示例应用部署到 Minikube。 * 运行应用程序。 * 查看应用日志 ## {{% heading "prerequisites" %}} 本教程提供了容器镜像,使用 NGINX 来对所有请求做出回应: ## 创建 Minikube 集群 1. 点击 **启动终端** {{< kat-button >}} {{< note >}} 如果你在本地安装了 Minikube,运行 `minikube start`。 在运行 `minikube dashboard` 之前,你应该打开一个新终端, 在此启动 `minikube dashboard` ,然后切换回主终端。 {{< /note >}} 2. 在浏览器中打开 Kubernetes 仪表板(Dashboard): ```shell minikube dashboard ``` 3. 仅限 Katacoda 环境:在终端窗口的顶部,单击加号,然后单击 **选择要在主机 1 上查看的端口**。 4. 仅限 Katacoda 环境:输入“30000”,然后单击 **显示端口**。 {{< note >}} `dashboard` 命令启用仪表板插件,并在默认的 Web 浏览器中打开代理。 你可以在仪表板上创建 Kubernetes 资源,例如 Deployment 和 Service。 如果你以 root 用户身份在环境中运行, 请参见[使用 URL 打开仪表板](#open-dashboard-with-url)。 默认情况下,仪表板只能从内部 Kubernetes 虚拟网络中访问。 `dashboard` 命令创建一个临时代理,使仪表板可以从 Kubernetes 虚拟网络外部访问。 要停止代理,请运行 `Ctrl+C` 退出该进程。仪表板仍在运行中。 命令退出后,仪表板仍然在 Kubernetes 集群中运行。 你可以再次运行 `dashboard` 命令创建另一个代理来访问仪表板。 {{< /note >}} ## 使用 URL 打开仪表板 如果你不想打开 Web 浏览器,请使用 `--url` 标志运行显示板命令以得到 URL: ```shell minikube dashboard --url ``` ## 创建 Deployment Kubernetes [*Pod*](/zh/docs/concepts/workloads/pods/) 是由一个或多个 为了管理和联网而绑定在一起的容器构成的组。 本教程中的 Pod 只有一个容器。 Kubernetes [*Deployment*](/zh/docs/concepts/workloads/controllers/deployment/) 检查 Pod 的健康状况,并在 Pod 中的容器终止的情况下重新启动新的容器。 Deployment 是管理 Pod 创建和扩展的推荐方法。 1. 使用 `kubectl create` 命令创建管理 Pod 的 Deployment。该 Pod 根据提供的 Docker 镜像运行 Container。 ```shell kubectl create deployment hello-node --image=k8s.gcr.io/echoserver:1.4 ``` 2. 查看 Deployment: ```shell kubectl get deployments ``` 输出结果类似于这样: ``` NAME READY UP-TO-DATE AVAILABLE AGE hello-node 1/1 1 1 1m ``` 3. 查看 Pod: ```shell kubectl get pods ``` 输出结果类似于这样: ``` NAME READY STATUS RESTARTS AGE hello-node-5f76cf6ccf-br9b5 1/1 Running 0 1m ``` 4. 查看集群事件: ```shell kubectl get events ``` 5. 查看 `kubectl` 配置: ```shell kubectl config view ``` {{< note >}} 有关 `kubectl` 命令的更多信息,请参阅 [kubectl 概述](/zh/docs/reference/kubectl/)。 {{< /note >}} ## 创建 Service 默认情况下,Pod 只能通过 Kubernetes 集群中的内部 IP 地址访问。 要使得 `hello-node` 容器可以从 Kubernetes 虚拟网络的外部访问,你必须将 Pod 暴露为 Kubernetes [*Service*](/zh/docs/concepts/services-networking/service/)。 1. 使用 `kubectl expose` 命令将 Pod 暴露给公网: ```shell kubectl expose deployment hello-node --type=LoadBalancer --port=8080 ``` 这里的 `--type=LoadBalancer` 参数表明你希望将你的 Service 暴露到集群外部。 镜像 `k8s.gcr.io/echoserver` 中的应用程序代码仅监听 TCP 8080 端口。 如果你用 `kubectl expose` 暴露了其它的端口,客户端将不能访问其它端口。 2. 查看你创建的 Service: ```shell kubectl get services ``` 输出结果类似于这样: ``` NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE hello-node LoadBalancer 10.108.144.78