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

Kubernetesは怖くない!開発者のためのインフラトラブルシューティング入門

aoi
February 15, 2024

 Kubernetesは怖くない!開発者のためのインフラトラブルシューティング入門

Kubernetesが導入される企業が徐々に増える中で、「これまでインフラレイヤに触ったことがないのにKubernetesを触る必要が出てきた」という開発者の方もいるのではないかと思います。そういった方にむけて「Kubernetesとはなにか」からはじまり、Kubernetesに乗せたアプリケーションが動かなくなって困ったときのトラブルシューティング方法を紹介するスライドです。
残念ながら資料内で動画を再生することができないためターミナル画面の画像のみになっているスライドがあります。

aoi

February 15, 2024
Tweet

More Decks by aoi

Other Decks in Technology

Transcript

  1. 近々Kubernetesのトラブルシューティング 本を翔泳社から出します!お楽しみに! https://www.amazon.co.jp/dp/ 4 7 9 8 1 8 3

    9 6 2 Ϋόωςε 入門 ͭ͘ ͬͯɺ ͯ͠ɺ ͯ͠ Ϳ յ ௚ 学 ߴڮ͓͍͋ஶ ޒेཛྷҁ؂म Kubernetes ๛෋ͳϚϯΨͱ Π ϥε τͰ ͸͡ΊͯͰ΋ ݟͯΘ͔Δ ʂ ͭ ͘ ỳ ͯ ỏ ɹ  ͠ ͯ ỏ ɹ  ͠ ͯ ֶ Ϳ ೖ ໳ ௚ ߴ ڮ ͋ ͓ ͍  ஶ ޒ े ཛྷ  ҁ  ؂ म Kubernetes Ϋόωςε յ ,VCFSOFUFTΫϥελΛͭ͘ ͬͯɺ յ͢ ؆୯ϞχλϦϯά༻γεςϜΛͭ͘ Δ 00.LJMMFEΛൃੜͤͯ͞ɺ ௚͢ LVCFDUM Ͱσόοά͢Δ...and more! ಈ ͔ ͳ ͘ ͯ ΋ ỏ ΋ ͏ ා ͘ ͳ ͍ τ ϥ ϒ ϧ γ ỿ ồ ς ỹ ϯ ά Λ ମ ݧ ͠ ͳ ͕ Β ֶ Ϳ ࣮ ફ త ೖ ໳ ॻ Ố
  2. Kubernetesとは ๏open-source system for automating deployment, scaling, and management of

    containerized applications.※ ๏コンテナ化されたアプリケーションのデプロイ、スケーリング、お よび管理を 自 動化するためのオープンソースシステム ※Kubernetes公式サイトより引 用 (https://kubernetes.io/)
  3. Kubernetesの特徴 1 . 障害発 生 時に、各コンテナの設定 ・ 復旧を簡単にする 2 .

    コンテナの仕様の管理を簡単にする 3 . 複数台のサーバを利 用 してコンテナを起動したいとき、最適な起動 先を決定を簡単にする
  4. 3. 複数台のサーバを利 用 してコンテナを起動したいとき、 最適な起動先の決定を簡単にする ๏KubernetesのAPIで抽象化されており、サーバー固有の設定を知る 必要がない ๏コンテナを起動するマシンについての   情報は書く必要がない

    apiVersion: v1 kind: Pod metadata: name: nginx spec: containers: - name: nginx image: nginx:1.24.0 ports: - containerPort: 80 resources: requests: memory: 100Mi コンテナイメージを指定する だけ Podというリソースを 使ってコンテナを起動
  5. Kubernetesのログ ๏Kubernetesのコンテナのログはkubectlというツールを使うことで 見 ることができる • kubectlで全てのコンテナのログが 見 れる ๏ただしkubectlで 見

    れるログは永久保存ではない • 永久保存するための転送先は環境それぞれなので、転送先のログの 見方 は覚える必要がある
  6. これだけ覚えて帰ってください ๏kubectl get <リソース名> • リソースの情報を取得するコマンド ๏kubectl describe <リソース名> •

    リソースの詳細を表 示 するコマンド ๏kubectl logs <Pod名> • ログを取得するコマンド 困ったらchatGPTに聞こう! リソースとは Kubenetesで扱う オブジェクトのこと
  7. 実際にはより複雑な問題であるケースの 方 が多い ๏しかも 自 分たちで書いたコードではないことが多い • デバッグ 用 のコードを

    入 れ込めない ๏kubectlでできることは限りがあるので、あらかじめ情報を取得して おくことが鍵となる • ログがローテートされてしまう、Eventsがローテートされてしまう etc … ๏「オブザーバビリティ(可観測性)」を向上させよう
  8. ローカルでKubernetesクラスタをつくろう ๏kindを使おう • https://kind.sigs.k 8 s.io/ • macOS: brew install

    kind • goがインストールされていれば:go install sigs.k 8 s.io/kind@v 0 . 2 0 . 0
  9. kubectlでよくハマる罠 ๏--namespaceでnamespaceを指定していない • kubectl get podしても 見 つからない→実は違うnamespaceにありまし た •

    —namespaceを指定しないとcon fi gで設定されているデフォルトの namespace内のリソースしか探しません