环境设置¶

在本页面,我们将讨论如何设置您的环境,并确保运行 UI 前端和图书评论服务的 Node.js 服务器。
本节的最终交付成果看起来是什么样的?¶
- 您的本地机器上有一个正在运行的 Kubernetes (k8s) 集群,并已安装 Knative。
- 您的前端应用程序已部署为 Kubernetes Deployment。
- 您的 Node.js 应用程序已部署为 Kubernetes Deployment。
我们将按上述顺序满足每个要求。
克隆仓库¶

git clone https://github.com/knative/docs.git
故障排除
克隆仓库时遇到问题?在此处查看帮助。
警告
重要提示:请花些时间阅读免责声明,然后再继续浏览下一页。
文件结构¶

示例应用程序的代码位于 docs/code-samples/eventing/bookstore-sample-app。
在 bookstore-sample-app 文件夹下,有两个文件夹:
-
/solution:此文件夹包含所有您需要的 yaml 文件和代码。遇到困难时可以查看。
-
/start:此文件夹包含您开始所需的文件。请按照教程自行保存所有配置文件!

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

在运行任何命令之前,请始终 cd 回到根目录,即 /start。
教程中的所有命令都假定您位于 /start 目录。
快捷方式¶

运行 docs/code-samples/eventing/bookstore-sample-app/start/setup.sh 将自动完成本节中的所有任务。
警告
但是,如果您不熟悉此过程,建议您回顾以下步骤。
说明¶
任务 1:设置一个已安装 Knative 的正在运行的 Kubernetes 集群¶

我们建议使用 KinD (Kubernetes in Docker) 在本地运行 Kubernetes 集群。
为了访问 Kubernetes 服务,KinD 在您的主机上提供了一个独立的二进制文件,并连接到您的集群,然后为您的服务配置新的 LoadBalancer 容器。它需要特权才能在系统上打开端口并连接到容器运行时。
请参阅此处说明:https://kind.kubernetes.ac.cn/docs/user/loadbalancer/
提示
我们建议您使用 kn quickstart 插件来安装 Knative。
请按照此处的说明启动已安装 Knative 的集群!
验证
在继续之前,您应该看到 knative-eventing 和 knative-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 应用¶

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
访问前端工作负载¶
请按照相应的 minikube 或 kind 说明从您的机器本地访问 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-svc 的 EXTERNAL-IP 地址访问 UI 页面。UI 页面应该会显示出来!

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

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 服务器后端¶
请按照相应的 minikube 或 kind 说明从您的机器本地访问 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-svc 的 EXTERNAL-IP 地址访问 Node 服务器页面。UI 页面应该会显示出来!
在您的前端页面上,您应该会看到状态变为绿色,并显示“Connected to node server”。

故障排除¶
如果在设置过程中遇到任何问题,请参考文档中的故障排除部分,或查看 Kubernetes pod 的日志以获取更多详细信息。
故障排除
要检查日志,请使用以下命令:
kubectl logs <pod-name>
将 <pod-name> 替换为您要检查的 pod 的名称。
其次,确保您的 KinD & minikube tunnels 正在运行,以便访问网站。
下一步¶

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