Kubernetes、第一歩のその後に ~基盤を支えるOSSとの関わり方~ / Kubernetes 201: Let’s get involved with the community!

Kubernetes、第一歩のその後に ~基盤を支えるOSSとの関わり方~ / Kubernetes 201: Let’s get involved with the community!

Ad22fcf5773b906c08330f4d57242212?s=128

Kohei Ota

July 25, 2020
Tweet

Transcript

  1. Kubernetes、第一歩のその後に ~基盤を支えるOSSとの関わり方~ Kohei Ota, CNCF Ambassador/HPE Solutions Architect July Tech

    Festa 2020
  2. Kubernetes 201: Let’s get involved with the community! Kohei Ota,

    CNCF Ambassador/HPE Solutions Architect July Tech Festa 2020
  3. © 2020 Cloud Native Computing Foundation 3 Who am I

    Kohei Ota (@inductor) •CNCF Ambassador •Cloud Native Solution Architect at HPE •Kubernetes SIG-Docs Japanese owner •Docker Meetup Tokyo Organizer •CloudNative Days Tokyo Organizer •Docker enthusiast
  4. © 2020 Cloud Native Computing Foundation 4 Today’s target 1.

    DockerやKubernetesを動かしたことがある 2. チュートリアルから先に進めていない 3. 規模が大きく何から手を付ければいいかわからない
  5. © 2020 Cloud Native Computing Foundation 5 Today’s goal 1.

    Kubernetesを構成している要素のことがわかる 2. それらをどうやって開発しているかがわかる 3. OSSとコミュニティの関係についてわかる
  6. 小話: DockerとKubernetesの 生まれた時期と経緯

  7. © 2020 Cloud Native Computing Foundation 7 Containers Containers: Docker

    (2013) •dotCloud社が当時提供してたPaaSで基盤になっていたも のをDockerとして公開 ◦ Linuxコンテナ(LXC)ベースのアプリケーション •のちにlibcontainer(runC)に書き換え、OSSとして公開 •containerdとmobyを公開、マイクロサービス化 Open Source IaaS PaaS Open Source PaaS 2000 2001 2006 2009 2010 2011 Non- Virtualized Hardware 2013 Virtualiza- tion IaaS here! 2015 Cloud Native
  8. © 2020 Cloud Native Computing Foundation 8 Containers Cloud Native

    Kubernetes (2015) •Googleが15年近く前から作っていたBorgという基盤 技術の思想がベース – インフラを抽象化して必要なリソースをアプリに提供す るためのプラットフォーム •Borgの思想をフルにOSSとして展開 Open Source IaaS PaaS Open Source PaaS Virtualiza- tion 2000 2001 2006 2009 2010 2011 Non- Virtualized Hardware 2013 2015 IaaS here!
  9. © 2020 Cloud Native Computing Foundation 9 Marketing Committee Technical

    Oversight Committee Governing Board End User Community Container Orchestration Distributed system Platform for Platforms • 複数の「ノード」を束ねる クラスタリング • 柔軟なジョブスケジューリング • Raftベースの分散KVS • 高速で簡単なスケーリング • ロードバランサーとの統合 • 柔軟で簡単なデプロイ手段 • インフラ基盤との強力な連携 • 拡張を前提に作られた APIやリソース • 大きなコミュニティとエコシステム Kubernetesの3つの顔
  10. 皆さんへの質問: Kubernetesは誰が作ってますか?

  11. 答え コミュニティ

  12. 普通のOSSってそうじゃないの?

  13. © 2020 Cloud Native Computing Foundation 13 OSSがいつもコミュニティベースとは限らない • 多くのリポジトリは個人が所有している

    • 規模の大きなOSSでも会社に属している場合はメンテナが特定の 会社に偏っている ◦ 自分たちにメリットがないリクエストは取り入れない Kubernetesではどう違うのか
  14. コミュニティの正体

  15. © 2019 Cloud Native Computing Foundation 15 Cloud Native Computing

    Foundation • Nonprofit, part of the Linux Foundation; founded Dec. 2015 • Platinum members: Incubating Graduated Service Mesh Storage Service Discovery Package Management Distributed Tracing API Messaging Distributed Tracing Software Update Spec Security Networking API Orchestration Monitoring Registry Key/Value Store Policy Container Runtime Container Runtime Logging Remote Procedure Call Storage Serverless Container Security Continuous Integration & Deployment Image Distribution Network Proxy Key/Value Store Identity Spec Identity
  16. © 2020 Cloud Native Computing Foundation 16 CNCFとは • 非営利団体

    ◦ Linux FoundationとGoogleが共同で2015年設立 ◦ 複数のプロジェクトをホストしている ▪ Kubernetes, Prometheus, fluentd, gRPC(spec), Envoy, containerdなどその他多数 ▪ コンテナ技術だけのための団体ではない • 各プロジェクトに複数団体のメンテナがいる ◦ ベンダーの偏っているプロジェクトは受け入れない考え
  17. © 2020 Cloud Native Computing Foundation 17 Kubernetesのプロジェクトはどうなっている? • SIGs(Special

    Interest Groups) ◦ ドキュメント管理やリリース管理から、各コンポーネントの実装 に至るまで、さまざまなSIGがある ▪ あらゆる決定は基本的にSIGによって行われる ◦ SIGごとに異なる組織からのチェア(代表)がいる • Kubernetesそのものがコンポーネントごとに分かれたマイクロ サービス ◦ 組織もまた必要に合わせ分割(SIG, WG) ◦ 各SIGがそれぞれの目的のために日々頑張っている
  18. Kubernetesの 基本的なアーキテクチャ

  19. © 2020 Cloud Native Computing Foundation 19 • Kubernetesを形作る最も大きな単一の要素 •

    複数のコンポーネントが、Kubernetesを動かす ために様々な役割をクラスター内で行う ◦ 各コンポーネントは「リソース」と呼ぶ • 「リソース」はAPIオブジェクトで、プログラム上で 管理して扱えるよう抽象化され、パラメーター複 数持っている Kubernetesクラスター
  20. © 2020 Cloud Native Computing Foundation 20 • クラスターを「リソース」の観点で見ると、1台以上 のノードの集合と捉えることもできる

    ◦ 一般には冗長化のために複数台で構成する が、シングルノードクラスターでも動く • ノードは物理または仮想マシンと非常に近い存在 だが、全く同じではない(次で説明) Kubernetesクラスター
  21. © 2020 Cloud Native Computing Foundation 21 • Kubernetesにおけるノードは、動作に必 要な「コンポーネント」を含む物理または

    仮想マシンのこと • ノードには大きく分けて2種類ある ◦ コントロールプレーン ◦ ワーカー Kubernetesノード
  22. © 2020 Cloud Native Computing Foundation 22 • 司令塔として動作する管理用ノード •

    コントロールプレーンには以下のコンポーネント が含まれる ◦ kube-api-server ◦ kube-scheduler ◦ kube-controller-manager ◦ cloud-controller-manager ◦ etcd (冗長化のために外に出す事が多い) ◦ kubelet ◦ kube-proxy ◦ Docker (コンテナランタイム) Kubernetesコントロールプレーン
  23. © 2020 Cloud Native Computing Foundation 23 • 開発者や運用者が使いたいアプリケーションが実 際に動くノード

    • ワーカーには以下のコンポーネントが含まれる ◦ kubelet ◦ kube-proxy ◦ Docker (コンテナランタイム) Kubernetesワーカー
  24. 各コンポーネントの役割

  25. © 2020 Cloud Native Computing Foundation 25

  26. © 2020 Cloud Native Computing Foundation 26 • すべての中心 •

    kubectlなどのクライアント含め全ての コンポーネントがapi-serverを通じてや り取りを行う • etcdに触れる唯一の存在 kube-api-server
  27. © 2020 Cloud Native Computing Foundation 27 • PodやServiceなどの主要なリソース 管理を制御するコンポーネント

    • 一定期間でリソースの状態をチェック し、定義されたDesired stateが維持さ れていることを担保する ◦ 人間がYAMLで書いたものを定 義しておき、その情報をもとに自 律制御する kube-controller-manager
  28. © 2020 Cloud Native Computing Foundation 28 Reconcile Loop create

    update delete
  29. © 2020 Cloud Native Computing Foundation 29 • クラウドの世界とKubernetesをつなげてくれるコンポーネント ◦

    例: AWSやGCPと連携してLBや外部ボリュームを作成 ◦ オートスケーリングなどのクラウド固有の処理のラッパー Kubernetes API <- cloud-controller-manager -> Cloud API cloud-controller-manager
  30. © 2020 Cloud Native Computing Foundation 30 • Kubernetesにおける重要な機能 「スケジューリング」の管理

    • 新しいPodが作られたときに「どのノー ドに配置するか」を決める ◦ 例: 2GB以上のメモリがほしい Podは1GBのVMには置かない ◦ GPUの載ったノードにだけ配置 したいPodがある、など kube-scheduler
  31. © 2020 Cloud Native Computing Foundation 31 • 各ノードでapi-serverと通信す るデーモン

    • スケジューラーからの司令を 感知したら、ノード上でコンテ ナを作成する司令をランタイ ムに送信 kubelet
  32. © 2020 Cloud Native Computing Foundation 32 • 各ノードに入っている •

    Kubernetesでは「どのノードで動い てもアプリケーションが同じように動 作」する ◦ ワークロード用のNWはクラス ター内で透過 ◦ 論理NWをiptablesなどで管理 することで実現 kube-proxy
  33. © 2020 Cloud Native Computing Foundation 33 • 各ノードに入っている •

    Docker以外のランタイムも使える ◦ KubernetesはkubeletにCRIと いうインターフェースがあっ て、これが喋れるランタイムな らどれでも動かせる (e.g. containerd, CRI-O) コンテナランタイム
  34. © 2020 Cloud Native Computing Foundation 34 • 各ノードに入っている •

    Docker以外のランタイムも使える ◦ KubernetesはkubeletにCRIと いうインターフェースがあっ て、これが喋れるランタイムな らどれでも動かせる (e.g. containerd, CRI-O) コンテナランタイム
  35. 各コンポーネントはどこで 開発されているか

  36. © 2020 Cloud Native Computing Foundation 36

  37. © 2020 Cloud Native Computing Foundation 37 kubeと頭がつくものは全て github.com/kubernetes/kubernetes の中に含まれる

  38. © 2020 Cloud Native Computing Foundation 38 それ以外は別のリポジトリにある 特に、cloud-controller-managerはクラウドごとに 別々のSIGで管理されている(e.g.

    cloud-provider-aws)
  39. Kubernetesに関して学ぶ方法と Kubernetes SIGについて

  40. © 2020 Cloud Native Computing Foundation 40 Kubernetesを学ぶためのいろいろ • 困ったらとりあえず公式のチュートリアルをやってみる

    ◦ kubernetes.io(翻訳手伝ってください) • 認定資格のCKA/CKAD/CKS(new!)を目指してみる • Kubernetesをどこで動かすかも大切 ◦ AWSならAWS、VMwareならVMwareの知識があってこそ、 Kubernetesを活かすための知見も溜まっていく
  41. © 2020 Cloud Native Computing Foundation 41 Kubernetesを学ぶためのいろいろ • Kubernetes

    the hard way ◦ inductorっていう人が翻訳した日本語版もあるよ! • インフラの人はアプリケーションを、バックエンドの人はインフラを 学ぶことで知識がより定着する ◦ Kubernetesの基本的構造はWebアプリケーションと同じ ◦ 自動化の恩恵をフルに活用するためには両方の知見が必要
  42. © 2020 Cloud Native Computing Foundation 42 日本のコミュニティ • ミートアップ

    ◦ Kubernetes Meetup Tokyo ◦ Cloud Native Meetup Tokyo ◦ Prometheus Meetup Tokyo ◦ Cloud Native Developers JP ◦ Docker Meetup Tokyo • カンファレンス ◦ CloudNative Days Tokyo ◦ KubeFest Tokyo ◦ Cloud Operator Days Tokyo
  43. © 2020 Cloud Native Computing Foundation 43 SIG一覧 • sig-api-machinery

    • sig-apps • sig-auth • sig-aws • sig-azure • sig-cli • sig-cloud-provider • sig-cluster-lifecycle • sig-contributex • sig-docs • sig-gcp • sig-ibmcloud • sig-instrumentation • sig-multicluster • sig-network • sig-node • sig-release • sig-scheduling • sig-service-catalog • sig-storage • sig-testing • sig-ui • sig-usability • sig-windows
  44. © 2020 Cloud Native Computing Foundation 44 SIG一覧 • sig-api-machinery

    • sig-apps • sig-auth • sig-aws • sig-azure • sig-cli • sig-cloud-provider • sig-cluster-lifecycle • sig-contributex • sig-docs • sig-gcp • sig-ibmcloud • sig-instrumentation • sig-multicluster • sig-network • sig-node • sig-release • sig-scheduling • sig-service-catalog • sig-storage • sig-testing • sig-ui • sig-usability • sig-windows ちょっと列挙しただけでもたく さんある
  45. © 2020 Cloud Native Computing Foundation 45 SIG一覧 • sig-api-machinery

    • sig-apps • sig-auth • sig-aws • sig-azure • sig-cli • sig-cloud-provider • sig-cluster-lifecycle • sig-contributex • sig-docs • sig-gcp • sig-ibmcloud • sig-instrumentation • sig-multicluster • sig-network • sig-node • sig-release • sig-scheduling • sig-service-catalog • sig-storage • sig-testing • sig-ui • sig-usability • sig-windows api-serverの標 準 化 を進めるSIG OSS貢献への満足度 を高めるためのSIG テストの自 動 実 行 を改善するSIG ドキュメントをま とめるSIG( 手 前味噌)
  46. © 2020 Cloud Native Computing Foundation 46 SIG一覧 • sig-api-machinery

    • sig-apps • sig-auth • sig-aws • sig-azure • sig-cli • sig-cloud-provider • sig-cluster-lifecycle • sig-contributex • sig-docs • sig-gcp • sig-ibmcloud • sig-instrumentation • sig-multicluster • sig-network • sig-node • sig-release • sig-scheduling • sig-service-catalog • sig-storage • sig-testing • sig-ui • sig-usability • sig-windows api-serverの標 準 化 を進めるSIG OSS貢献への満足度 を高めるためのSIG テストの自 動 実 行 を改善するSIG ドキュメントをま とめるSIG( 手 前味噌) このあとのD4セッ ションで、Prowにつ いてbellさんが話し てくれます
  47. © 2020 Cloud Native Computing Foundation 47 SIGの歩き方 • 各SIGの役割自体は決まっているので、SIGから見るよりは

    何を知りたいかで見たほうが入りやすい • たくさんあるので、とりあえず困ったらKubernetes Slackの日本 チャンネルで聞くのがいい ◦ 気になる人は兎にも角にもSlackに入りましょう! ◦ みんな優しい ◦ Don’t ask to askの精神 ◦ OSSなので、助けてもらったら小さなことでも、別の人にでも良 いので恩を送りあえるといいなぁ
  48. © 2020 Cloud Native Computing Foundation 48 SIGの歩き方 • 各SIGの役割自体は決まっているので、SIGから見るよりは

    何を知りたいかで見たほうが入りやすい • たくさんあるので、とりあえず困ったらKubernetes Slackの日本 チャンネルで聞くのがいい ◦ 気になる人は兎にも角にもSlackに入りましょう! ◦ みんな優しい ◦ Don’t ask to askの精神 ◦ OSSなので、助けてもらったら小さなことでも、別の人にでも良 いので恩を送りあえるといいなぁ とりあえず困ったら公式ドキュメントを覗い てみるのもアリ (コントリビュートお待ちしてます)
  49. © 2020 Cloud Native Computing Foundation 49 補足: Kubernetesと他のCNCF Projectsの違い

    • ここまでグループが細分化されているのは現状Kubernetesだけ ◦ カバーしている範囲や機能が大きいのでしょうがない • CNCFの参加のOSSでは、多くの場合3人程度の代表者がいて、 彼らを中心に開発が進められている
  50. Kubernetes以外のCloud Nativeな プロジェクトの歩き方

  51. © 2020 Cloud Native Computing Foundation 51 CNCF公式の情報 • Cloud

    Native Landscape • Cloud Native Trail Map
  52. © 2020 Cloud Native Computing Foundation 52

  53. © 2020 Cloud Native Computing Foundation 53 Try it now

    at https://l.cncf.io
  54. © 2020 Cloud Native Computing Foundation 54 Cloud Native Trail

    Map Trail Map: l.cncf.io
  55. © 2020 Cloud Native Computing Foundation 55 日本のコミュニティ • ミートアップ

    ◦ Kubernetes Meetup Tokyo ◦ Cloud Native Meetup Tokyo ◦ Prometheus Meetup Tokyo ◦ Cloud Native Developers JP ◦ Docker Meetup Tokyo • カンファレンス ◦ CloudNative Days Tokyo ◦ KubeFest Tokyo ◦ Cloud Operator Days Tokyo
  56. © 2020 Cloud Native Computing Foundation 56 KubeCon + CloudNativeCon

    • 今年のKubeConは両方オンライン! • しかも今度やるEU Virtualは無料チケットがある! ◦ ただし参加できるセッションには制限あり ◦ 会社でお金が出ないけど自分で払うのも・・・って人にはちょう どいいかも • 知り合いとZOOMしながら見るなんてのもありかも?
  57. Kubernetesの新機能や 最新動向を見たい場合

  58. © 2020 Cloud Native Computing Foundation 58 KEPを活用する • Kubernetes

    Enhancement Proposalの略 ◦ 要するに新機能や改善の提案をするためのフォーマット • github.com/kubernetes/enhancements 配下にある ◦ 現在進行系で提案されている新しい機能や改善点に関する仕 様策定やその進捗、実装状況やマイルストーンなどが全て示 されている • 詳しくはLadicle氏のアドベントカレンダー記事が最高 ◦ KEPから知るKubernetes
  59. © 2020 Cloud Native Computing Foundation 59 まとめ • Kubernetesは複数のマイクロサービスでできている

    • Kubernetesはコミュニティによって支えられている ◦ 世界で2番目に規模の大きなコミュニティ ◦ 1位はLinuxカーネル • KEPやSIGなど、さまざまな仕組みで日々議論が行われている
  60. info@cncf.io This presentation is available at: https://github.com/cncf/presentations Please follow up

    with CNCF