"Exists"」Tolerations特例「effect指定なし」NoExecuteとtolerationSeconds最後にk8sスケジューリングの方法k8sでは、Podのスケーリングは以下の2つの方法で行います。特徴:Nodeにも選択権を持てるTaintsとTolerationsTaintsとTolerationsについて、公式ドキュメントでは、以下のように説明しています。taints.簡単にイメージすると:Nodeにロック(Taints)を付けるPodに鍵(Tolerations)を渡す鍵が正しいPodのみがNodeにスケジューリングできるそのため、Taintsを持っているNodeは、正しいTolerationsを持っているPodしかスケジューリングされないです。Affinityはスケジューリング時にのみ作用するに対して、TaintsとTolerationsは随時適用されます。スケジューリング済みのPodでも、随時TaintsとTolerationsをチェックし、Podのスケジューリングを動的に実施されます。TaintsとTolerationsの情報構成TaintsとTolerationsは以下の情報で構成されています。<Key>=<Value>:<Effect>=:TaintsはKey-Value形式のデータ:TaintsとTolerationsがマッチしない時の挙動<Effect>は以下の3種類がありますPreferNoSchedule:可能な限りスケジューリングしないNoSchedule:スケジューリングしない(スケジューリング済みのPodはそのままにする)スケジューリング時のみ考慮すればいいNoExecute:スケジューリング許可しない(スケジューリング済みのPodは追い出される)スケジューリング後も、影響を与えられる追い出すタイミングはPodのspec.terminationGracePeriodSecondsでコントロールできる※注意:スケジューリング時の動作はTaintsのに従います。Tolerationsと関係ありません。NodeへTaintsの付与と削除KubernetesのNodeはmanifestで定義するものではないため、Taintsの付与はkubectlコマンドで実施します。<nodeName>複数Taintsを持つNodeNodeが複数Taintsを持っている場合、PodのTolerationsがすべてNodeのTaintsにマッチする場合のみ、スケジューリングされます。Taintsの応用Taintsはよく障害時Podの自動退避手段として使用されます。GKEの場合、Nodeの状態に応じて、リアルタイムでNodeにNoExecuteのTaintsが付けられます。cordonを実施したNodeにnode.kubernetes.io/unschedulable:NoScheduleのTaintsがリアルタイムで付けられます。PodのTolerationsPodのspec.tolerations[]で、Tolerationsを設定することが可能です。Tolerationsの設定では、以下のoperator(演算子)が使えます。"NoExecute"TaintsとTolerations判断PodのTolerationsとNodeのTaintsのマッチ判断は、公式情報で以下のように述べています。equal.即ち、スケジューリングされる条件は以下です。この条件は万能キーになる、どのNodeでもスケジューリング可能Tolerations特例「effect指定なし」Tolerationsにeffect指定しない場合、Taintsと同じと判断されます。NoExecuteとtolerationSecondsTolerationsのEffectが"NoExecute"の場合のみ、TolerationsとTaintsがマッチしても、一定時間しか稼働させない設定ができます。指定時間を0やマイナス数値にする場合、即時追い出すようになります。TolerationsとTaintsがマッチしても、3000秒の稼働しか許容しないこの設定は、よくTaintsとTolerationsがマッチしても、NoExecuteの場合はPodを追い出すために使われます。(時間を0に設定)※即ち、どんなPodでも追い出すようにする。最後に今回の内容を理解するのに、結構手間がかかりました。できるだけ分かりやすく書いてみました。お役に立つと嬉しいです。ここまで読んでいただいて、お疲れ様でした。PersistentVolumeClaim(PVC)2回前提知識を挟んで、ようやくPersistentVolumeClaim(PVC)についての説明が開始できるようになりました。今回はPersistentVolumeClaim(PVC)について、説明していきましょう。Ingressはk8sクラスタにL7のロードバランシングなどの機能を提供します。一般的なkubernetesのPodのネットワークはクラスタ内部の仮想ネットワークで、外のNodeのネットワークと基本分離するような形です。コメントをキャンセルコメントを投稿するにはログインしてください。(インフラ)-----------------------------投稿する内容は自分の専門に関わるものが多いですが、たまに趣味で調べたものも投稿します。記事の内容はあくまで個人の見解となりますので、ご了承ください。(インフラ)-----------------------------投稿する内容は自分の専門に関わるものが多いですが、たまに趣味で調べたものも投稿します。記事の内容はあくまで個人の見解となりますので、ご了承ください。Serverメタ情報ログイン投稿フィードコメントフィードWordPress.org広告タイトルとURLをコピーしました。