5.7. 安装区示例应用程序
部署区域感知示例应用,以验证 OpenShift Data Foundation,扩展集群设置是否正确配置。
随着数据区域之间的延迟,可以预期与节点和区域之间具有低延迟的 OpenShift 集群(例如,同一位置的所有节点)相比,可以看到性能下降。性能会下降多少,取决于区域之间的延迟和使用存储(如高写流量)的应用行为。请确保使用扩展集群配置测试关键应用程序,以确保应用程序性能达到所需的服务水平。
ReadWriteMany(RWX)持久性卷声明(PVC)是使用 ocs-storagecluster-cephfs
存储类创建的。多个 pod 同时使用新创建的 RWX PVC。使用的应用称为文件上传程序。
演示应用程序如何在拓扑区间分布,以便在站点中断时仍然可用:
此演示是可行的,因为此应用共享同一个 RWX 卷来存储文件。这也适用于持久数据访问,因为 Red Hat OpenShift Data Foundation 被配置为具有区感知和高可用性的扩展集群。
创建新项目。
oc new-project my-shared-storage
$ oc new-project my-shared-storage
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 部署名为 file-uploader 的示例 PHP 应用。
oc new-app openshift/php:7.3-ubi8~https://github.com/christianh814/openshift-php-upload-demo --name=file-uploader
$ oc new-app openshift/php:7.3-ubi8~https://github.com/christianh814/openshift-php-upload-demo --name=file-uploader
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 查看构建日志并等待应用部署好。
oc logs -f bc/file-uploader -n my-shared-storage
$ oc logs -f bc/file-uploader -n my-shared-storage
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 当您看到
Push successful
后,命令提示符会从 tail 模式返回。注意new-app 命令直接从 git 存储库部署应用,而不使用 OpenShift 模板,因此默认情况下不创建 OpenShift 路由资源。您需要手动创建路线。
扩展应用程序
将应用缩放为四个副本,并公开其服务,使应用区域了解和可用。
oc expose svc/file-uploader -n my-shared-storage
$ oc expose svc/file-uploader -n my-shared-storage
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc scale --replicas=4 deploy/file-uploader -n my-shared-storage
$ oc scale --replicas=4 deploy/file-uploader -n my-shared-storage
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc get pods -o wide -n my-shared-storage
$ oc get pods -o wide -n my-shared-storage
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 几分钟后,您应该有四个 file-uploader pod。重复上述命令,直到有 4 个文件加载程序容器集处于
Running
状态。创建 PVC 并将其附加到应用程序中。
oc set volume deploy/file-uploader --add --name=my-shared-storage \ -t pvc --claim-mode=ReadWriteMany --claim-size=10Gi \ --claim-name=my-shared-storage --claim-class=ocs-storagecluster-cephfs \ --mount-path=/opt/app-root/src/uploaded \ -n my-shared-storage
$ oc set volume deploy/file-uploader --add --name=my-shared-storage \ -t pvc --claim-mode=ReadWriteMany --claim-size=10Gi \ --claim-name=my-shared-storage --claim-class=ocs-storagecluster-cephfs \ --mount-path=/opt/app-root/src/uploaded \ -n my-shared-storage
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 这个命令:
- 创建 PVC。
- 更新应用部署,以包含卷定义。
- 更新应用部署,将卷挂载附加到指定的 mount-path 中。
- 使用四个应用 pod 创建一个新部署。
检查添加卷的结果。
oc get pvc -n my-shared-storage
$ oc get pvc -n my-shared-storage
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE my-shared-storage Bound pvc-5402cc8a-e874-4d7e-af76-1eb05bd2e7c7 10Gi RWX ocs-storagecluster-cephfs 52s
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE my-shared-storage Bound pvc-5402cc8a-e874-4d7e-af76-1eb05bd2e7c7 10Gi RWX ocs-storagecluster-cephfs 52s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意
ACCESS MODE
已设置为 RWX。所有四个
file-uploader
pod 都使用相同的 RWX 卷。如果没有这种访问模式,OpenShift 不会尝试可靠地将多个容器集附加到同一持久卷(PV)。如果您试图扩展正在使用 ReadWriteOnce(RWO) PV 的部署,则 pod 可能会在同一节点上在一起。
5.7.1. 将 Deployment 修改为区域 Aware 复制链接链接已复制到粘贴板!
目前,file-uploader
Deployment 不是区域感知型,它可以调度同一区域中的所有 pod。在这种情况下,如果站点中断,则应用不可用。如需更多信息,请参阅使用 pod 拓扑分布限制控制 pod 放置。
在应用部署配置中添加容器集放置规则,使应用区域感知。
运行以下命令并查看输出:
oc get deployment file-uploader -o yaml -n my-shared-storage | less
$ oc get deployment file-uploader -o yaml -n my-shared-storage | less
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 编辑部署以使用拓扑区标签。
oc edit deployment file-uploader -n my-shared-storage
$ oc edit deployment file-uploader -n my-shared-storage
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在
Start
和End
(上一步中的输出中显示)之间添加以下新行:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
deployment.apps/file-uploader edited
deployment.apps/file-uploader edited
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
将部署缩减为零个容器集,然后重新扩展到四个容器集。这是必要的,因为部署在 pod 的放置方面发生了变化。
- 缩减至零个 pod
oc scale deployment file-uploader --replicas=0 -n my-shared-storage
$ oc scale deployment file-uploader --replicas=0 -n my-shared-storage
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
deployment.apps/file-uploader scaled
deployment.apps/file-uploader scaled
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 扩展到四个 pod
oc scale deployment file-uploader --replicas=4 -n my-shared-storage
$ oc scale deployment file-uploader --replicas=4 -n my-shared-storage
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
deployment.apps/file-uploader scaled
deployment.apps/file-uploader scaled
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证这四个容器集分散到 datacenter1 和 datacenter2 区域中的四个节点上。
oc get pods -o wide -n my-shared-storage | egrep '^file-uploader'| grep -v build | awk '{print $7}' | sort | uniq -c
$ oc get pods -o wide -n my-shared-storage | egrep '^file-uploader'| grep -v build | awk '{print $7}' | sort | uniq -c
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
1 perf1-mz8bt-worker-d2hdm 1 perf1-mz8bt-worker-k68rv 1 perf1-mz8bt-worker-ntkp8 1 perf1-mz8bt-worker-qpwsr
1 perf1-mz8bt-worker-d2hdm 1 perf1-mz8bt-worker-k68rv 1 perf1-mz8bt-worker-ntkp8 1 perf1-mz8bt-worker-qpwsr
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 搜索所用的区域标签。
oc get nodes -L topology.kubernetes.io/zone | grep datacenter | grep -v master
$ oc get nodes -L topology.kubernetes.io/zone | grep datacenter | grep -v master
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
perf1-mz8bt-worker-d2hdm Ready worker 35d v1.20.0+5fbfd19 datacenter1 perf1-mz8bt-worker-k68rv Ready worker 35d v1.20.0+5fbfd19 datacenter1 perf1-mz8bt-worker-ntkp8 Ready worker 35d v1.20.0+5fbfd19 datacenter2 perf1-mz8bt-worker-qpwsr Ready worker 35d v1.20.0+5fbfd19 datacenter2
perf1-mz8bt-worker-d2hdm Ready worker 35d v1.20.0+5fbfd19 datacenter1 perf1-mz8bt-worker-k68rv Ready worker 35d v1.20.0+5fbfd19 datacenter1 perf1-mz8bt-worker-ntkp8 Ready worker 35d v1.20.0+5fbfd19 datacenter2 perf1-mz8bt-worker-qpwsr Ready worker 35d v1.20.0+5fbfd19 datacenter2
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用浏览器中的 file-uploader Web 应用上传新文件。
查找创建的路由。
oc get route file-uploader -n my-shared-storage -o jsonpath --template="http://{.spec.host}{'\n'}"
$ oc get route file-uploader -n my-shared-storage -o jsonpath --template="http://{.spec.host}{'\n'}"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
http://file-uploader-my-shared-storage.apps.cluster-ocs4-abdf.ocs4-abdf.sandbox744.opentlc.com
http://file-uploader-my-shared-storage.apps.cluster-ocs4-abdf.ocs4-abdf.sandbox744.opentlc.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用上一步中的路由将浏览器指向 Web 应用。
Web 应用会列出所有上传的文件,并可以上传新文件并下载现有数据。现在,并没有任何内容。
从本地计算机中选择一个任意文件,并将它上传到应用程序。
- 单击 Choose file 以选择任意文件。
点 Upload。
图 5.1. 基于 PHP 的简单文件上传工具
- 单击 已上传文件列表,以查看所有当前上传的文件的列表。
OpenShift Container Platform 镜像 registry、入口路由和监控服务不被区识别