Node.jsアプリケーションDeployment
環境変数、HTTPヘルスエンドポイント、水平スケーリング用の設定可能なレプリカを持つNode.jsアプリケーション用のKubernetes Deploymentを作成します。
Web Servers
詳細な説明
KubernetesでのNode.js
KubernetesにNode.jsアプリケーションをデプロイするには、ヘルスチェックエンドポイント、環境変数管理、リソースサイジングに注意が必要です。Node.jsはシングルスレッドのため、CPU制限はマルチスレッドランタイムとは異なる影響を持ちます。
主要な設定
apiVersion: apps/v1
kind: Deployment
metadata:
name: node-app
labels:
app: "node-app"
version: "v1"
spec:
replicas: 3
template:
spec:
containers:
- name: node
image: node:20-alpine
ports:
- name: http
containerPort: 3000
env:
- name: NODE_ENV
value: "production"
- name: PORT
value: "3000"
resources:
requests:
cpu: "100m"
memory: "128Mi"
limits:
cpu: "500m"
memory: "512Mi"
livenessProbe:
httpGet:
path: /health
port: 3000
initialDelaySeconds: 15
periodSeconds: 20
readinessProbe:
httpGet:
path: /ready
port: 3000
initialDelaySeconds: 5
periodSeconds: 10
ヘルスエンドポイント
Node.jsアプリケーションは2つの異なるエンドポイントを公開する必要があります:
/health(liveness):プロセスが生存しデッドロックしていない場合に200を返します。軽量に保ちます — データベースチェックは不要です。/ready(readiness):アプリがトラフィックを処理する準備ができたら200を返します。データベース接続チェック、キャッシュウォームアップなどを含めることができます。
メモリに関する考慮事項
Node.jsはガベージコレクション対象のヒープを使用します。64ビットシステムのデフォルトヒープ制限は約1.5GBです。メモリ制限が低い場合は--max-old-space-sizeフラグを設定してください。512Miメモリ制限のコンテナでは、非ヒープメモリの余地を残すために--max-old-space-size=384を設定すべきです。
スケーリング
replicas: 3では、Kubernetesが3つのポッド間でトラフィックを分散します。Node.jsはシングルスレッドのため、水平スケーリング(より多くのポッド)が垂直スケーリング(ポッドあたりのCPU増加)よりも効果的です。動的スケーリングにはHorizontal Pod Autoscalerの追加を検討してください。
ユースケース
適切な環境設定とヘルスチェックによる自動回復を備えた、Node.js REST API、Expressサーバー、Next.jsアプリケーションのKubernetesへのデプロイ。