Ant*_*s S 5 kubernetes osm.pbf osrm kubernetes-cronjob
我们创建了 .yaml 文件来在 Kubernetes 集群中部署 osrm/osrm-backend ( https://hub.docker.com/r/osrm/osrm-backend/tags )。
我们首先在节点卷中下载 pbf 文件,然后为服务创建必要的文件,最后服务启动。
您可能会在下面找到 yaml 文件:
apiVersion: v1
kind: Service
metadata:
name: osrm-albania
labels:
app: osrm-albania
spec:
ports:
- port: 5000
targetPort: 5000
name: http
selector:
app: osrm-albania
type: NodePort
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: osrm-albania
spec:
replicas: 1
selector:
matchLabels:
app: osrm-albania
template:
metadata:
labels:
app: osrm-albania
spec:
containers:
- name: osrm-albania
image: osrm/osrm-backend:latest
command: ["/bin/sh", "-c"]
args: ["osrm-extract -p /opt/car.lua /data/albania-latest.osm.pbf && osrm-partition /data/albania-latest.osrm && osrm-customize /data/albania-latest.osrm && osrm-routed --algorithm mld /data/albania-latest.osrm"]
ports:
- containerPort: 5000
name: osrm-port
volumeMounts:
- name: albania
readOnly: false
mountPath: /data
initContainers:
- name: get-osrm-file
image: busybox
command: ['wget', 'http://download.geofabrik.de/europe/albania-latest.osm.pbf', '--directory-prefix=/data']
volumeMounts:
- name: albania
readOnly: false
mountPath: /data
volumes:
- name: albania
emptyDir: {}
Run Code Online (Sandbox Code Playgroud)
问题是我们需要定期更新 osrm 服务使用的地图数据。这意味着能够重新下载 pbf 文件并重新创建服务使用的必要文件。
这可以通过 kubernetes cronjobs 来实现,它可能必须使用持久卷(Kubernetes 中的 Cron Jobs - 连接到现有 Pod,执行脚本)。
这是实现获取新地图数据并刷新osrm服务使用的数据的唯一方法吗?具体如何?有没有更好、更简单的方法来实现这一目标?
小智 0
这是一个棘手的情况,我在集群中遇到了同样的问题,我修复了将作业划分为更多 Pod 的问题:
通过这种方式,将 pod 1、2 和 3 设置为 cronjob,每个 pod 将在不中断服务的情况下执行所有操作。此问题是由于前 3 次操作花费了大量时间(2 至 3 小时)造成的。
归档时间: |
|
查看次数: |
1165 次 |
最近记录: |