KubernetesデプロイメントをKnativeサービスに変換する¶
このトピックでは、KubernetesデプロイメントをKnativeサービスに変換する方法について説明します。
利点¶
Knativeサービスに変換すると、次の利点があります。
- サービスインスタンスがアイドル状態になるとインスタンスが0にスケールされるため、サービスインスタンスのフットプリントが削減されます。
- Knativeサービスの組み込みオートスケーリングにより、パフォーマンスが向上します。
ワークロードがKnativeに適しているかどうかを判断する¶
一般的に、KubernetesワークロードがKnativeに適している場合、マニフェストの多くを削除してKnativeサービスを作成できます。
考慮すべき3つの側面があります。
- すべての作業は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