Pod


Pod


クバーネディスのフローティングアプリケーションで最小のデフォルト単位

Pod構造


K 8 sはコンテナ管理ツールなので、すべてのアプリケーションがコンテナで実行されます.クバーネディスの基本単位はポンドで、1ポンドに複数の容器を含めることができます.なぜクバーネディスはコンテナを直接操作するのではなく、パードという単位を作って管理しているのだろうか.
コンテナの目的はプロセスを回転させることです.したがって、コンテナにはsystemdのようなプロセスマネージャはありません(もちろんインストールで作成することもできます).したがって、複数のアプリケーションをコンテナに移行する場合、コンテナで実行されるすべてのアプリケーションの管理はユーザーの責任です.したがって、コンテナ単位で管理されると、コンテナ内で複数のアプリケーションが実行される場合があり、これらのアプリケーションを直接管理することはできません.
シード単位で管理するメリットはたくさんあります.通常、各パーティションにはコンテナがありますが、前述したように、1つのコンテナに複数のアプリケーションを入れるよりも、各コンテナで複数のアプリケーションを実行し、これらのコンテナを1つのパーティションとして管理します.通常、これらのアプリケーションは、1つのパーティションでディレクトリを共有したり、ネットワークを共有したりすることができるため、コンテナに含まれるように相互にアクセスできます.
シードに複数のコンテナを挿入する場合は、主にこれらのコンテナが同じホスト上で動作すべきか否かによって判断される.

Pod Network


元のコンテナはLinuxネーミングスペースによって完全に分離されています.ただし,pard内のコンテナは同じLinuxネーミングスペースを共有するため,IPとポートスペースを共有する.これは、シードライブラリ内のコンテナが異なるlocalhostでアクセスできることを意味し、他のコンテナで使用されるポート番号は他のコンテナでは使用できません.
コンテナの実行時によって異なりますが、最も一般的なドッキングステーションでは、ドッキングステーションのコンテナに同じLinuxネーミングスペースを共有させることがコンテナを一時停止します.

Pause Container


ドックベースのクバーネディスを取り付けると、/pause命令で始まるコンテナがたくさん見えます.これは非常に重要なコンテナであるため,種子コンテナに同じLinuxネーミング空間を共有させることができる.
他にもゾンビを取り込むキャラクターがいます.pauseコンテナはPIDネームスペースも共有します.これはpauseコンテナがpadeでInit Processとして機能することを意味し、pauseコンテナが親プロセスになることを意味します.これにより、他のコンテナにゾンビプロセスが発生しても、コンテナを一時停止すると、そのプロセスがサブプロセスに継承され、ゾンビプロセスを受け取る効果が得られます.

Liveness Probe


アプリケーションエラーでコンテナが死亡した場合、kubeletはそれに気づき、コンテナを再起動します.しかし、アプリケーションが無限ループに陥ってエラーが発生しなかったが、正常に動作しなかった場合、kubeletもこれを検出できない.liveness probeはkubeletにこのような状況を認識させる手段である.
プローブには、HTTP、TCP、Execの3つの方法があります.Webサーバでは、主にHTTPプローブを使用します.
apiVersion: v1
kind: Pod
metadata:
  labels:
    test: liveness
  name: liveness-http
spec:
  containers:
  - name: liveness
    image: k8s.gcr.io/liveness
    args:
    - /server
    livenessProbe:
      httpGet:
        path: /healthz
        port: 8080
      initialDelaySeconds: 3
      periodSeconds: 3
Webサーバを実装する場合、/healtz uriに200個の応答を送信し、上記のプローブが追加されたパラメータを解放することができ、Webサーバが機能エラーで要求を受信できない場合、kubeletはこれを検出し、コンテナを強制的に閉じた後に再起動する.
  • 注意事項
  • アプリケーションの内部のみを確認し、外部要因の影響を受けません.たとえば、フロントエンドでdb接続に失敗したプローブが設定される場合があります.これはフロントエンドの問題ではなくdbの問題かもしれないからです.
  • 1秒以内に完成させ、できるだけ軽くしたほうがいいです.重すぎるとコンテナの性能が低下します.
  • yamlはプローブの複数のオプションを提供するため、プローブ自体は論理を再試行する必要はありません.
  • Reference


    159.[Kubernetes]Pauseコンテナの役割と原理(原文:TheAlwidgePause Container)
    [翻訳]クボニスネットワーク#1:Podsの理解