Cloud Run 和 Kubernetes 都使用标准容器映像作为部署工件,它们都使用声明性 API 模型,其中的资源可以在具有相同标准结构的 YAML 文件中表示。
简介
Cloud Run Admin API v1 旨在最大限度地提高 Kubernetes 的可移植性,例如,Cloud Run Admin API 资源与 Kubernetes 资源具有相同的结构惯例和特性名称。请参阅 Cloud Run 服务 YAML 参考文档。
Cloud Run Admin API v1 实现了 Knative Serving API 规范,但您无需迁移到 Knative 即可将您的 Cloud Run 工作负载迁移到 Kubernetes 集群(如 GKE)。
快速入门
本快速入门是一个简单的迁移示例。
简单的资源对比
将以下名为 my-app 的简单 Cloud Run 服务与等效的 Kubernetes 部署进行对比。请注意,YAML 文件几乎完全相同。
但是,以 blue 颜色显示的部分有些许差异,迁移时需要予以更改;此外,应添加以 green 颜色显示的部分。
| Cloud Run 服务 | Kubernetes 部署 |
|---|---|
apiVersion: serving.knative.dev/v1 kind: Service metadata: name: my-app namespace: 'PROJECT_NUMBER' spec: template: spec: containers: - image: gcr.io/cloudrun/hello env: - name: HELLO value: world |
apiVersion: apps/v1 kind: Deployment metadata: name: my-app namespace: default labels: app: my-app spec: template: metadata: labels: app: my-app spec: containers: - image: gcr.io/cloudrun/hello env: - name: HELLO value: world replicas: 3 selector: matchLabels: app: my-app |
将 Cloud Run 服务迁移到 GKE
将服务 YAML 文件下载到当前目录:
gcloud run services describe my-app --format export > my-app.yaml
修改 YAML 以与 Kubernetes 部署匹配:
- 对于“
kind”属性,请将值“Service”替换为“Deployment” - 对于“
apiVersion”属性,请将值“serving.knative.dev/v1”替换为“
- 对于“