你好,Minikube

    • 将一个示例应用部署到 Minikube。
    • 运行应用程序。
    • 查看应用日志。

    准备开始

    本教程假设你已经安装了 。 有关安装说明,请参阅 minikube start

    你还需要安装 kubectl。 有关安装说明,请参阅。

    创建 Minikube 集群

    打开 Kubernetes 仪表板。你可以通过两种不同的方式执行此操作:

    打开一个新的终端,然后运行:

    1. # 启动一个新的终端,并保持此命令运行。
    2. minikube dashboard

    现在,切换回运行 minikube start 的终端。

    说明:

    dashboard 命令启用仪表板插件,并在默认的 Web 浏览器中打开代理。 你可以在仪表板上创建 Kubernetes 资源,例如 Deployment 和 Service。

    如果你以 root 用户身份在环境中运行, 请参见使用 URL 打开仪表板

    默认情况下,仪表板只能从内部 Kubernetes 虚拟网络中访问。 dashboard 命令创建一个临时代理,使仪表板可以从 Kubernetes 虚拟网络外部访问。

    要停止代理,请运行 Ctrl+C 退出该进程。仪表板仍在运行中。 命令退出后,仪表板仍然在 Kubernetes 集群中运行。 你可以再次运行 dashboard 命令创建另一个代理来访问仪表板。

    如果你不想 Minikube 为你打开 Web 浏览器,可以使用 --url 标志运行仪表板命令。 minikube 会输出一个 URL,你可以在你喜欢的浏览器中打开该 URL。

    打开一个新的终端,然后运行:

    1. # 启动一个新的终端,并保持此命令运行。
    2. minikube dashboard --url

    现在,切换回运行 minikube start 的终端。

    创建 Deployment

    Kubernetes Pod 是由一个或多个为了管理和联网而绑定在一起的容器构成的组。本教程中的 Pod 只有一个容器。 Kubernetes 检查 Pod 的健康状况,并在 Pod 中的容器终止的情况下重新启动新的容器。 Deployment 是管理 Pod 创建和扩展的推荐方法。

      1. # 运行包含 Web 服务器的测试容器镜像
      2. kubectl create deployment hello-node --image=registry.k8s.io/e2e-test-images/agnhost:2.39 -- /agnhost netexec --http-port=8080
    1. 查看 Deployment:

      1. kubectl get deployments

      输出结果类似于这样:

      1. NAME READY UP-TO-DATE AVAILABLE AGE
      2. hello-node 1/1 1 1 1m
    2. 查看 Pod:

      1. kubectl get pods

      输出结果类似于这样:

      1. NAME READY STATUS RESTARTS AGE
      2. hello-node-5f76cf6ccf-br9b5 1/1 Running 0 1m
    3. 查看 kubectl 配置:

      1. kubectl config view

    说明:

    有关 kubectl 命令的更多信息,请参阅 kubectl 概述

    创建 Service

    默认情况下,Pod 只能通过 Kubernetes 集群中的内部 IP 地址访问。 要使得 hello-node 容器可以从 Kubernetes 虚拟网络的外部访问,你必须将 Pod 暴露为 Kubernetes Service

    1. 使用 命令将 Pod 暴露给公网:

      1. kubectl expose deployment hello-node --type=LoadBalancer --port=8080

      这里的 --type=LoadBalancer 参数表明你希望将你的 Service 暴露到集群外部。

      测试镜像中的应用程序代码仅监听 TCP 8080 端口。 如果你用 kubectl expose 暴露了其它的端口,客户端将不能访问其它端口。

    2. 查看你创建的 Service:

      1. kubectl get services

      输出结果类似于这样:

      1. NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
      2. hello-node LoadBalancer 10.108.144.78 <pending> 8080:30369/TCP 21s
      3. kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 23m
    3. 运行下面的命令:

      1. minikube service hello-node

      这将打开一个浏览器窗口,为你的应用程序提供服务并显示应用的响应。

    Minikube 有一组内置的插件, 可以在本地 Kubernetes 环境中启用、禁用和打开。

    1. 列出当前支持的插件:

      1. minikube addons list

      输出结果类似于这样:

      1. addon-manager: enabled
      2. dashboard: enabled
      3. default-storageclass: enabled
      4. efk: disabled
      5. freshpod: disabled
      6. gvisor: disabled
      7. helm-tiller: disabled
      8. ingress: disabled
      9. ingress-dns: disabled
      10. logviewer: disabled
      11. metrics-server: disabled
      12. nvidia-driver-installer: disabled
      13. nvidia-gpu-device-plugin: disabled
      14. registry: disabled
      15. registry-creds: disabled
    2. 启用插件,例如 metrics-server

      输出结果类似于这样:

      1. The 'metrics-server' addon is enabled
    3. 查看通过安装该插件所创建的 Pod 和 Service:

      1. kubectl get pod,svc -n kube-system

      输出结果类似于这样:

      1. NAME READY STATUS RESTARTS AGE
      2. pod/coredns-5644d7b6d9-mh9ll 1/1 Running 0 34m
      3. pod/coredns-5644d7b6d9-pqd2t 1/1 Running 0 34m
      4. pod/metrics-server-67fb648c5 1/1 Running 0 26s
      5. pod/etcd-minikube 1/1 Running 0 34m
      6. pod/influxdb-grafana-b29w8 2/2 Running 0 26s
      7. pod/kube-addon-manager-minikube 1/1 Running 0 34m
      8. pod/kube-apiserver-minikube 1/1 Running 0 34m
      9. pod/kube-controller-manager-minikube 1/1 Running 0 34m
      10. pod/kube-proxy-rnlps 1/1 Running 0 34m
      11. pod/kube-scheduler-minikube 1/1 Running 0 34m
      12. pod/storage-provisioner 1/1 Running 0 34m
      13. NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
      14. service/metrics-server ClusterIP 10.96.241.45 <none> 80/TCP 26s
      15. service/kube-dns ClusterIP 10.96.0.10 <none> 53/UDP,53/TCP 34m
      16. service/monitoring-grafana NodePort 10.99.24.54 <none> 80:30002/TCP 26s
      17. service/monitoring-influxdb ClusterIP 10.111.169.94 <none> 8083/TCP,8086/TCP 26s
    4. 禁用 metrics-server

      1. minikube addons disable metrics-server

      输出结果类似于这样:

      1. metrics-server was successfully disabled

    清理

    现在可以清理你在集群中创建的资源:

    1. kubectl delete service hello-node

    停止 Minikube 集群:

    1. minikube stop

    可选地,删除 Minikube 虚拟机(VM):

    接下来