はじめに
Kubernetesは、コンテナ化されたアプリのオーケストレーション、スケーリング、デプロイのために構築されたオープンソースシステムです。 Kubernetesの使用に時間を費やしたことがあれば、コンテナの管理にKubernetesがどれほど役立つかをご存知でしょう。
また、コンテナが常に想定どおりに動作するとは限らないこともわかります。エラーが表示された場合は、問題をすばやく簡単に修正する方法が必要です。
このチュートリアルでは、Kubernetesでポッドを再起動する方法について説明します。
前提条件
- ターミナルウィンドウ/コマンドラインへのアクセス
- Kubernetesクラスター
- Kuberneteskubectlコマンドラインツール
Kubernetesポッドの再起動
コンテナ内のポッドの1つがエラーを報告しているとしましょう。再起動ポリシーによっては、Kubernetesがポッドを自動的に再起動して再び機能させる場合があります。ただし、それで必ずしも問題が解決するとは限りません。
Kubernetesがそれ自体で問題を修正できず、エラーの原因が見つからない場合は、ポッドを再起動することがアプリを再び動作させるための最速の方法です。
方法1:ローリングリスタート
アップデート1.15以降、Kubernetesではデプロイのローリングリスタートを実行できます。 Kubernetesに新たに追加されたものとして、これは最速の再起動方法です。
kubectl rollout restart deployment [deployment_name]
上記のコマンドは、段階的なシャットダウンを実行し、デプロイメント内の各コンテナーを再起動します。ほとんどのコンテナは引き続き実行されているため、アプリは引き続き利用できます。
方法2:環境変数の使用
もう1つの方法は、環境変数を設定または変更して、ポッドを強制的に再起動し、行った変更と同期させることです。
たとえば、コンテナのデプロイ日を変更できます。
kubectl set env deployment [deployment_name] DEPLOY_DATE="$(date)"
上記の例では、コマンド set env
環境変数の変更を設定します。deployment [deployment_name]
デプロイを選択し、 DEPLOY_DATE="$(date)"
展開日を変更し、ポッドを強制的に再起動します。
方法3:レプリカの数をスケーリングする
最後に、 scale
を使用できます 誤動作しているポッドのレプリカがいくつあるかを変更するコマンド。この量をゼロに設定すると、基本的にポッドがオフになります:
kubectl scale deployment [deployment_name] --replicas=0
ポッドを再起動するには、同じコマンドを使用して、レプリカの数をゼロより大きい任意の値に設定します。
kubectl scale deployment [deployment_name] --replicas=1
レプリカの数をゼロに設定すると、Kubernetesは不要になったレプリカを破棄します。
ゼロより大きい数値を設定すると、Kubernetesは新しいレプリカを作成します。新しいレプリカの名前は、古いレプリカとは異なります。コマンドkubectl get pods
を使用できます ポッドのステータスを確認し、新しい名前を確認します。