你好,Minikube

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

    准备开始

    本教程提供了容器镜像,使用 NGINX 来对所有请求做出回应:

    1. 点击 启动终端

    2. 在浏览器中打开 Kubernetes 仪表板(Dashboard):

    3. 仅限 Katacoda 环境:在终端窗口的顶部,单击加号,然后单击 选择要在主机 1 上查看的端口

    4. 仅限 Katacoda 环境:输入“30000”,然后单击 显示端口

    创建 Deployment

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

    1. 使用 kubectl create 命令创建管理 Pod 的 Deployment。该 Pod 根据提供的 Docker 镜像运行 Container。

      1. kubectl create deployment hello-node --image=k8s.gcr.io/echoserver:1.4
    2. 查看 Deployment:

      1. kubectl get deployments

      输出结果类似于这样:

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

      1. kubectl get pods
      1. NAME READY STATUS RESTARTS AGE
      2. hello-node-5f76cf6ccf-br9b5 1/1 Running 0 1m
    4. 查看集群事件:

      1. kubectl get events
    5. 查看 kubectl 配置:

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

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

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

      1. 查看你刚刚创建的 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

        对于支持负载均衡器的云服务平台而言,平台将提供一个外部 IP 来访问该服务。 在 Minikube 上,LoadBalancer 使得服务可以通过命令 minikube service 访问。

      2. 运行下面的命令:

        1. minikube service hello-node
      3. 仅限 Katacoda 环境:单击加号,然后单击 选择要在主机 1 上查看的端口

      4. 仅限 Katacoda 环境:请注意在 service 输出中与 8080 对应的长度为 5 位的端口号。 此端口号是随机生成的,可能与你的不同。 在端口号文本框中输入你自己的端口号,然后单击显示端口。 对应于上面的例子,需要输入 。

      启用插件

      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
        16. storage-provisioner: enabled
        17. storage-provisioner-gluster: disabled
      2. 启用插件,例如 metrics-server

        输出结果类似于这样:

        1. 查看刚才创建的 Pod 和 Service:

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

          输出结果类似于这样:

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

          1. minikube addons disable metrics-server

          输出结果类似于这样:

          1. metrics-server was successfully disabled

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

        1. kubectl delete service hello-node
        2. kubectl delete deployment hello-node

        可选地,停止 Minikube 虚拟机(VM):

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

        1. minikube delete

        接下来

        • 进一步了解 。
        • 进一步了解部署应用
        • 进一步了解 。