我们创建了 .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: {}
问题是我们需要定期更新 osrm 服务使用的地图数据。这意味着能够重新下载 pbf 文件并重新创建服务使用的必要文件。
这可以通过 kubernetes cronjobs 来实现,它可能必须使用持久卷(Kubernetes 中的 Cron Jobs - 连接到现有 Pod,执行脚本)。
这是实现获取新地图数据并刷新osrm服务使用的数据的唯一方法吗?具体如何?有没有更好 - 更简单的方法来实现这一目标?