Upgrade to Pro — share decks privately, control downloads, hide ads and more …

気をつけたいKubernetesとの付き合い方 / Happy Kubernetes Life

go_vargo
December 10, 2020

気をつけたいKubernetesとの付き合い方 / Happy Kubernetes Life

go_vargo

December 10, 2020
Tweet

More Decks by go_vargo

Other Decks in Programming

Transcript

  1. 今日の発表 • Kubernetesは分散システムかつ分散コンポーネントで複雑 ◦ Event Driven, Asynchronous • そんなKubernetesと触れ合う上で、気をつけたいことを徒然 なるままに書きました

    • KubernetesをWebアプリケーション基盤として使っているパ ターンで考えています • Production Ready観点ではないので、ご注意ください • すべて個人の見解です
  2. Agenda • 気をつけよう! スケジューリング • 気をつけよう! オートスケール • 気をつけよう! DNS

    • 気をつけよう! モニタリング • 知っておこう! トラブルシューティング • まとめ
  3. スケジューリングの要素分解 • 複数のNode (+NodePool, NodeGroup) • Resources/Limits • Qos Class

    • NodeSelector • Taints/Tolerations • Affinity • Auto Scaler • PriorityClassによるPreemption
  4. スケジューリングの要素分解 • 複数のNode (+NodePool, NodeGroup) • Resources/Limits • Qos Class

    • NodeSelector • Taints/Tolerations • Affinity • Auto Scaler • PriorityClassによるPreemption
  5. PriorityClassによるPreemption apiVersion: scheduling.k8s.io/v1 kind: PriorityClass metadata: name: system-cluster-critical value: 2000000000

    description: Used for system critical pods system-cluster-critical priority: 2000000000 priority: 0 Preemption = Pod Delete 容量一杯のNode Autoscalerによる スケジューリング
  6. resolv.conf - ClusterFirst 複数のsearch domains と ndots: 5が設定される 問い合わせ名が「ドット数 <

    ndots:5 」だとsearch domainと組み合わせて 問い合わせする nameserver 10.96.0.10 search <NS>.svc.cluster.local svc.cluster.local cluster.local options ndots:5 /etc/resolv.conf ※Kubernetesの種類によって微妙に違う。これはMinikube 例: Service「nginx-service」 nginx-service nginx-service.cluster.local nginx-service.svc.cluster.local nginx-service.<NS>.svc.cluster.local ※ 実際はsearchの先頭から試行する
  7. resolv.conf - ClusterFirst 例: Service「nginx-service」 nginx-service nginx-service.cluster.local nginx-service.svc.cluster.local nginx-service.<NS>.svc.cluster.local A(IPv4)/AAAA(IPv6)

    A(IPv4)/AAAA(IPv6) A(IPv4)/AAAA(IPv6) A(IPv4)/AAAA(IPv6) ここにIPv4/IPv6のクエリが加わるので、FQDNでなかったりAbsolute Domain Name でないと、DNSに対して余分なクエリを発行してしまう nginx-service.default.svc.cluster.local nginx-service.default.svc.cluster.local. Absolute Domain Name FQDN but not Absolute 末尾にドット(.)あり
  8. DNSの注意点 ※一部のみ • Kubernetes上で、名前解決をするときは余分なクエリが発行されないよ うに、Absolute Domain Nameで書くようにする • 大規模だったり高負荷なシステムの場合は、Node Local

    DNS Cacheの有 効化も考える ◦ https://kubernetes.io/ja/docs/tasks/administer-cluster/nodel ocaldns/ It’s not DNS. There’s no way it’s DNS. It was DNS. ~ It’s always DNS ~
  9. SSH & journalctl $ ssh worker-XX $ systemctl status kubelet

    # kubeletのログチェック $ journalctl -u kubelet 引用: https://kubernetes.io/ja/docs/concepts/overview/components/