K8S中DaemonSet

DaemonSet

すべて(または一部)にポッドのコピーを実行してくださいDaemonSetノード。ノードがクラスタに参加すると、彼らはのために1を追加します
ポッド。ノードをクラスタから削除された場合、ポッドが回収されます。それが作成するDaemonSetは、すべてのポッドを削除します削除
のいくつかの典型的な使用法DaemonSetを:

  • そのような各ノード上でglusterdを実行している、CEPHとして、クラスタストレージデーモンを実行します
  • 各ノード上で実行中のデーモンログを収集し、例えばfluentd、logstash
  • 各ノード操作監視デーモンに、例えばプロメテウスノード輸出、collectd、Datadog剤、新しい遺物剤、又は神経節gmond
[K8S-マスターMNT @ルート]#猫daemonset.yaml 
apiVersion:アプリケーション/ v1の
種類:DaemonSet 
メタデータ:
  名前:deamonset-例の
  ラベル:
    アプリ:daemonset 
スペック:
  セレクタ:
    matchLabels:
      名前:deamonset-例の
  テンプレート:
    メタデータ:
      ラベル:
        名前:deamonset-例
    仕様:
      コンテナ:
      -名前:daemonset-例の
        画像:wangyanglinux / myappの:V3 
[K8SマスターMNT @ルート]#

 

[K8S-マスターMNT @ルート]#vimのdaemonset.yaml 
[K8S-マスターMNT @ルート]#は-f daemonset.yaml作成kubectl 
作成daemonset.apps / deamonset-例を
[K8S-マスターMNT @ルート]#kubectl GETポッド-広いoを
NAME READY状況再起動AGE IPノードは準備GATESノミネート
1/1実行0 8S 10.244.2.21 K8S-node01 deamonset-例-tpdf8を    < なし>            < なし> 
0 8S 10.244.1.23実行deamonset-例えば、xxt2z 1/1 K8S-node02で    、< なし>            < なし> 
[K8S-マスターMNT @ルート]#カール10.244.2.21 
こんにちはMyAppの| バージョン:V3 |< HREF = "hostname.html" >ポッド名</ A > 
[ルート@ K8SマスターMNT]#kubectl削除deamonset-例-tpdf8の
エラー:リソース(単数または複数)が、提供されたがない名前、ラベルセレクタ、又は- -allフラグが指定された
#kubectl削除ポッドdeamonset-例-tpdf8 [K8S-マスターMNT @ルート]を
ポッド"deamonset-例-tpdf8は"削除
#kubectl GETポッド-oワイド[K8S-マスターMNT @ルート]を
NAME READYのステータスが再起動AGE IPノードは準備GATESノミネート
0 3S 10.244.2.22 K8S-node01実行deamonset-例-vdzjp 1/1    < なし> < なし>を           
0 107S 10.244.1.23 K8S-node02で実行deamonset-例-xxt2z 1/1    < なし>            < なし>を

削除した後、1を再作成します。

 指定されたノードのノード

DaemonSetは、指定したノードのノード上のポッドの実行を指定するには、2つの方法がありますunschedulable状態ノードを無視しました:

  • nodeSelector:ラベルに予定さは、指定されたノードと一致しました
  • nodeAffinity:そのようなセット操作のサポートなど、より機能豊富なノード選択、
  • 条件を満たしポッドをスケジュールするノード場所:podAffinity

nodeSelector例

最初のノードにタグ付けするには

kubectlラベルはdisktype = SSDノード01ノード

 

そしてnodeSelectorのdaemonsetがdisktype = SSDで指定します。

スペック:
  nodeSelector:
    disktype:SSD

 

nodeAffinity例

条件を表す、requiredDuringSchedulingIgnoredDuringExecutionとpreferredDuringSchedulingIgnoredDuringExecutionと好ましい条件を満たしている必要がありますnodeAffinityは現在、2をサポートしています。そのようなラベルとkubernetes.io/e2e-az-name値またはノードE2E-AZ1 E2E-AZ2、好ましくは、タグ別のノードラベルキー付き=別の、リンパ節転移を含むように、以下のスケジュールなどの代表的な例ノードのラベル値。

apiVersion:v1の
種類:ポッドの
メタデータ:
  名前:持つノード親和性
仕様:
  親和性:
    nodeAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
        nodeSelectorTerms:
        -のMatchExpressions:
          -キー:kubernetes.io/e2e-az-name 
            オペレーター:中
            値:
            - E2E-AZ1 
            - E2E-AZ2 
      preferredDuringSchedulingIgnoredDuringExecution:
      -重量:1 
        嗜好:
          のMatchExpressions:
          -キー:別のノードラベルキー
            で:演算子
            値: 
            -別のノードのラベル値
  コンテナ:
  -名前:持つノード親和性
    画像:gcr.io/google_containers/pause:2.0

 

podAffinity例

ポッドpodAffinityベースのラベルは、ノード、ノードのスケジューリングのみポッドの条件を満たし、かつpodAffinity podAntiAffinityをサポートするために選択しました。この関数は、次の例の一例として、比較的程度です。

  • 場合「ノードを含むゾーン内に配置された少なくとも1つのセキュリティ= S1とポッドとのタグの動作」は、ノードにスケジュールすることができます
  • ノード上で「少なくとも1つの標識を含むとセキュリティを備えた= S2ポッドの操作」を予定していません
apiVersion:V1の
種類:ポッドの
メタデータ:
  名前:と-ポッド親和性
仕様:
  親和性:
    podAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
      - labelSelector:
          のMatchExpressions:
          -キー:セキュリティ
            オペレーター:中
            値:
            - S1 
        topologyKey:failure-domain.beta.kubernetes.io /ゾーン
    podAntiAffinity:
      preferredDuringSchedulingIgnoredDuringExecution:
      -重量:100 
        podAffinityTerm:
          labelSelector:
            のMatchExpressions: 
            -キー:セキュリティ
              演算子:で
              値:
              - S2 
          topologyKey:kubernetes.io/hostnameの
  コンテナ:
  -名前:と-ポッド親和性
    画像:gcr.io/google_containers/pause:2.0

静的ポッド

DaemonSetに加えて、あなたはまた、起動時にkubeletマニフェスト指定されたディレクトリを必要とポッド、で指定された各マシン上で実行するために、静的なポッドを使用することができます。

kubelet --pod-マニフェストパス= /など/ kubernetes /マニフェスト

次に、マニフェストで指定されたディレクトリにポッド定義ファイルを必要な。

注:静的ポッドAPIサーバーを削除することはできませんが、自動的に対応するポッドマニフェストファイルを削除することにより削除することができます。

おすすめ

転載: www.cnblogs.com/dalianpai/p/12088118.html