Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥

Kubernetes再入門 - K8s活用するならこれだけは知っておきたいこと -

Kubernetes再入門 - K8s活用するならこれだけは知っておきたいこと -

コンテナを利用したシステムでKubernetesを使用することが非常に多くなっています。しかし、他のシステムでも使ってたから使っている、標準だから使っているという人も少なくないと思います。

今回の勉強会では、そのような方に向けて、Kubernetesを使用する理由はなんなのか、どのような機能があるのか、どのような仕組みなのかといったKubernetes活用の土台となる部分を解説したいと思います。今までなんとなくで使っていたレベルからステップアップして、Kubernetes活用するための基礎知識を身につけましょう。

とことんDevOps

December 08, 2022
Tweet

More Decks by とことんDevOps

Other Decks in Technology

Transcript

  1. ⾃⼰紹介 • 名前:⽥中智明(たなか ともあき) • 出⾝:北海道 • 仕事: • Ops案件

    • 技術検証 • 技術ブログ執筆 https://tech.virtualtech.jp/ https://devops-blog.virtualtech.jp/ • 勉強会登壇 2 はてなID: tnktmak
  2. どういうツール? • 「クバネティス」「クーベネティス」「クバネテス」と読む • 省略して「K8s」と書く • Kubernetesの先頭の“K”と末尾の“s”の間が8⽂字(ubernete)で“K + 8⽂字 +

    s” • 読みは「ケーエイツ」「ケーエイトエス」「クバネティス」 • コンテナの運⽤を⽀援してくれるコンテナオーケストレーションツール • オーケストレーションは運⽤管理の⾃動化 • 2013年にGoogleのエンジニアによって設計開発を開始 • Googleが社内で⻑年使っていたBorgの機能をOSS化するため • Borgから⼤きな影響を受けている 5
  3. どういうツール? • 2014年にオープンソース化 • 2015年にはLinux FoundationとGoogleでCloud Native Computing Foundation(CNCF)を設 ⽴しKubernetesを寄贈

    • Google, Microsoft, AWS, Red Hatなどが⽀援 • コンテナオーケストレーションのデファクトスタンダード 6
  4. 仮想化ができる前の時代におけるデプロイ (Traditional deployment) • 物理サーバー上で複数のアプリケーションを直接実⾏していた • リソースの割当に問題があった • 1つのアプリケーションがリソースの⼤半を消費した時に、他のアプリケーションに も影響が出てしまう

    • 解決策としては、それぞれのアプリケーションを別々のサーバーで稼働させる • リソースを⼗分に活⽤できない • 物理サーバーを調達するには時間がかかる • 物理サーバーを増やすと費⽤がかかる 9
  5. 仮想化を使ったデプロイ (Virtualized deployment) • 1台の物理サーバーで複数の仮想マシン(VM)を実⾏する • 仮想化によってアプリケーションはVM毎に隔離される • 他アプリケーションからの影響を受けづらい •

    物理サーバー内のリソース使⽤率が向上した • 空きリソースがあればアプリケーションをデプロイできる • アプリケーション追加が容易になった • VM毎に完全なOSを起動している • リソース消費が多い 10
  6. コンテナを使ったデプロイ (Container deployment) • コンテナランタイム上で実⾏する • コンテナはホストマシンとKernelを共有している • コンテナイメージにKernelを含める必要がないのでイメージが軽量 •

    コンテナ実⾏時にOSのプロビジョニングがないので起動がはやい • OSの設定が不要なので、開発者はアプリケーションに集中できる • コード、ライブラリ、フレームワークなど、依存関係のあるものをパッケージング • ローカルや本番で同じように動作 • デプロイが容易になる 11
  7. Kubernetesが提供できるもの • サービスディスカバリーと負荷分散 Kubernetesは、DNS名または独⾃のIPアドレスを使ってコンテナを公開することができま す。コンテナへのトラフィックが多い場合は、Kubernetesは負荷分散し、ネットワークトラフ ィックを振り分けることができるため、デプロイが安定します。 • ストレージ オーケストレーション Kubernetesは、ローカルストレージやパブリッククラウドプロバイダーなど、選択したスト

    レージシステムを⾃動でマウントすることができます。 • ⾃動化されたロールアウトとロールバック Kubernetesを使うとデプロイしたコンテナのあるべき状態を記述することができ、制御され たスピードで実際の状態をあるべき状態に変更することができます。例えば、アプリケーショ ンのデプロイのために、新しいコンテナの作成や既存コンテナの削除、新しいコンテナにあら ゆるリソースを適⽤する作業を、Kubernetesで⾃動化できます。 14 https://kubernetes.io/ja/docs/concepts/overview/what-is-kubernetes/ より
  8. コントロールプレーンコンポーネント • kube-apiserver • クラスタを操作するためのAPIを提供 • etcd • クラスター情報の保存場所 •

    kube-scheduler • Podがノードに割り当てられているか監視 • Podを稼働させるノードを選択 20
  9. コントロールプレーンコンポーネント • kube-controller-manager • 複数のコントローラープロセスを実⾏ • ノードのダウンを検知 • 正しい数のPodが稼働しているか •

    ネットワークの設定 • デフォルトアカウント • APIアクセストークンの作成 • cloud-controller-manager • Kubernetesとクラウドの架け橋 21
  10. ノードコンポーネント • kubelet • 各コンテナがPodで実⾏されていることを保証 • kube-proxy • ネットワークプロキシ •

    Podを公開する時に通信経路を確保 • コンテナランタイム • コンテナの実⾏を担当するソフトウェア • Docker, containerd, CRI-O • K8s v1.20からDockerランタイムは⾮推奨 • K8s v1.24でDockershimが削除された 22
  11. コンテナの管理 • Kubernetesオブジェクトで⾏う • YAMLフォーマットで表現されている • クラスターの今の状態を表している • どのようなアプリケーションが、どのノードで稼働しているか •

    それらのアプリケーションから利⽤可能なリソース • アプリケーションがどのように振る舞うか • オブジェクトの操作はCLIクライアントの「kubectl」かクライアントライブラリから • YAMLフォーマットのマニフェストファイルを使⽤することもできる • ファイルに保存するとdiffを取れるので便利 • ファイルが残っていればシェルのヒストリーが⾶んでも再現可能 24
  12. Kubernetesオブジェクト • オブジェクトには⾊々な種類がある • 基本的なKubernetesオブジェクト • Pod • Service •

    Volume • Namespace • Kubernetesのコントローラーに依存 • Deployment • DaemonSet • StatefulSet • ReplicaSet • Job • ちょっと特殊なカスタムリソース 25
  13. Kubernetesオブジェクト • オブジェクトには⾊々な種類がある • 基本的なKubernetesオブジェクト • Pod • Service •

    Volume • Namespace • Kubernetesのコントローラーに依存 • Deployment • DaemonSet • StatefulSet • ReplicaSet • Job • ちょっと特殊なカスタムリソース 26
  14. 29

  15. 32

  16. 34

  17. 36

  18. 41

  19. 43

  20. Service • Podをネットワークサービスとして公開 • 公開⽅法は3つ • ClusterIP • クラスター内部のIPでServiceを公開 •

    クラスター内部からのみ疎通可能 • NodePort • 各NodeのIPで静的なNodePortで公開 • NodePortの転送先のClusterIPは⾃動的に作られる • LoadBalancer • クラウドプロバイダーのロードバランサーを使って公開 • LoadBalancerの転送先のNodePort、ClusterIPは⾃動的に作られる 47
  21. 51

  22. 52

  23. 参考資料 • Kubernetesの概要 https://kubernetes.io/ja/docs/concepts/overview/ • ⼊⾨ Kubernetes https://www.oreilly.co.jp/books/9784873118406/ • Kubernetes

    誕⽣の物語 https://cloudplatform-jp.googleblog.com/2016/08/google-kubernetes.html • Kubernetes: The Documentary https://youtu.be/BE77h7dmoQU https://youtu.be/318elIq37PE 55
  24. 57

  25. ⽇本仮想化技術株式会社 概要 • 社名:⽇本仮想化技術株式会社 • 英語名:VirtualTech Japan Inc. • 設⽴:2006年12⽉

    • 資本⾦:3,000万円 • 本社:東京都渋⾕区渋⾕1-8-1 • 取締役:宮原 徹(代表取締役社⻑兼CEO)、伊藤 宏通(取締役CTO) • スタッフ:11名(うち、8名が仮想化技術専⾨エンジニアです) • URL:http://VirtualTech.jp/ • 仮想化技術に関する研究および開発 • 仮想化技術に関する各種調査 • 仮想化技術に関連したソフトウェアの開発 • 仮想化技術を導⼊したシステムの構築 • OpenStackの導⼊⽀援・新規機能開発 58 ベンダーニュートラルな 独⽴系仮想化技術の エキスパート集団 会社概要
  26. OpenStackへの取り組み • 通信事業社でのOpenStack基盤の検討⽀援および構築・運⽤ • NTTドコモ (2011年から技術評価を⽀援、商⽤利⽤に向けた検討・構 築・運⽤を実施) • NTT⻄⽇本 (商⽤利⽤に向けた評価・検討の⽀援、プロジェクトマネ

    ージメント⽀援) • ⼤⼿通信事業社 (NFV基盤についての検証・評価⽀援) • ベアメタルOpenStackの開発 • 仮想環境と物理環境をOpenStackで⼀括管理 • 単⼀のイメージで仮想マシンと物理マシンの双⽅を起動可能 • 2013年4⽉リリースのGrizzlyで本体にマージ 59 会社概要
  27. OpenStack Summitでの発表実績 60 2014/11 OpenStack Summit Paris We spoke the

    knowledge and tips when building and operating OpenStack Cloud on 100 Physical Servers. (Neutron HA, VXLAN performance,,,) 会社概要 2015/10 OpenStack Summit Tokyo We (NTT West, Canonical and VTJ) spoke ”Requirements for Providing Telecom Services on OpenStack-based Infrastructure”.