将 Kubernetes 部署转换为 Knative 服务¶
本主题介绍如何将 Kubernetes 部署转换为 Knative 服务。
优势¶
转换为 Knative 服务具有以下优势
- 减少服务实例的占用空间,因为当实例变为空闲时,它会缩放到 0。
- 由于 Knative 服务的内置自动扩展,因此可以提高性能。
确定您的工作负载是否适合 Knative¶
一般来说,如果您的 Kubernetes 工作负载适合 Knative,您可以删除许多清单以创建 Knative 服务。
您需要考虑三个方面
- 所有完成的工作都由 HTTP 触发。
- 容器是无状态的。所有状态都存储在其他地方,或者可以重新创建。
- 您的工作负载仅使用 Secret 和 ConfigMap 卷。
转换示例¶
以下示例显示了 Kubernetes Nginx 部署和服务,并展示了如何将其转换为 Knative 服务。
Kubernetes Nginx 部署和服务¶
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-nginx
spec:
selector:
matchLabels:
run: my-nginx
replicas: 2
template:
metadata:
labels:
run: my-nginx
spec:
containers:
- name: my-nginx
image: nginx
ports:
- containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
name: my-nginx
labels:
run: my-nginx
spec:
ports:
- port: 80
protocol: TCP
selector:
run: my-nginx
Knative 服务¶
apiVersion: serving.knative.dev/v1
kind: Service
metadata:
name: my-nginx
spec:
template:
spec:
containers:
- image: nginx
ports:
- containerPort: 80