狠狠撸

狠狠撸Share a Scribd company logo
Kubernetes Meetup Tokyo #16 LT
1
2019 3/18
Shuntaro Saiba
kube-system 落としてみました
本日お伝えしたいこと
● kube-system 意識していますか? (私は意識してませんでした)
● kube-dns が死んだりすると、サービス停止しちゃいます (経験談)
● せっかくなのでkube-systemをそれぞれ落として、
影響を調べてみました。 (反省を兼ねて)
● 今回はGKEで試しています
2
@tarosaiba
● Future Architect, Inc
● Technology Innovation Group
● Infra - MW - CI 周りやってきました
● エンプラでAWS/ 最近はGCP
Shuntaro Saiba
3
4
使った環境
Microservices
Kubernetes Engine
Nodes
● GKE を 3Nodeで立てました。(defaultのaddonをすべて有効)
○ version : GKE 1.11.7-gke.4
5
使った環境
● Kubernetesのサンプルアプリ “guestbook” をデプロイ
https://cloud.google.com/kubernetes-engine/docs/tutorials/guestbook
    今回見るもの
6
7
# Get kube-system pods
> kubectl get pods --namespace=kube-system
NAME READY STATUS RESTARTS AGE
event-exporter-v0.2.3-85644fcdf-bzddn 2/2 Running 0 3h
fluentd-gcp-scaler-8b674f786-9tp2z 1/1 Running 0 3h
fluentd-gcp-v3.2.0-6gq6r 2/2 Running 0 3h
fluentd-gcp-v3.2.0-8h5hp 2/2 Running 0 3h
fluentd-gcp-v3.2.0-pb44f 2/2 Running 0 2h
heapster-v1.6.0-beta.1-74f4bbc55c-52khj 3/3 Running 0 3h
kube-dns-7df4cb66cb-9ft98 4/4 Running 0 3h
kube-dns-7df4cb66cb-wvhpz 4/4 Running 0 2m
kube-dns-autoscaler-67c97c87fb-xgrx6 1/1 Running 0 3h
kube-proxy-gke-demo-default-pool-0dacde9e-dvbd 1/1 Running 0 3h
kube-proxy-gke-demo-default-pool-0dacde9e-gc4m 1/1 Running 0 3h
kube-proxy-gke-demo-default-pool-0dacde9e-lr6s 1/1 Running 0 2h
l7-default-backend-7ff48cffd7-vfmxz 1/1 Running 0 3h
metrics-server-v0.2.1-fd596d746-xz8s2 2/2 Running 0 3h
namespaceに”kube-system” を指定
k8sを支える 登場人物 (おさらい)
8
kube-apiserver
etcd
kube-controller
manager
kube-scheduler
kubelet
kube-proxy
container runtime
...
...
MasterNode
GCP
Managed
Our
Project
kubelet
kube-dns
k8sを支える 登場人物 (おさらい)
9
kube-apiserver
etcd
kube-controller
manager
kube-scheduler
kubelet
kube-proxy
container runtime
...
...
MasterNode
GCP
Managed
kubelet
kube-dns
k8sを支える 登場人物 (おさらい)
10
kube-apiserver
etcd
kube-controller
manager
kube-scheduler
kubelet
kube-proxy
container runtime
...
...
MasterNode
GCP
Managed
Our
Project
kubelet
kube-dns
k8sを支える 登場人物 (おさらい)
11
kube-apiserver
etcd
kube-controller
manager
kube-scheduler
kubelet
kube-proxy
container runtime
...
...
MasterNode
GCP
Managed
Our
Project
kubelet
kube-dns
ちゃんと意識できてなかった (反省)
12
Name 役割
kube-apiserver
● k8sのリソースの操作を行うための
Kubernetes API を提供
etcd
● 分散 Key-Value Store
● k8sクラスタの情報を保存
kube-scheduler ● 各Nodeの状態を見て、Podの割当を行うスケジューラ
kube-controller-manager
● 各コントローラーを実行する
● (例: Replica SetのPod数を監視して、Podの登録を行ったり)
    ???  他
GCP Managed
GCPマネージドでよろしくに
Name Type 数 役割
kubelet systemd 3 ● kube-apiserverと連携、コンテナ起動をする
kube-proxy-* 単体 Pod 3 ● NWトラフィックを管理
kube-dns Deployment 2 ● クラスタ内のDNS
kube-dns-autoscaler Deployment 1 ● kube-dnsのスケーリングを行う
fluentd-gcp-v* DaemonSet 3 ● Stackdriver LoggingにContainerのログを送っている
fluentd-gcp-scaler Deployment 1 ● fluentdのスケーリングを行う
event-exporter-v* Deployment 1 ● Stackdriver Loggingにkube-apiserverのログを送っている
metrics-server-v** Deployment 1 ● HPA用にメトリクスを提供
heapster-v** Deployment 1 ● Stackdriver Monitoringにメトリクスを送信
13
Our Project ※ GKE 1.11.7-gke.4 の Node=3台 の場合
※ l7-default-backend は今回省略
Our Project ※ GKE 1.11.7-gke.4 の Node=3台 の場合
※ l7-default-backend は今回省略
Name Type 数 役割
kubelet systemd 3 ● kube-apiserverと連携、コンテナ起動をする
kube-proxy-* 単体 Pod 3 ● NWトラフィックを管理
kube-dns Deployment 2 ● クラスタ内のDNS
kube-dns-autoscaler Deployment 1 ● kube-dnsのスケーリングを行う
fluentd-gcp-v* DaemonSet 3 ● Stackdriver LoggingにContainerのログを送っている
fluentd-gcp-scaler Deployment 1 ● fluentdのスケーリングを行う
event-exporter-v* Deployment 1 ● Stackdriver Loggingにkube-apiserverのログを送っている
metrics-server-v** Deployment 1 ● HPA用にメトリクスを提供
heapster-v** Deployment 1 ● Stackdriver Monitoringにメトリクスを送信
14
結構いろいろ動いてたんだ!
知らなかった。(反省)
使いようによっては、
落ちてしまうこともある..かも??
15
なので、ひとつずつ落として
影響を確認しました
16
17
Our Project
※ GKE 1.11.7-gke.4 の Node=3台 の場合
※ (はず) = 未確認 (障害再現&測定が難しかった)
Name Type 数 重要度 止めたときの挙動
kubelet systemd 3 ● サービスは稼働する が、Podの削除/起動が不可になった
kube-proxy-* Pod 3 ● 即時に復旧したので確認できなかったが、
コンテナ間通信が不可になる ?ためサービス障害になる (はず)
kube-dns Deployment 2 ● Service経由のAPP → DB の疎通不可。サービス障害発生
kube-dns-autoscaler Deployment 1 ● サービスに影響なし。 スケール操作は不可になる (はず)
fluentd-gcp-v* DaemonSet 3 ● サービスに影響なし。 ログが転送できなくなる
fluentd-gcp-scaler Deployment 1 ● サービスに影響なし。 スケール操作は不可になる (はず)
event-exporter-v* Deployment 1 ● サービスに影響なし。 イベントログが転送できなくなる (はず)
metrics-server-v** Deployment 1 ● サービスに影響なし。 HPAが機能しない (はず)
heapster-v** Deployment 1 ● サービスに影響なし。 メトリクスが転送できなくなる (はず)
18
Our Project
※ GKE 1.11.7-gke.4 の Node=3台 の場合
※ (はず) = 未確認 (障害再現&測定が難しかった)
Name Type 数 重要度 止めたときの挙動
kubelet systemd 3 ● サービスは稼働するが、 Podの削除/起動が不可になった
kube-proxy-* Pod 3 ● 即時に復旧したので確認できなかったが、
コンテナ間通信が不可になる ?ためサービス障害になる (はず)
kube-dns Deployment 2 ● Service経由のAPP → DB の疎通不可。サービス障害発生
kube-dns-autoscaler Deployment 1 ● サービスに影響なし。スケール操作は不可になる (はず)
fluentd-gcp-v* DaemonSet 3 ● サービスに影響なし。ログが転送できなくなる
fluentd-gcp-scaler Deployment 1 ● サービスに影響なし。スケール操作は不可になる (はず)
event-exporter-v* Deployment 1 ● サービスに影響なし。イベントログが転送できなくなる (はず)
metrics-server-v** Deployment 1 ● サービスに影響なし。 HPAが機能しない (はず)
heapster-v** Deployment 1 ● サービスに影響なし。メトリクスが転送できなくなる (はず)
個人的、気を付けようポイント
DNSサーバが動いているの
意識してなかった。(反省)
kube-system
Node で動いているやつ
19
kubelet
kube-proxy
container runtime
Node
kube-apiserver
default
APP-BAPP-A
GCP Service
kubernetes Master
Namespaces
heapstar
event
exportermetrics
server
Monitoring API
Logging API
HPA
落ちてもサービス影響なし
落ちるとサービス影響あり
Stackdriver
kube-system
Node で動いているやつ
20
kubelet
kube-proxy
container runtime
Node
kube-dns
kube-apiserver
autoscaler
fluentd-gcp
autoscaler
default
APP-BAPP-A
GCP Service
kubernetes Master
Namespaces
Monitoring API
Logging API
Stackdriver
落ちてもサービス影響なし
落ちるとサービス影響あり
kube-system
Node で動いているやつ
21
kubelet
kube-proxy
container runtime
Node
kube-dns
kube-apiserver
autoscaler
fluentd-gcp
autoscaler
default
APP-BAPP-A
GCP Service
kubernetes Master
Namespaces
Monitoring API
Logging API
Stackdriver名前解決ができなくなる
落ちてもサービス影響なし
落ちるとサービス影響あり
● kube-systemのDeployment, Daemonsetをdeleteしても、
addon-manager がリソースごと勝手に復活させるんですね。
○ (kubectl delete deploymentを連打して、障害を再現しました汗)
おまけ-気がついたこと
22
● kube-systemの障害めったに起きないだろうが、意識は必要と実感
○ 特にkube-dns
○ ちなみにkube-dnsは2台以上で冗長化されているが..でも..
● 仕組みはちゃんと理解しておかないといけないなと実感
○ なんにでも言えることですが..
○ k8s半年近く使っていたが、今回調べて初めてわかったことがたくさん
○ まだまだ勉強不足なので、これからちゃんと調べます。
まとめ
23
ありがとうございました
24
GCP(GKE) x エンプラ
エンジニア絶賛募集中です

More Related Content

办耻产别-蝉测蝉迟别尘落としてみました