跳到内容

环境设置

Image

在本页面,我们将讨论如何设置您的环境,并确保运行 UI 前端和图书评论服务的 Node.js 服务器。

本节的最终交付成果看起来是什么样的?

  • 您的本地机器上有一个正在运行的 Kubernetes (k8s) 集群,并已安装 Knative。
  • 您的前端应用程序已部署为 Kubernetes Deployment。
  • 您的 Node.js 应用程序已部署为 Kubernetes Deployment。

我们将按上述顺序满足每个要求。

克隆仓库

Next Step Image

git clone https://github.com/knative/docs.git
故障排除

克隆仓库时遇到问题?在此处查看帮助

警告

重要提示:请花些时间阅读免责声明,然后再继续浏览下一页。

文件结构

Image

示例应用程序的代码位于 docs/code-samples/eventing/bookstore-sample-app

bookstore-sample-app 文件夹下,有两个文件夹:

  • /solution:此文件夹包含所有您需要的 yaml 文件和代码。遇到困难时可以查看。

  • /start:此文件夹包含您开始所需的文件。请按照教程自行保存所有配置文件!

Image

提示

Kuack 建议您从 /start 开始,在浏览教程的过程中编写所有配置文件,并在遇到困难时查看解决方案。

Image

在运行任何命令之前,请始终 cd 回到根目录,即 /start

教程中的所有命令都假定您位于 /start 目录

快捷方式

Image

运行 docs/code-samples/eventing/bookstore-sample-app/start/setup.sh 将自动完成本节中的所有任务。

警告

但是,如果您不熟悉此过程,建议您回顾以下步骤。

说明

任务 1:设置一个已安装 Knative 的正在运行的 Kubernetes 集群

Image

我们建议使用 KinD (Kubernetes in Docker) 在本地运行 Kubernetes 集群。

为了访问 Kubernetes 服务,KinD 在您的主机上提供了一个独立的二进制文件,并连接到您的集群,然后为您的服务配置新的 LoadBalancer 容器。它需要特权才能在系统上打开端口并连接到容器运行时。

请参阅此处说明:https://kind.kubernetes.ac.cn/docs/user/loadbalancer/

提示

我们建议您使用 kn quickstart 插件来安装 Knative。

请按照此处的说明启动已安装 Knative 的集群!

验证

在继续之前,您应该看到 knative-eventingknative-serving 命名空间中的 pod 正在运行。

NAMESPACE            NAME                                         READY   STATUS    RESTARTS   AGE
knative-eventing     eventing-controller-645c4bcd55-fln6l         1/1     Running   0          17m
knative-eventing     eventing-webhook-7fd9cb958f-ft9vj            1/1     Running   0          17m
knative-eventing     imc-controller-6b9fbb6487-kwvbz              1/1     Running   0          17m
knative-eventing     imc-dispatcher-6c4b5856d-hh7wq               1/1     Running   0          17m
knative-eventing     job-sink-5cc89b5d95-fhlt5                    1/1     Running   0          17m
knative-eventing     mt-broker-controller-568d6b9c59-qk8dj        1/1     Running   0          17m
knative-eventing     mt-broker-filter-db66554c4-sxxzr             1/1     Running   0          17m
knative-eventing     mt-broker-ingress-774547844d-bbbdw           1/1     Running   0          17m
knative-serving      activator-7bcd47489b-ljmt6                   1/1     Running   0          17m
knative-serving      autoscaler-65cf6767c4-v7rfn                  1/1     Running   0          17m
knative-serving      controller-964dcf97b-9qwsv                   1/1     Running   0          17m
knative-serving      net-kourier-controller-854b568d4f-6xhl5      1/1     Running   0          17m
knative-serving      webhook-658b566b8-sxbdz                      1/1     Running   0          17m
kourier-system       3scale-kourier-gateway-54fb555bd7-v2l8q      1/1     Running   0          17m
kube-system          coredns-66bc5c9577-fhnxr                     1/1     Running   0          18m
kube-system          coredns-66bc5c9577-x299f                     1/1     Running   0          18m
kube-system          etcd-kind-control-plane                      1/1     Running   0          18m
kube-system          kindnet-gpq75                                1/1     Running   0          18m
kube-system          kube-apiserver-kind-control-plane            1/1     Running   0          18m
kube-system          kube-controller-manager-kind-control-plane   1/1     Running   0          18m
kube-system          kube-proxy-v2kdx                             1/1     Running   0          18m
kube-system          kube-scheduler-kind-control-plane            1/1     Running   0          18m
local-path-storage   local-path-provisioner-7b8c8ddbd6-m5n2m      1/1     Running   0          18m

任务 2:运行 Bookstore Web 应用

Image

Next.js 前端应用程序位于 docs/code-samples/eventing/bookstore-sample-app/start/frontend 文件夹中。

部署前端应用

您可以选择在本地构建镜像,或使用我们预先构建好的镜像。如果您使用的是预先构建好的镜像,则可以直接进行下一步。

准备就绪后,运行以下命令来部署前端应用程序:

kubectl apply -f frontend/config/100-front-end-deployment.yaml

这将创建 Deployment 并将其公开为 Service 类型 LoadBalancer 以接收外部流量。

deployment.apps/bookstore-frontend created
service/bookstore-frontend-svc created
验证

运行以下命令来检查 pod 是否正在运行:

kubectl get pods

您将看到您的前端 pod 正在运行。

NAME                                  READY   STATUS    RESTARTS   AGE
bookstore-frontend-7b879ffb78-9bln6   1/1     Running   0          4m37s

访问前端工作负载

请按照相应的 minikubekind 说明从您的机器本地访问 Kubernetes 服务。

检查正在运行的 Kubernetes 服务:

kubectl get services

您将看到以下控制台输出:

NAME                     TYPE           CLUSTER-IP      EXTERNAL-IP   PORT(S)          AGE
bookstore-frontend-svc   LoadBalancer   10.99.187.173   172.18.0.6    80:31600/TCP   27m
kubernetes               ClusterIP      10.96.0.1       <none>        443/TCP          39m

注意

如果您的前端服务的 EXTERNAL-IP<pending>,那么您需要检查您的 minikube tunnel 或 KinD cloud-provider-kind 是否正常工作。

验证

使用 bookstore-frontend-svcEXTERNAL-IP 地址访问 UI 页面。UI 页面应该会显示出来!

Image

任务 3:运行图书评论服务

Image

Node.js 服务器位于 node-server 文件夹中。

部署图书评论服务:Node.js 服务器

您可以选择在本地构建镜像,或使用我们预先构建好的镜像。如果您使用的是预先构建好的镜像,则可以直接进行下一步。

准备就绪后,运行以下命令来部署 Node.js 服务器:

kubectl apply -f node-server/config/100-deployment.yaml

此命令将拉取镜像并将其部署到您的集群中作为 Deployment。它还将将其公开为 LoadBalancer 以接收外部流量。

deployment.apps/node-server created
service/node-server-svc created
验证

运行以下命令来检查 pod 是否正在运行:

kubectl get pods

您将看到您的 Node.js 服务器 (node-server) pod 正在运行。

NAME                                  READY   STATUS    RESTARTS   AGE
bookstore-frontend-7b879ffb78-9bln6   1/1     Running   0          39m
node-server-68bf98cdf4-skjmh          1/1     Running   0          38m

访问 Node 服务器后端

请按照相应的 minikubekind 说明从您的机器本地访问 Kubernetes 服务。

检查正在运行的 Kubernetes 服务:

kubectl get services
您将看到以下控制台输出:
NAME                     TYPE           CLUSTER-IP      EXTERNAL-IP   PORT(S)          AGE
bookstore-frontend-svc   LoadBalancer   10.99.187.173   172.18.0.6    80:31600/TCP   73m
kubernetes               ClusterIP      10.96.0.1       <none>        443/TCP          85m
node-server-svc          LoadBalancer   10.101.90.35    172.18.0.8    80:31792/TCP     73m

注意

如果您的前端服务的 EXTERNAL-IP<pending>,那么您需要检查您的 minikube tunnel 或 KinD cloud-provider-kind 是否正常工作。

验证

使用 node-server-svcEXTERNAL-IP 地址访问 Node 服务器页面。UI 页面应该会显示出来!

在您的前端页面上,您应该会看到状态变为绿色,并显示“Connected to node server”。

Image

故障排除

如果在设置过程中遇到任何问题,请参考文档中的故障排除部分,或查看 Kubernetes pod 的日志以获取更多详细信息。

故障排除

要检查日志,请使用以下命令:

kubectl logs <pod-name>

<pod-name> 替换为您要检查的 pod 的名称。

其次,确保您的 KinD & minikube tunnels 正在运行,以便访问网站。

下一步

Image

您已成功设置了已安装 Knative 的集群,并运行了您的前端应用程序和 Node.js 服务器。您已准备好开始学习。您的旅程从这里开始。

前往 第 1 课 - 将评论发送到 Broker

我们使用分析和 cookie 来了解网站流量。有关您使用我们网站的信息会与 Google 共享以达到此目的。了解更多。