Kubernetes / 8.Podコントローラ-DaemonSet

ポッドコントローラ-DaemonSet

:このセクションでは、第二のコントローラもたらしDaemonSet説明するために。
あなたは学ぶでしょう:何であるDaemonSet、と彼の戦闘の設定、I固有名詞の汚れや寛容に最終的にリード、すでに基盤を持っている場合、あなたは選択の章を読むことを直接行くことができます(個人参照) 。

  • DaemonSetは何ですか?
  • 補足命令
  • 実際の構成
  • 知識サプリメント
  • リマーク

DaemonSetは1.Whatありますか?

DaemonSet規則に従うは、各ことを保証することであるnodeノードと唯一Podのコントローラ。あなたは以下の点に注意してください。

  • 1.新しいノードは、クラスタが追加されます合流しますPod
  • ポッドに対応する2ノードをオフラインで回収します

2.コマンドサプリメント

#可以使用kubectl get ds查看DaemonSet
[root@centos-1 mainfasts]#        kubectl get ds -A
NAMESPACE     NAME                      DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR                 AGE
kube-system   kube-flannel-ds-amd64     3         3         3       3            3           <none>                        4d1h
kube-system   kube-flannel-ds-arm       0         0         0       0            0           <none>                        4d1h
kube-system   kube-flannel-ds-arm64     0         0         0       0            0           <none>                        4d1h
kube-system   kube-flannel-ds-ppc64le   0         0         0       0            0           <none>                        4d1h
kube-system   kube-flannel-ds-s390x     0         0         0       0            0           <none>                        4d1h
kube-system   kube-proxy                3         3         3       3            3           beta.kubernetes.io/os=linux   4d1h

3.実際の構成

1)を編集しfilebeat-daemonset.yaml、我々が作成した、filebeatdaemonset日常のニーズを、各クライアントノードのノードにおけるfilebeat pod`コンテナを展開したいと思います。あなたは、に注意を払う必要があります。

logcollecting:ここでは、セレクタノードを使用して「オン」、デフォルトのノードは、このラベルではありません!

apiVersion: apps/v1
kind: DaemonSet
metadata:
name: filebeat-ds
labels:
app: filebeat
spec:
selector:
matchLabels:
app: filebeat
template:
metadata:
labels:
app: filebeat
spec:
containers:
- name: filebeat
image:  prima/filebeat:6.4.2
env:
- name: REDIS_HOST
value: db.ikubernetes.is:6379
- name: LOG_LEVEL
value: info
nodeSelector:                       #节点选择器
logcollecting: "on"               #自定义标签          

2)を使用するapply -fローディングyaml、観察。カスタムラベルの定義は、何の対応がないので、見つけることができるnodeノードは、pod一世代ではありません!

[root@centos-1 mainfasts]# kubectl apply -f filebeat-daemonset.yaml  
daemonset.apps/filebeat-ds created

[root@centos-1 mainfasts]# kubectl get pod
NAME                     READY   STATUS    RESTARTS   AGE
ngx-new-cb79d555-gqwf8   1/1     Running   0          29h
ngx-new-cb79d555-hcdr9   1/1     Running   0          30h

[root@centos-1 mainfasts]# kubectl get ds
NAME          DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR      AGE
filebeat-ds   0         0         0       0            0           logcollecting=on   8s

3)次に、我々がしようとnode01対応するラベルが付いたノードたpodノードにすでに始まっスケジューリング対応を

[root@centos-1 mainfasts]# kubectl label node centos-2.shared logcollecting="on" --overwrite
node/centos-2.shared labeled

[root@centos-1 mainfasts]# kubectl get pod
NAME                     READY   STATUS             RESTARTS   AGE
filebeat-ds-dlxwn        0/1     CrashLoopBackOff   1          5s
ngx-new-cb79d555-gqwf8   1/1     Running            0          29h
ngx-new-cb79d555-hcdr9   1/1     Running            0          30h

[root@centos-1 mainfasts]# kubectl get node --show-labels
NAME              STATUS   ROLES    AGE   VERSION   LABELS
centos-1.shared   Ready    master   4d    v1.16.3   beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=centos-1.shared,kubernetes.io/os=linux,node-role.kubernetes.io/master=
centos-2.shared   Ready    <none>   4d    v1.16.3   beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=centos-2.shared,kubernetes.io/os=linux,logcollceting=true,logcollecting=on
centos-3.shared   Ready    <none>   4d    v1.16.3   beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=centos-3.shared,kubernetes.io/os=linux

4)タグを削除するには、次のコマンドを使用することができます

 kubectl label node centos-2.shared logcollceting-

4.補足知識

ノード汚染された、スケジューリング戦略に影響を与えるだろう、私は染色と寛容は、詳細セクションで説明します。

[root@centos-1 mainfasts]# kubectl describe node centos-1.shared
Name:               centos-1.shared
Roles:              master
Labels:             beta.kubernetes.io/arch=amd64
                    beta.kubernetes.io/os=linux
                    kubernetes.io/arch=amd64
                    kubernetes.io/hostname=centos-1.shared
                    kubernetes.io/os=linux
                    node-role.kubernetes.io/master=
Annotations:        flannel.alpha.coreos.com/backend-data: {"VtepMAC":"6a:82:c9:37:15:dd"}
                    flannel.alpha.coreos.com/backend-type: vxlan
                    flannel.alpha.coreos.com/kube-subnet-manager: true
                    flannel.alpha.coreos.com/public-ip: 192.168.0.104
                    kubeadm.alpha.kubernetes.io/cri-socket: /var/run/dockershim.sock
                    node.alpha.kubernetes.io/ttl: 0
                    volumes.kubernetes.io/controller-managed-attach-detach: true
CreationTimestamp:  Mon, 25 Nov 2019 17:00:45 +0800
Taints:             node-role.kubernetes.io/master:NoSchedule.          #污点,pod调度的高级功能,容忍度:不允许调度至master节点

5.備考

この記事のサイトは、私の中に位置していますGithubに、私はあなたに有益な場合、プロセスの大規模およびネイティブクラウド技術の知識と実践的な操作で共有するように設計、すべてのトピックは、ドッキングウィンドウ、K8S、CEPH、istioとプロメテウス含め、来る更新していきます、続くスターと私のgithubのを転送し、これは私の更新電力共有、外出先で、あなたに感謝してください〜

おすすめ

転載: blog.51cto.com/qishiding/2464284