Kubernetes における Horizontal Pod Autoscaling の監視
PHP/Apache の問題の修正
1. Kubernetes リソース #
特に本番環境のKubernetesクラスターでは、CPUとメモリは貴重なリソースと見なされています。クラスター運用者は通常、デプロイメントでPodまたはサービスが必要とするCPUとメモリの量を指定するよう求めます。これにより、クラスターがソリューションを配置するノードを自動的に管理できます。
これは、アプリケーション/Podのデプロイメントにリソースセクションを配置することで行います。
例:
resources:
limits: # Maximum amount of CPU & memory for peek use
cpu: "8" # Maximum of 8 cores of CPU allowed at for peek use
memory: "8Mi" # Maximum allowed 8Mb of memory
requests: # Request are the expected amount of CPU & memory for normal use
cpu: "6" # Requesting 4 cores of a CPU
memory: "4Mi" # Requesting 4Mb of memory詳細については、こちらを参照してください: Resource Management for Pods and Containers
アプリケーションまたはPodがデプロイメントで設定された制限を超えると、Kubernetesはクラスター上の他のアプリケーションを保護するためにPodを強制終了して再起動します。
もう1つのシナリオは、ノードに十分なメモリまたはCPUがない場合です。その場合、クラスターはより多くのスペースがある別のノードにPodを再スケジュールしようとします。
それが失敗した場合、またはアプリケーションをデプロイするときに十分なスペースがない場合、クラスターはワークロード/デプロイメントをスケジュールモードにして、利用可能なノードのいずれかに制限に従ってPodをデプロイするのに十分なスペースができるまで待機します。
2. PHP/Apache デプロイメントの修正 #
ワークショップの質問
開始する前に、PHP/Apacheデプロイメントの現在の状態を確認しましょう。Alerts & Detectors で、どのディテクターが発火しましたか?この情報は他にどこで見つけることができますか?PHP/Apache StatefulSetを修正するには、以下のコマンドを使用して ~/workshop/k3s/php-apache.yaml を編集し、CPUリソースを削減します:
vim ~/workshop/k3s/php-apache.yamlリソースセクションを見つけて、CPU limitsを 1 に、CPU requestsを 0.5 に削減します:
resources:
limits:
cpu: "1"
memory: "8Mi"
requests:
cpu: "0.5"
memory: "4Mi"変更を保存します(ヒント: Esc を押してから :wq! を入力して変更を保存します)。
次に、既存のStatefulSetを削除して再作成する必要があります。StatefulSetは不変(イミュータブル)であるため、既存のものを削除して新しい変更で再作成する必要があります。
kubectl delete statefulset php-apache -n apache次に、変更をデプロイします:
kubectl apply -f ~/workshop/k3s/php-apache.yaml -n apache3. 変更の検証 #
以下のコマンドを実行して、変更が適用されたことを確認できます:
kubectl describe statefulset php-apache -n apachePodがSplunk Observability Cloudで実行中であることを確認します。
ワークショップの質問
Apache Web Servers ダッシュボードにデータが表示されていますか?
ヒント: フィルターと時間枠を使用してデータを絞り込むことを忘れないでください。
数分間、Apache web servers Navigatorダッシュボードを監視してください。
ワークショップの質問
Hosts reporting チャートでは何が起きていますか?4. メモリの問題の修正 #
Apacheダッシュボードに戻ると、メトリクスが送信されなくなっていることに気付くでしょう。別のリソースの問題があり、今回はメモリ不足です。StatefulSetを編集して、以下に示す値にメモリを増やしましょう:
kubectl edit statefulset php-apache -n apacheresources:
limits:
cpu: "1"
memory: 16Mi
requests:
cpu: 500m
memory: 12Mi変更を保存します。
ヒント
kubectl edit は内容を vi エディターで開きます。Esc を押してから :wq! を入力して変更を保存します。StatefulSetは不変(イミュータブル)であるため、既存のPodを削除して、StatefulSetが新しい変更で再作成できるようにする必要があります。
kubectl delete pod php-apache-0 -n apache以下のコマンドを実行して、変更が適用されたことを確認します:
kubectl describe statefulset php-apache -n apache
