环境设置¶
在本页中,我们将讨论如何设置您的环境,并确保启动 UI 前端和 Book Review Service 的节点服务器。
本节的最终交付成果是什么样的?¶
- 您在本地机器上有一个运行的 Kubernetes (k8s) 集群,并安装了 Knative。
- 您已将您的前端应用程序部署为 Kubernetes 部署,并使用端口转发到 localhost:3000
- 您已将您的 Node.js 应用程序部署为 Kubernetes 部署,并使用端口转发到 localhost:8080
我们将按照上述顺序完成每个要求。
克隆存储库¶
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:设置运行的 Kubernetes 集群,并安装 Knative¶
提示
我们建议您使用 kn quickstart
插件来安装 Knative。
请按照 此处 的说明启动您的集群并安装 Knative!
验证
在继续之前,您应该看到 knative-eventing
和 knative-serving
命名空间中的 Pod 正在运行。
NAMESPACE NAME READY STATUS RESTARTS AGE
knative-eventing eventing-controller-7576f555d5-7c2p2 1/1 Running 0 4m50s
knative-eventing eventing-webhook-5874bb8445-cqcn9 1/1 Running 0 4m50s
knative-eventing imc-controller-8c5d5ddb5-m249l 1/1 Running 0 4m49s
knative-eventing imc-dispatcher-76d9f7464b-dphd6 1/1 Running 0 4m49s
knative-eventing mt-broker-controller-8d8f8d48f-rvlcv 1/1 Running 0 4m48s
knative-eventing mt-broker-filter-85c457f879-dvhnj 1/1 Running 0 4m48s
knative-eventing mt-broker-ingress-5688f4cd68-nm8cc 1/1 Running 0 4m48s
knative-serving activator-55d856fccd-g5qpw 1/1 Running 0 4m53s
knative-serving autoscaler-5fb49c64c7-hrjng 1/1 Running 0 4m53s
knative-serving controller-ddbb9d4f-khttq 1/1 Running 0 4m53s
knative-serving net-kourier-controller-68d89f78d5-hw8r6 1/1 Running 0 4m52s
knative-serving webhook-85b9744fc5-6w9sg 1/1 Running 0 4m53s
kourier-system 3scale-kourier-gateway-dbc5b88f5-7g29n 1/1 Running 0 4m52s
kube-system coredns-5dd5756b68-49xsj 1/1 Running 0 12m
kube-system etcd-minikube 1/1 Running 0 12m
kube-system kube-apiserver-minikube 1/1 Running 0 12m
kube-system kube-controller-manager-minikube 1/1 Running 0 12m
kube-system kube-proxy-tqcvx 1/1 Running 0 12m
kube-system kube-scheduler-minikube 1/1 Running 0 12m
kube-system storage-provisioner 1/1 Running 0 12m
适用于 Minikube 用户的额外步骤:¶
注意!如果您没有使用 Knative Quick Start,请手动设置隧道以连接到类型为 LoadBalancer
的服务。
运行以下命令并保持终端打开
minikube tunnel
验证
如果没有错误消息,则表示您已成功设置隧道。
任务 2:运行 Bookstore Web 应用程序¶
Next.js 前端应用程序位于 docs/code-samples/eventing/bookstore-sample-app/start/frontend
文件夹中。
确保您的本地机器上的端口 3000 未被其他应用程序使用。
部署前端应用程序¶
您可以 在本地构建镜像,也可以使用我们预先构建的镜像。如果您使用的是预先构建的镜像,则可以继续执行下一步。
准备就绪后,运行以下命令来部署前端应用程序
kubectl apply -f frontend/config/100-front-end-deployment.yaml
这将创建部署并将其暴露为类型为 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
端口转发(在条件下为可选)¶
您可能需要设置端口转发才能从您的本地机器访问应用程序。
通过运行以下命令检查是否需要端口转发
kubectl get services
您将看到以下控制台输出
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
bookstore-frontend-svc LoadBalancer 10.99.187.173 <pending> 3000:31600/TCP 27m
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 39m
注意
如果您的前端服务的 EXTERNAL-IP
为 127.0.0.1
,则不需要端口转发。
如果需要端口转发,请运行以下命令
kubectl port-forward svc/bookstore-frontend-svc 3000:3000
您应该看到以下输出
Forwarding from 127.0.0.1:3000 -> 3000
Forwarding from [::1]:3000 -> 3000
建立端口转发后,不要关闭终端。 启动一个新的终端来运行下一个命令。
任务 3:运行 Book Review Service¶
Node.js 服务器位于 node-server
文件夹中。
警告
确保您的本地机器上的端口 8080 未被其他应用程序使用。
部署 Book Review Service:Node.js 服务器¶
您可以 在本地构建镜像,也可以使用我们预先构建的镜像。如果您使用的是预先构建的镜像,则可以继续执行下一步。
准备就绪后,运行以下命令来部署 Node.js 服务器
kubectl apply -f node-server/config/100-deployment.yaml
此命令将拉取镜像并将其部署到您的集群作为部署。它还将将其暴露为 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
端口转发(在条件下为可选)¶
您可能需要设置端口转发才能从您的本地机器访问应用程序。
通过运行以下命令检查是否需要端口转发
kubectl get services
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
bookstore-frontend-svc LoadBalancer 10.99.187.173 <pending> 3000:31600/TCP 73m
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 85m
node-server-svc LoadBalancer 10.101.90.35 <pending> 80:31792/TCP 73m
注意
如果您的 Node.js 服务的 EXTERNAL-IP
为 127.0.0.1
,则不需要端口转发。如果您无法访问页面 localhost:8080
,则可以尝试设置端口转发。
如果需要端口转发,请打开一个新的终端并运行
kubectl port-forward svc/node-server-svc 8080:80
Forwarding from 127.0.0.1:8080 > 8000
Forwarding from [::1]:8080 > 8000
建立端口转发后,不要关闭终端。 启动一个新的终端来运行下一个命令。
故障排除¶
如果您在设置过程中遇到任何问题,请参阅文档中的故障排除部分或检查 Kubernetes Pod 的日志以获取更多详细信息。
故障排除
要检查日志,请使用以下命令
kubectl logs <pod-name>
将 <pod-name>
替换为您要检查的 Pod 的名称。
下一步¶
您已成功设置了安装了 Knative 的集群,并运行了前端应用程序和节点服务器。您已准备好开始学习。您的旅程从这里开始。