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

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

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

Kohei Ota

July 25, 2020
Tweet

More Decks by Kohei Ota

Other Decks in Technology

Transcript

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

    View full-size slide

  2. Kubernetes 201: Let’s get
    involved with the community!
    Kohei Ota, CNCF Ambassador/HPE Solutions Architect
    July Tech Festa 2020

    View full-size slide

  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

    View full-size slide

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

    View full-size slide

  5. © 2020 Cloud Native Computing Foundation
    5
    Today’s goal
    1. Kubernetesを構成している要素のことがわかる
    2. それらをどうやって開発しているかがわかる
    3. OSSとコミュニティの関係についてわかる

    View full-size slide

  6. 小話: DockerとKubernetesの
    生まれた時期と経緯

    View full-size slide

  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

    View full-size slide

  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!

    View full-size slide

  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つの顔

    View full-size slide

  10. 皆さんへの質問:
    Kubernetesは誰が作ってますか?

    View full-size slide

  11. 答え
    コミュニティ

    View full-size slide

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

    View full-size slide

  13. © 2020 Cloud Native Computing Foundation
    13
    OSSがいつもコミュニティベースとは限らない
    ● 多くのリポジトリは個人が所有している
    ● 規模の大きなOSSでも会社に属している場合はメンテナが特定の
    会社に偏っている
    ○ 自分たちにメリットがないリクエストは取り入れない
    Kubernetesではどう違うのか

    View full-size slide

  14. コミュニティの正体

    View full-size slide

  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

    View full-size slide

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

    View full-size slide

  17. © 2020 Cloud Native Computing Foundation
    17
    Kubernetesのプロジェクトはどうなっている?
    ● SIGs(Special Interest Groups)
    ○ ドキュメント管理やリリース管理から、各コンポーネントの実装
    に至るまで、さまざまなSIGがある
    ■ あらゆる決定は基本的にSIGによって行われる
    ○ SIGごとに異なる組織からのチェア(代表)がいる
    ● Kubernetesそのものがコンポーネントごとに分かれたマイクロ
    サービス
    ○ 組織もまた必要に合わせ分割(SIG, WG)
    ○ 各SIGがそれぞれの目的のために日々頑張っている

    View full-size slide

  18. Kubernetesの
    基本的なアーキテクチャ

    View full-size slide

  19. © 2020 Cloud Native Computing Foundation
    19
    ● Kubernetesを形作る最も大きな単一の要素
    ● 複数のコンポーネントが、Kubernetesを動かす
    ために様々な役割をクラスター内で行う
    ○ 各コンポーネントは「リソース」と呼ぶ
    ● 「リソース」はAPIオブジェクトで、プログラム上で
    管理して扱えるよう抽象化され、パラメーター複
    数持っている
    Kubernetesクラスター

    View full-size slide

  20. © 2020 Cloud Native Computing Foundation
    20
    ● クラスターを「リソース」の観点で見ると、1台以上
    のノードの集合と捉えることもできる
    ○ 一般には冗長化のために複数台で構成する
    が、シングルノードクラスターでも動く
    ● ノードは物理または仮想マシンと非常に近い存在
    だが、全く同じではない(次で説明)
    Kubernetesクラスター

    View full-size slide

  21. © 2020 Cloud Native Computing Foundation
    21
    ● Kubernetesにおけるノードは、動作に必
    要な「コンポーネント」を含む物理または
    仮想マシンのこと
    ● ノードには大きく分けて2種類ある
    ○ コントロールプレーン
    ○ ワーカー
    Kubernetesノード

    View full-size slide

  22. © 2020 Cloud Native Computing Foundation
    22
    ● 司令塔として動作する管理用ノード
    ● コントロールプレーンには以下のコンポーネント
    が含まれる
    ○ kube-api-server
    ○ kube-scheduler
    ○ kube-controller-manager
    ○ cloud-controller-manager
    ○ etcd (冗長化のために外に出す事が多い)
    ○ kubelet
    ○ kube-proxy
    ○ Docker (コンテナランタイム)
    Kubernetesコントロールプレーン

    View full-size slide

  23. © 2020 Cloud Native Computing Foundation
    23
    ● 開発者や運用者が使いたいアプリケーションが実
    際に動くノード
    ● ワーカーには以下のコンポーネントが含まれる
    ○ kubelet
    ○ kube-proxy
    ○ Docker (コンテナランタイム)
    Kubernetesワーカー

    View full-size slide

  24. 各コンポーネントの役割

    View full-size slide

  25. © 2020 Cloud Native Computing Foundation
    25

    View full-size slide

  26. © 2020 Cloud Native Computing Foundation
    26
    ● すべての中心
    ● kubectlなどのクライアント含め全ての
    コンポーネントがapi-serverを通じてや
    り取りを行う
    ● etcdに触れる唯一の存在
    kube-api-server

    View full-size slide

  27. © 2020 Cloud Native Computing Foundation
    27
    ● PodやServiceなどの主要なリソース
    管理を制御するコンポーネント
    ● 一定期間でリソースの状態をチェック
    し、定義されたDesired stateが維持さ
    れていることを担保する
    ○ 人間がYAMLで書いたものを定
    義しておき、その情報をもとに自
    律制御する
    kube-controller-manager

    View full-size slide

  28. © 2020 Cloud Native Computing Foundation
    28
    Reconcile
    Loop
    create
    update
    delete

    View full-size slide

  29. © 2020 Cloud Native Computing Foundation
    29
    ● クラウドの世界とKubernetesをつなげてくれるコンポーネント
    ○ 例: AWSやGCPと連携してLBや外部ボリュームを作成
    ○ オートスケーリングなどのクラウド固有の処理のラッパー
    Kubernetes API <- cloud-controller-manager -> Cloud API
    cloud-controller-manager

    View full-size slide

  30. © 2020 Cloud Native Computing Foundation
    30
    ● Kubernetesにおける重要な機能
    「スケジューリング」の管理
    ● 新しいPodが作られたときに「どのノー
    ドに配置するか」を決める
    ○ 例: 2GB以上のメモリがほしい
    Podは1GBのVMには置かない
    ○ GPUの載ったノードにだけ配置
    したいPodがある、など
    kube-scheduler

    View full-size slide

  31. © 2020 Cloud Native Computing Foundation
    31
    ● 各ノードでapi-serverと通信す
    るデーモン
    ● スケジューラーからの司令を
    感知したら、ノード上でコンテ
    ナを作成する司令をランタイ
    ムに送信
    kubelet

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  35. 各コンポーネントはどこで
    開発されているか

    View full-size slide

  36. © 2020 Cloud Native Computing Foundation
    36

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  39. Kubernetesに関して学ぶ方法と
    Kubernetes SIGについて

    View full-size slide

  40. © 2020 Cloud Native Computing Foundation
    40
    Kubernetesを学ぶためのいろいろ
    ● 困ったらとりあえず公式のチュートリアルをやってみる
    ○ kubernetes.io(翻訳手伝ってください)
    ● 認定資格のCKA/CKAD/CKS(new!)を目指してみる
    ● Kubernetesをどこで動かすかも大切
    ○ AWSならAWS、VMwareならVMwareの知識があってこそ、
    Kubernetesを活かすための知見も溜まっていく

    View full-size slide

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

    View full-size slide

  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

    View full-size slide

  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

    View full-size slide

  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
    ちょっと列挙しただけでもたく
    さんある

    View full-size slide

  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( 手
    前味噌)

    View full-size slide

  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さんが話し
    てくれます

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  49. © 2020 Cloud Native Computing Foundation
    49
    補足: Kubernetesと他のCNCF Projectsの違い
    ● ここまでグループが細分化されているのは現状Kubernetesだけ
    ○ カバーしている範囲や機能が大きいのでしょうがない
    ● CNCFの参加のOSSでは、多くの場合3人程度の代表者がいて、
    彼らを中心に開発が進められている

    View full-size slide

  50. Kubernetes以外のCloud Nativeな
    プロジェクトの歩き方

    View full-size slide

  51. © 2020 Cloud Native Computing Foundation
    51
    CNCF公式の情報
    ● Cloud Native Landscape
    ● Cloud Native Trail Map

    View full-size slide

  52. © 2020 Cloud Native Computing Foundation
    52

    View full-size slide

  53. © 2020 Cloud Native Computing Foundation
    53
    Try it now at
    https://l.cncf.io

    View full-size slide

  54. © 2020 Cloud Native Computing Foundation
    54
    Cloud Native
    Trail Map
    Trail Map: l.cncf.io

    View full-size slide

  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

    View full-size slide

  56. © 2020 Cloud Native Computing Foundation
    56
    KubeCon + CloudNativeCon
    ● 今年のKubeConは両方オンライン!
    ● しかも今度やるEU Virtualは無料チケットがある!
    ○ ただし参加できるセッションには制限あり
    ○ 会社でお金が出ないけど自分で払うのも・・・って人にはちょう
    どいいかも
    ● 知り合いとZOOMしながら見るなんてのもありかも?

    View full-size slide

  57. Kubernetesの新機能や
    最新動向を見たい場合

    View full-size slide

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

    View full-size slide

  59. © 2020 Cloud Native Computing Foundation
    59
    まとめ
    ● Kubernetesは複数のマイクロサービスでできている
    ● Kubernetesはコミュニティによって支えられている
    ○ 世界で2番目に規模の大きなコミュニティ
    ○ 1位はLinuxカーネル
    ● KEPやSIGなど、さまざまな仕組みで日々議論が行われている

    View full-size slide

  60. [email protected]
    This presentation is available at:
    https://github.com/cncf/presentations
    Please follow up with CNCF

    View full-size slide