Kubernetesでポッドを再開する方法


導入


Kubernetes 開発者が作成、展開、スケール、およびそのアプリケーションを管理するのに役立つ信頼性の高いコンテナのオーケストレーションシステムです.PODはKubernetesで作成および管理できるコンピューティングの最も基本的な展開単位です.
あなたのCIパイプラインを実行したり、新しいイメージを作成せずにポッドを再起動したい場合は、これを達成するためにいくつかの方法があります.この記事では、我々はKubernetesポッドと失敗のイベントでそれらを再起動する方法について説明します.
実際のハウツープロセスに移行する前に、質問に対処することが重要です.

Kubernetes用語におけるポッドとは何か


コンテナのコンテナとしてポッドを考えたり、Kubernetesで子要素の管理を可能にする複数のコンテナを囲む抽象層を考えることができます.
ポッドは通常1つのコンテナを保持します-しかし、複数のコンテナは、一つのポッドの範囲内で存在することができます.これらの'サイドカー'コンテナは、ユニットコンテナやデバッグ/ログなどのための一時的なコンテナかもしれません.
単一のpodの中のコンテナは、同様に資源とネットワーク名前空間を共有します.あなたは、複数のDockerコンテナをスピンできる単一のPCとしてポッドを考えることができます.これらのコンテナは、ハードウェア、RAM、ファイルシステムなどの同じ資源を共有し、localhostを通して互いに通信することができる.

ポッドライフサイクルの理解


Kubernetesでポッドを再開する方法を理解するために、彼らのライフサイクルを理解することは不可欠です.
Kubernetesでは、ポッドは一時的と見なされます.これは、ポッドが短命であり、いつでも終了することができることを意味します.これらはデータ持続性を必要としないステートレスアプリケーションを実行するように設計されています.終了時にデータを保持する必要のあるデータベースなどのソフトウェアでは、statent setを使用することをお勧めします.
podのライフサイクルには5つの段階があります.
  • 未定:これは、podの内部のコンテナーがまだ作成されていないことを示します.
  • ランニング:ここでは、podのコンテナはエラーなしで作成され、起動の過程にあります
  • 成功:POD内のすべてのコンテナは正常に終了し、再起動されません(例えばコンテナがbashスクリプトを実行しているpod)
  • 失敗しました:POD内のコンテナは、ゼロでない終了コードで終了しました
  • 不明:KubernetesはPODのステータスを取得できません.
  • Kubernetesでポッドを再開するのは良い考えですか?


    PODは必要に応じて再起動する必要があります.例えば、PODへのリソース割り当てが定義されていない場合や、ソフトウェアが異常に動作した場合にのみ起動します.PODを正常に再起動するには、正しい詳細を渡して、十分なリソースやスペースを割り当てる必要があります.
    すべてのコンテナが終了したときに、podを実行することができます.この理由は、あなたのPODが予期しない終了/失敗のような問題のために終わることができないかもしれないか、コンテナ、ノード、またはそれぞれのマネージャサービスによって制御されることができないか、きれいにされるサービスであるかもしれません.
    要約すると、KubernetesのPODを再起動する必要があるかもしれないときに最も可能性の高いシナリオは以下に記載されていますが、K 8 sもこれらのシナリオのいずれかで自動的にPODを再起動しようとすることを覚えておいてください.
  • タイムアウト
  • 不適切な実装
  • 予期しないエラー
  • リソース割り当て要求を満たすための空き領域
  • さて、Kubernetes podを再起動する方法を理解するために、KARBENETESでPODがどのように作成されるかを理解する必要があります.

    Kubernetesでポッドの作成


    宣言的なアプローチを使用したり、Kubectlコマンドを使用して2つの方法でpodを作成できます.
    両方のメソッドがどのように動作するかを示します.

    宣言的アプローチによるPODの作成


    ファイルを作成するpod.yaml ペーストし、次のコードを貼り付けます.
    apiVersion: v1
    kind: Pod
    metadata:
     name: nginx
    spec:
     containers:
     - name: nginx
       image: nginx:alpine
       ports:
       - containerPort: 80
    
    これはnginxと呼ばれるpodを作成します:NGANX:アルパインDockerイメージとポート80を公開します.このポッドを作成するには、次のコマンドを実行します.
    kubectl apply -f pod.yaml
    
    PODは一般的には直接作成されず、展開や状態セットなどのワークロードリソースによって作成されます.

    Kubectlコマンドを使用したPODの作成


    以下のコマンドを実行します.
    kubectl run –image nginx:alpine –restart=Never
    
    このコマンドを実行することで、すべての実行中のポッドを見ることができます
    kubectl get pod
    

    Kubernetesにおけるpodの再起動


    PODがどのように作られているか知っているので、ここでKubernetesでポッドを再起動する方法があります.このセクションでは、4最も人気のあるメソッドをカバーします.
  • ポッドのレプリカカウントダウンとアップスケーリング
  • これはあなたのポッドレプリカをゼロにスケーリングして、非ゼロ数までそれらをスケーリングします.
    最初に、展開を作成する必要があります.
    “deploy . yaml”というファイルを作成し、次のコードを貼り付けます.
    apiVersion: apps/v1
    kind: Deployment
    metadata:
     name: myapp
    spec:
     selector:
       matchLabels:
         app: myapp
     template:
       metadata:
         labels:
           app: myapp
       spec:
         containers:
         - name: myapp
           image: nginx
           ports:
           - containerPort: 80
    
    次のコマンドでそれを適用します.
    kubectl apply -f deployment.yaml
    
    クラスタをチェックするときは、新しいpodを実行してください.
    さて、レプリカをゼロまで縮小しましょう.コマンドを実行する
    `kubectl scale deployment myapp -–replicas=0`.
    
    あなたがKubernetesポッドを止める方法を知っているならば、あなたは若干の点でこの命令を使用しなければなりませんでした.
    クラスタを再度チェックするとき、あなたはそのpodがなくなるのを見つけるべきです.今、レプリカをバックアップスケール.
    最も簡単な方法で、我々は他の方法に詳しく調査します.
    また、kubectl rollout restart コマンドは、我々のポッドを再開する.これを達成する方法があります.
  • ロールアウトによるポッドの再起動
  • 端末でコマンドを実行します.
    kubectl rollout restart deployment myapp
    
    このコマンドが実行されると、Kubernetesは全体的にいくつかのコンテナを操作しながらあなたのポッドを体系的に終了し、置き換えます.このメソッドは、再起動時にトラフィックを維持したい場合に有効です.
  • 注釈の更新
  • ポッドの注釈を変更したり、新しいものを追加するには、podを強制的に再起動します.どんな変化が起こるとき、Kubernetesはポッドを交換する必要があるので、このメソッドはあなたが多くの困難なしでポッドを再開するのを援助することができます.POD SpecフィールドRestartPolicyが決してセットされないならば、これが真実でない点に注意してください.
    たとえば、“test pod”という名前のpodに対して“keykeys 1”を作成したり変更したりできます.このフラグは既存のパラメータの値を変更させますが、それなしではあなたのPODに新しい注釈を追加することができます.
    kubectl annotate pods test-pod key_1="2" --overwrite
    
  • 削除
  • 再起動が失敗したとわかるならば、あなたはKubernetesでポッドを削除する方法に興味があるかもしれません.もしそうならば、このメソッドもあなたがpodを再開始するのを援助することができます.
    ポッドを再起動するには、単に既存の無反応ポッドを削除することができますし、新しいものに置き換えられます.使用するコマンドは-
    kubectl delete pod my-pod
    

    Kubernetesクラスタを管理するためのConvoxの使用


    私たちは、上記の方法が非常にユーザーフレンドリーでないかもしれないことを認めなければなりません--特にあなたがKubernetesに新しくて、あなたのアプリケーション開発プロセスをさらに複雑にすることを心配するならば.また、時にはリソースを追加したり、より良いパフォーマンスを確保するために別の場所にあなたのポッドを移行する必要があります.
    あなたが大幅にあなたの全体のアプリケーション開発プロセスを簡素化するために探しているなら、あなたの最高の賭けは、あなたのKubernetesクラスタを管理するのに役立つユーザーフレンドリーなGUIで、プラットフォーム- AS - Aサービス(PAAS)に切り替えることです.
    Convox たとえば、あなたの組織direct Kubernetes access そして、あなたのKubernetesクラスタを直接管理して、動かす複雑さを取り除きます.さらに、ConvoxはDigitalocean、AWS、Google雲、およびマイクロソフトAzureを含むいくつかのクラウドサービスプロバイダと互換性を持つマルチクラウド製品です.それは無料であなたのアプリケーション開発プロセスを簡単にconvoxonly takes a few clicks 始める.
    優れたアップタイムと驚くべきスケーラビリティを除いて、Convoxはあなたのポッドのために滑らかな開発経験と強力な基盤を届けます.

    結論


    Kubernetesでは、PODはタスクが完了するまで実行され、別の展開に置き換えられます.したがって、このコンテナのオーケストレーションプラットフォームを使用する場合は、直接コマンドまたはPODを再起動する方法はありません.しかし、望ましくない、ストレスの多い状況(人生において、または、Kubernetesと直接働くとき)を避けることが常に可能でないので、事態がうまくいかないならば、行動の実行可能な計画を持つことは重要です.
    あなたの計画は、このガイドは便利でアクセス可能な維持するかどうか、またはそれが計画に失敗しないように、すべてのあなたのKubernetesクラスタの管理を簡素化することですコンボックスに切り替えることができます!
    要約すると、ダウンタイムとダウンロードせずにあなたのポッドを再起動することができます.Oy Youを使用すると、ダウンタイムを取ることができますが、podを削除することはできませんレプリカスケーリングまたは注釈修正メソッドを使用できます.また、ポッドの余分なレプリカを使用する場合は、ロールバックまたは削除メソッドを使用します.それはダウンタイムを保証します.それともsign up to Convox そして、一度とすべてのすべてを簡素化します.