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

これから始める人のためのKubernetes&CloudNative入門

 これから始める人のためのKubernetes&CloudNative入門

OSC 2020 Online/Fukuokaの資料です。

cyberblack28

November 28, 2020
Tweet

More Decks by cyberblack28

Other Decks in Technology

Transcript

  1. Certification & Community CKA CKAD KCM100 2018 2019 #CNDT2020 Name:

    Yutaka Ichikawa Twitter/GitHub/Qiita: cyberblack28 Hatena Blog: https://cyberblack28.hatenablog.com/ Slides: https://speakerdeck.com/cyberblack28 Job Educational Solution Architect / Technical Educator Developer Advocate / Technical Evangelist Infrastructure Engineer / Frontend Engineer Profile #cnbfmeetup Cloud Native Bright Future
  2. • What’s CNBF • Myself • Learn Cloud Native Technology

    • Teach Cloud Native Technology • Summary • Information Agenda
  3. Learn Cloud Native Technology クラウドネイティブ関連技術は、社内や仕事を通して学べる範囲を超えてます!! • 会社の上司が、こうした新技術を包括的に 教えてくれますか? • クラウドネイティブにおける

    DevOps,IoT,Machine Learningなど、多岐 にわたる分野を教えられる人はいますか? • 「できます、やります、頑張ります!」 に限界がありませんか?
  4. Learn Cloud Native Technology コミュニティがエンジニアの成長のための大事な場所に クラウドネイティブ時代の様々な技術を学ぶために社外へ出て行 き、情報収集、情報発信、情報共有を実践してスキルアップや社内 にフィードバックして育成を計る。 • 国内外カンファレンス

    • ミートアップ • 勉強会/もくもく会 • セミナー/トレーニング • コミュニティ運営 • 技術書籍 • Web情報/トレーニング • コントリビュート/Slack • 技術ブログ/執筆 • SNS イベントへの参加 情報収集、発信、共有
  5. Learn Cloud Native Technology Cloud Native Technology’s Community #k8sjp #dockertokyo

    #rancherjp #paasjp #cndjp #k8sinternal #k8snovice #cloudnativejp #envoytokyo #prometheustokyo #japanrook #openshiftjp
  6. Learn Cloud Native Technology 参加者のメリット • 最新技術、事例等のキャッチアップ • 人とのつながり •

    社内フィードバックからの育成 参加者のデメリット • レベルが高すぎて、ついていけない
  7. Teach Cloud Native Technology 1. 主催者がPC、環境、教材もすべて準備 a. 受講者にとっては良いが、主催者としては準備労力とコストが発生 2. 受講者にPCも環境セットアップも準備してもらう(教材は主催者)

    a. 主催者にとって準備労力やコストは抑えられるが、受講者のPC環境差異に よるトラブル率が高まる b. 受講者としては準備労力とコストが発生 ハンズオン環境ってどうしてます?
  8. Teach Cloud Native Technology 1. 受講者にクラウド(有料/無料)のアカウントを準備してもらう a. ノートPC(Win/Mac不問)にブラウザだけで、環境差異のトラブルが生じにくい b. 受講者の準備作業はクラウドのアカウント作成

    c. 主催者の準備労力とコストを削減 d. クラウドベースの教材にすることで、受講後も同じ環境で復習できる 2. Google Cloud Platform(GCP)、Microsoft AzureのCloud Shellが便利 a. 受講者の事前準備におけるツールのインストールが不要になる b. 全てコマンド操作に集約できる ハンズオン環境はクラウド利用
  9. Teach Cloud Native Technology 1. スライド a. 図を多く、文字少なめで簡潔が理想! b. コマンド結果を載せる場合は、説明が必要な場合に!

    2. ハンズオン用テキスト a. 手打ちではオペミスによる誤作動率があがります b. 復習の利便性向上 c. コピー&ペースト用のテキストとコマンド結果表示も掲載しておくと良い d. 「クリップボードにコピー」ボタンを用意をオススメ! e. どこで?⇒GitHub、GitLab、Qiita、ブログサービスなど 教材はどうしてます?
  10. Teach Cloud Native Technology 1. 座学とハンズオンの組み合わせ 2. ハンズオンのパターン a. 受講者と一緒に行う

    b. 一定時間を設けて受講者に実習、実習後に解説 3. ハンズオンの前に必ず全体説明 4. ハンズオン中に何をやっているか見失わないようにする トレーニングの流れはどうしてます?
  11. Teach Cloud Native Technology 仮想マシンとコンテナの違い Virtual Machine Hypervisor Hardware Kernel

    Library Application Virtual Machine Kernel Library Application Conainer Container Engine Hardware Kernel Library Application Container Library Application 各仮想マシンでカーネルが稼働、隔離性が高いが、 起動が遅く(数分)オーバヘッドが大きい カーネルを共有しているため、隔離性は低いが、 起動が高速(数秒)でオーバヘッドが小さい 仮想マシンは個別のカーネル利用、コンテナはホストのカーネルを共有
  12. Virtual Machine Teach Cloud Native Technology 仮想マシンイメージとコンテナイメージの違い Application OS/Library Hypervisor

    Hardware 仮想マシンイメージがベンダー製品特有 の形式で容量も重く可搬性も低い 仮想マシンイメージ
  13. Teach Cloud Native Technology コンテナイメージ 1.ビルド(Build) OS/Library Application OS/Library Container

    Image Build • OS/ライブラリとアプリケーションをパッケージイメージ化 • イメージはこれまでの仮想マシンイメージに比べるとはるかに軽いのでポータビリティ性が高い 2.シップ(Ship) • イメージをレジストリに保存して共有 OS/Library Container Image OS/Library Image Registry OS/Library Push Pull Image Share/Ship
  14. Teach Cloud Native Technology 3.ラン(Run) OS/Library Container Image • イメージを基にコンテナを起動します。

    Run OS/Library Container OS/Library Container コンテナープラットフォーム上でイメージからコンテナを起動して、アプリケーションを稼働させます。 イメージもプラットフォームも特定ベンダー技術に依存しないため、ベンダーロックインもありません。 Container Platform
  15. Teach Cloud Native Technology DockerとContainer Runtimeの関係性 コンテナを実際に作るのはDockerではなく、Container Runtimeです。 Docker Docker

    Client containerd runC Linux cgroups Namespaces Union Filesystem Network Low-level Container Runtime High-level Container Runtime OCI(Open Container Initiative) CRI(Container Runtime Interface) kubelet Container
  16. Teach Cloud Native Technology docker CLI dockerd Containerd runC Low-level

    Container Runtime High-level Container Runtime Docker Engine Client Side Server Side 構成要素 説明 docker CLI コマンドラインインターフェースとしてDockerコマンドを提供します。 dockerd イメージ、ファイルシステム、ネットワークの管理、REST APIの提供するDockerの本体。Mobyとも呼ばれています。 containerd CNCF(CloudNativeComputingFoundation)にホストされているcontainerdは、Dockerのハイレベルコンテナーランタイムとしてコンテナーのラ イフサイクルを担います。KubernetesではCRI(Container Runtime Interface)プラグインに対応してPod用のNICやベースとなるpauseコンテ ナーを作成します。 runC OCI(Open Container Initiative)にホストされているrunCは、Dockerのローレベルコンテナーランタイムとしてシステムリソースの隔離で namespace、制限でcgroups、セキュリティでAppArmor・SELinux・seccomp等、ホストカーネルの機能を利用してコンテナーを作成します。
  17. Image Repositry Teach Cloud Native Technology コンテナアプリケーション開発の全体像って? OS/Library OS/Library OS/Library

    Container OS/Library Container Container Platform BareMetal Virtual Machine IaaS Developer Code Repository CI/CD Pipeline Build Ship Run コンテナープラットフォーム へのデプロイ CIパイプラインによる テスト、ビルド、イメージプッシュ イメージ共有 コンテナーの可搬性(Portability)とスピード(Agility)を持ち合わせ、 品質および生産性の高いアプリケーション開発を実現 Infrastructure Engineer Operator Code Dockerfile manifest
  18. Image Repositry Teach Cloud Native Technology OS/Library OS/Library OS/Library Container

    OS/Library Container Container Platform BareMetal Virtual Machine IaaS Developer Code Repository CI/CD Pipeline Build Ship Run コンテナープラットフォーム へのデプロイ CIパイプラインによる テスト、ビルド、イメージプッシュ イメージ共有 傾向として、CDをGitで管理するGitOps手法が取り入られ始めています。 Infrastructure Engineer Operator Config Repository Pull Request GitOps Operator CD Change manifest Change code manifest Code Dockerfile