© 2021 NTT DATA CORPORATION
2021年10月19日
NTTデータ 高畑 憲
0から始めるコンテナの学び方
Kubernetes Novice Tokyo #14
© 2021 NTT DATA CORPORATION 2
© 2021 NTT DATA CORPORATION
自己紹介・発表概要
自己紹介
高畑憲
NTTデータ所属 1年目社員
2ヶ月間Docker、Kubernetesの勉強を行った。
ターゲット
コンテナを学び始める人、コンテナ指導者
目的
これからコンテナを学び始める人に、自分の経験や道筋を伝える。
© 2021 NTT DATA CORPORATION 3
コンテナの概要
© 2021 NTT DATA CORPORATION 4
© 2021 NTT DATA CORPORATION
コンテナとは
・アプリ本体や必要なライブラリをパッケージングした仮想化技術。
・VMとは異なりOSを共有している。
コンテナの特徴
・軽量でありVMと比べて起動が早い。
・環境+アプリをまとめて扱える。どこでも同じ環境を作る事ができる。
コンテナとは
ゲストOS不要 ゲストOS不要 ゲストOS不要
© 2021 NTT DATA CORPORATION 5
© 2021 NTT DATA CORPORATION
軽量で早い→リリースの作業量が減る
・他の業務に稼働を割ける。
・アジャイル開発のような頻繁なリリースが可能 → ビジネス拡大の高速化
環境とアプリをまとめて扱う→コスト、ミスが減る
・環境差異によるリリースミスが減る
・構築、破棄を気軽に行える。切り戻し作業が不要。
コンテナのメリット
コンテナ
イメージ
開発環境
イメージ作成
テスト環境 本場環境
複製
© 2021 NTT DATA CORPORATION 6
© 2021 NTT DATA CORPORATION
Docker
コンテナのデプロイを行う代表的なツール
dockerコマンドを使用して、気軽にコンテナをデプロイできる。
コンテナの基
コンテナの設計図
(雛形に変更を加える)
コンテナの雛形
© 2021 NTT DATA CORPORATION 7
© 2021 NTT DATA CORPORATION
コンテナの管理が苦手
Dockerはコンテナのビルドと起動に特化。
→複数台コンテナの管理や、スケール、オートヒーリングが難しい
コンテナ基盤としての可用性が確保できない
Docker単体では、基本的に一つのサーバーで
コンテナを動かすことを想定している。
→Dockerホストが落ちた場合に困る。
そこで、コンテナやコンテナホストを総合的に管理する仕組みが必要。
代表的なツールがKubernetes 。
Dockerの課題
© 2021 NTT DATA CORPORATION 8
© 2021 NTT DATA CORPORATION
Kubernetesとは
コンテナのオーケストレーションツール、コンテナの管理者。
特徴
複数台のコンテナ、コンテナホストの管理などDockerの課題を解決
Kubernetesとは①
Kubernetes
Kubernetes
コンテナ1 コンテナ2
コンテナホスト
コンテナ3 コンテナ4
コンテナホスト
コンテナ5 コンテナ6
コンテナホスト
© 2021 NTT DATA CORPORATION 9
© 2021 NTT DATA CORPORATION
Kubernetesの構成
Kubernetesとは②
マスターノード、ワーカーノード複数台で基盤として使うことができる
→この集合をクラスタと呼ぶ。
マニフェスト(コンテナの起動定義)を用いてPod(≒コンテナ)をデプロイ。
Pod
Master
Worker Worker Worker
Cluster
Manifest
Dev.
© 2021 NTT DATA CORPORATION 10
どのようにコンテナを学ぶか
© 2021 NTT DATA CORPORATION 11
© 2021 NTT DATA CORPORATION
どのようにコンテナを学ぶか
コンテナ自体の理解
0. コンテナの概念を学ぶ
1. Dockerを使ってコンテナをデプロイしてみる
Kubernetesの理解
2. 利用者目線の理解
Kubernetes上にコンテナをデプロイしてみる
3. 管理者目線の理解
Kubernetesクラスターを自分で構築してみる
© 2021 NTT DATA CORPORATION 12
© 2021 NTT DATA CORPORATION
0. コンテナの概念を学ぶ
前半で紹介したような
コンテナの概要、特徴、メリットなどを調査して、
自分の言葉でパワポにまとめる。→有識者にFBを貰う。
アウトプットによって整理される上、
後で見返したり、発表資料に使えるのでおすすめ。
© 2021 NTT DATA CORPORATION 13
© 2021 NTT DATA CORPORATION
どのようにコンテナを学ぶか
コンテナ自体の理解
0. コンテナの概念を学ぶ
1. Dockerを使ってコンテナをデプロイしてみる
Kubernetesの理解
2. 利用者目線の理解
Kubernetes上にコンテナをデプロイしてみる
3. 管理者目線の理解
Kubernetesクラスターを自分で構築してみる
© 2021 NTT DATA CORPORATION 14
© 2021 NTT DATA CORPORATION
DockerfileやDocker Compose、Dockerネットワークも軽く試してみると良い。
参考: Orientation and setup | Docker Documentation https://docs.docker.com/get-started/
【Docker入門】開発環境を構築する6ステップ https://kitsune.blog/docker-study
1. Dockerを使ってコンテナをデプロイしてみる
$ docker run -d -p 8080:80 nginx
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS
8b30c12ae823 nginx "/docker-entrypoint.…" 37 seconds ago Up 32 seconds 0.0.0.0:8080->80/tcp
UbuntuにDockerをインストールし、
webサーバーのコンテナをデプロイしてみる
Ubuntu Playgroundを使うと環境を用意せずに検証できる
https://www.katacoda.com/courses/ubuntu/playground
© 2021 NTT DATA CORPORATION 15
© 2021 NTT DATA CORPORATION
利用者目線と管理者目線
コンテナ自体の理解
0. コンテナの概念を学ぶ
1. Dockerを使ってコンテナをデプロイしてみる
Kubernetesの理解
2. 利用者目線の理解
Kubernetes上にコンテナをデプロイしてみる
3. 管理者目線の理解
Kubernetesクラスターを自分で構築してみる
Master
Worker Worker Worker
利用者
Cluster
管理者
クラスタ作成
コンテナ作成
© 2021 NTT DATA CORPORATION 16
© 2021 NTT DATA CORPORATION
Udemyがおすすめ。ハンズオンを行い、Pod・Serviceの概念や
クラスタの基本的な使い方を学ぶ。
ハンズオンではKubernetes Playground https://www.katacoda.com/courses/kubernetes/playground
を用いると環境を用意せずに検証できる。
Kubernetes上にコンテナをデプロイしてみる
$ kubectl apply -f deployment.yaml
deployment.apps/nginx-deployment created
$ kubectl get pod
NAME READY STATUS RESTARTS AGE
nginx-deployment-6b474476c4-bxrnw 1/1 Running 0 100s
nginx-deployment-6b474476c4-k5xsh 1/1 Running 0 100s
nginx-deployment-6b474476c4-s4wf9 1/1 Running 0 100s
deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.14.2
ports:
- containerPort: 80
コンテナの台数
イメージ指定
ポート番号
米シリコンバレーDevOps監修!超Kubernetes完全入門(2020)
【優しい図解説とハンズオン】 (udemy.com)
https://ntttechjp.udemy.com/course/kubernetes-docker-container-devops-kanzen-
nyumon/learn/lecture/20732940
Deployment | Kubernetes
https://kubernetes.io/ja/docs/concepts/workloads/controllers/deployment/
参考:
コンテナのマニフェストを用意してデプロイする例
© 2021 NTT DATA CORPORATION 17
© 2021 NTT DATA CORPORATION
どのようにコンテナを学ぶか
コンテナ自体の理解
0. コンテナの概念を学ぶ
1. Dockerを使ってコンテナをデプロイしてみる
Kubernetesの理解
2. 利用者目線の理解
Kubernetes上にコンテナをデプロイしてみる
3. 管理者目線の理解
Kubernetesクラスターを自分で構築してみる
© 2021 NTT DATA CORPORATION 18
© 2021 NTT DATA CORPORATION
kubeadmを用いて、手元の環境にクラスタ構築
クラスタ内部の構造を理解する目的がある。
Kubernetesクラスターを自分で構築してみる
Master
Worker Worker
Cluster
Worker
master node@ # kubeadm init → マスターノードをセットアップ
worker node@ # kubeadm join → ワーカーノードがクラスタ参加
参考:kubeadmを使用したクラスターの作成 | Kubernetes
https://kubernetes.io/ja/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/
© 2021 NTT DATA CORPORATION 19
© 2021 NTT DATA CORPORATION
Kubernetesクラスターを自分で構築してみる
作成したら、Kubernetesのコンポーネントが動いているか確認
自分で作ったクラスタでマニフェストを適用しても動くか確認
$ kubectl apply -f deployment.yaml
deployment.apps/nginx-deployment created
# kubectl get pod –n kube-system
NAME READY STATUS RESTARTS AGE
kube-apiserver-controlplane 1/1 Running 0 100s
kube-controller-manager-controlplane 1/1 Running 0 100s
kube-proxy-5mqlx 1/1 Running 0 100s
・・・
細々した設定が多くて意外と大変。
© 2021 NTT DATA CORPORATION 20
© 2021 NTT DATA CORPORATION
コンテナの概要に触れ、
どのような経路でコンテナを学んだかロードマップを示した。
コメント
・実際に手を動かしてデプロイや基盤構築を行うことで各サービスの理解が深まる。
・Udemyの講座は図解が分かりやすく、イメージが湧きやすいのでオススメ。
・手を動かして学んだ後、コンテナの概要を振り返るとより理解が深まる。
本資料に記載されている会社名、商品名、またはサービス名は、各社の商標登録または商標です。
まとめ
コンテナ自体の理解
0. コンテナの概念を学ぶ
1. Dockerを使ってコンテナをデプロイしてみる
Kubernetesの理解
2. 利用者目線の理解
Kubernetes上にコンテナをデプロイしてみる
3. 管理者目線の理解
Kubernetesクラスターを自分で構築してみる
© 2021 NTT DATA CORPORATION

0から始めるコンテナの学び方(Kubernetes Novice Tokyo #14 発表資料)

  • 1.
    © 2021 NTTDATA CORPORATION 2021年10月19日 NTTデータ 高畑 憲 0から始めるコンテナの学び方 Kubernetes Novice Tokyo #14
  • 2.
    © 2021 NTTDATA CORPORATION 2 © 2021 NTT DATA CORPORATION 自己紹介・発表概要 自己紹介 高畑憲 NTTデータ所属 1年目社員 2ヶ月間Docker、Kubernetesの勉強を行った。 ターゲット コンテナを学び始める人、コンテナ指導者 目的 これからコンテナを学び始める人に、自分の経験や道筋を伝える。
  • 3.
    © 2021 NTTDATA CORPORATION 3 コンテナの概要
  • 4.
    © 2021 NTTDATA CORPORATION 4 © 2021 NTT DATA CORPORATION コンテナとは ・アプリ本体や必要なライブラリをパッケージングした仮想化技術。 ・VMとは異なりOSを共有している。 コンテナの特徴 ・軽量でありVMと比べて起動が早い。 ・環境+アプリをまとめて扱える。どこでも同じ環境を作る事ができる。 コンテナとは ゲストOS不要 ゲストOS不要 ゲストOS不要
  • 5.
    © 2021 NTTDATA CORPORATION 5 © 2021 NTT DATA CORPORATION 軽量で早い→リリースの作業量が減る ・他の業務に稼働を割ける。 ・アジャイル開発のような頻繁なリリースが可能 → ビジネス拡大の高速化 環境とアプリをまとめて扱う→コスト、ミスが減る ・環境差異によるリリースミスが減る ・構築、破棄を気軽に行える。切り戻し作業が不要。 コンテナのメリット コンテナ イメージ 開発環境 イメージ作成 テスト環境 本場環境 複製
  • 6.
    © 2021 NTTDATA CORPORATION 6 © 2021 NTT DATA CORPORATION Docker コンテナのデプロイを行う代表的なツール dockerコマンドを使用して、気軽にコンテナをデプロイできる。 コンテナの基 コンテナの設計図 (雛形に変更を加える) コンテナの雛形
  • 7.
    © 2021 NTTDATA CORPORATION 7 © 2021 NTT DATA CORPORATION コンテナの管理が苦手 Dockerはコンテナのビルドと起動に特化。 →複数台コンテナの管理や、スケール、オートヒーリングが難しい コンテナ基盤としての可用性が確保できない Docker単体では、基本的に一つのサーバーで コンテナを動かすことを想定している。 →Dockerホストが落ちた場合に困る。 そこで、コンテナやコンテナホストを総合的に管理する仕組みが必要。 代表的なツールがKubernetes 。 Dockerの課題
  • 8.
    © 2021 NTTDATA CORPORATION 8 © 2021 NTT DATA CORPORATION Kubernetesとは コンテナのオーケストレーションツール、コンテナの管理者。 特徴 複数台のコンテナ、コンテナホストの管理などDockerの課題を解決 Kubernetesとは① Kubernetes Kubernetes コンテナ1 コンテナ2 コンテナホスト コンテナ3 コンテナ4 コンテナホスト コンテナ5 コンテナ6 コンテナホスト
  • 9.
    © 2021 NTTDATA CORPORATION 9 © 2021 NTT DATA CORPORATION Kubernetesの構成 Kubernetesとは② マスターノード、ワーカーノード複数台で基盤として使うことができる →この集合をクラスタと呼ぶ。 マニフェスト(コンテナの起動定義)を用いてPod(≒コンテナ)をデプロイ。 Pod Master Worker Worker Worker Cluster Manifest Dev.
  • 10.
    © 2021 NTTDATA CORPORATION 10 どのようにコンテナを学ぶか
  • 11.
    © 2021 NTTDATA CORPORATION 11 © 2021 NTT DATA CORPORATION どのようにコンテナを学ぶか コンテナ自体の理解 0. コンテナの概念を学ぶ 1. Dockerを使ってコンテナをデプロイしてみる Kubernetesの理解 2. 利用者目線の理解 Kubernetes上にコンテナをデプロイしてみる 3. 管理者目線の理解 Kubernetesクラスターを自分で構築してみる
  • 12.
    © 2021 NTTDATA CORPORATION 12 © 2021 NTT DATA CORPORATION 0. コンテナの概念を学ぶ 前半で紹介したような コンテナの概要、特徴、メリットなどを調査して、 自分の言葉でパワポにまとめる。→有識者にFBを貰う。 アウトプットによって整理される上、 後で見返したり、発表資料に使えるのでおすすめ。
  • 13.
    © 2021 NTTDATA CORPORATION 13 © 2021 NTT DATA CORPORATION どのようにコンテナを学ぶか コンテナ自体の理解 0. コンテナの概念を学ぶ 1. Dockerを使ってコンテナをデプロイしてみる Kubernetesの理解 2. 利用者目線の理解 Kubernetes上にコンテナをデプロイしてみる 3. 管理者目線の理解 Kubernetesクラスターを自分で構築してみる
  • 14.
    © 2021 NTTDATA CORPORATION 14 © 2021 NTT DATA CORPORATION DockerfileやDocker Compose、Dockerネットワークも軽く試してみると良い。 参考: Orientation and setup | Docker Documentation https://docs.docker.com/get-started/ 【Docker入門】開発環境を構築する6ステップ https://kitsune.blog/docker-study 1. Dockerを使ってコンテナをデプロイしてみる $ docker run -d -p 8080:80 nginx $ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS 8b30c12ae823 nginx "/docker-entrypoint.…" 37 seconds ago Up 32 seconds 0.0.0.0:8080->80/tcp UbuntuにDockerをインストールし、 webサーバーのコンテナをデプロイしてみる Ubuntu Playgroundを使うと環境を用意せずに検証できる https://www.katacoda.com/courses/ubuntu/playground
  • 15.
    © 2021 NTTDATA CORPORATION 15 © 2021 NTT DATA CORPORATION 利用者目線と管理者目線 コンテナ自体の理解 0. コンテナの概念を学ぶ 1. Dockerを使ってコンテナをデプロイしてみる Kubernetesの理解 2. 利用者目線の理解 Kubernetes上にコンテナをデプロイしてみる 3. 管理者目線の理解 Kubernetesクラスターを自分で構築してみる Master Worker Worker Worker 利用者 Cluster 管理者 クラスタ作成 コンテナ作成
  • 16.
    © 2021 NTTDATA CORPORATION 16 © 2021 NTT DATA CORPORATION Udemyがおすすめ。ハンズオンを行い、Pod・Serviceの概念や クラスタの基本的な使い方を学ぶ。 ハンズオンではKubernetes Playground https://www.katacoda.com/courses/kubernetes/playground を用いると環境を用意せずに検証できる。 Kubernetes上にコンテナをデプロイしてみる $ kubectl apply -f deployment.yaml deployment.apps/nginx-deployment created $ kubectl get pod NAME READY STATUS RESTARTS AGE nginx-deployment-6b474476c4-bxrnw 1/1 Running 0 100s nginx-deployment-6b474476c4-k5xsh 1/1 Running 0 100s nginx-deployment-6b474476c4-s4wf9 1/1 Running 0 100s deployment.yaml apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment labels: app: nginx spec: replicas: 3 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:1.14.2 ports: - containerPort: 80 コンテナの台数 イメージ指定 ポート番号 米シリコンバレーDevOps監修!超Kubernetes完全入門(2020) 【優しい図解説とハンズオン】 (udemy.com) https://ntttechjp.udemy.com/course/kubernetes-docker-container-devops-kanzen- nyumon/learn/lecture/20732940 Deployment | Kubernetes https://kubernetes.io/ja/docs/concepts/workloads/controllers/deployment/ 参考: コンテナのマニフェストを用意してデプロイする例
  • 17.
    © 2021 NTTDATA CORPORATION 17 © 2021 NTT DATA CORPORATION どのようにコンテナを学ぶか コンテナ自体の理解 0. コンテナの概念を学ぶ 1. Dockerを使ってコンテナをデプロイしてみる Kubernetesの理解 2. 利用者目線の理解 Kubernetes上にコンテナをデプロイしてみる 3. 管理者目線の理解 Kubernetesクラスターを自分で構築してみる
  • 18.
    © 2021 NTTDATA CORPORATION 18 © 2021 NTT DATA CORPORATION kubeadmを用いて、手元の環境にクラスタ構築 クラスタ内部の構造を理解する目的がある。 Kubernetesクラスターを自分で構築してみる Master Worker Worker Cluster Worker master node@ # kubeadm init → マスターノードをセットアップ worker node@ # kubeadm join → ワーカーノードがクラスタ参加 参考:kubeadmを使用したクラスターの作成 | Kubernetes https://kubernetes.io/ja/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/
  • 19.
    © 2021 NTTDATA CORPORATION 19 © 2021 NTT DATA CORPORATION Kubernetesクラスターを自分で構築してみる 作成したら、Kubernetesのコンポーネントが動いているか確認 自分で作ったクラスタでマニフェストを適用しても動くか確認 $ kubectl apply -f deployment.yaml deployment.apps/nginx-deployment created # kubectl get pod –n kube-system NAME READY STATUS RESTARTS AGE kube-apiserver-controlplane 1/1 Running 0 100s kube-controller-manager-controlplane 1/1 Running 0 100s kube-proxy-5mqlx 1/1 Running 0 100s ・・・ 細々した設定が多くて意外と大変。
  • 20.
    © 2021 NTTDATA CORPORATION 20 © 2021 NTT DATA CORPORATION コンテナの概要に触れ、 どのような経路でコンテナを学んだかロードマップを示した。 コメント ・実際に手を動かしてデプロイや基盤構築を行うことで各サービスの理解が深まる。 ・Udemyの講座は図解が分かりやすく、イメージが湧きやすいのでオススメ。 ・手を動かして学んだ後、コンテナの概要を振り返るとより理解が深まる。 本資料に記載されている会社名、商品名、またはサービス名は、各社の商標登録または商標です。 まとめ コンテナ自体の理解 0. コンテナの概念を学ぶ 1. Dockerを使ってコンテナをデプロイしてみる Kubernetesの理解 2. 利用者目線の理解 Kubernetes上にコンテナをデプロイしてみる 3. 管理者目線の理解 Kubernetesクラスターを自分で構築してみる
  • 21.
    © 2021 NTTDATA CORPORATION

Editor's Notes

  • #4  ここからはどうやってコンテナを学んでいったか説明します。
  • #5 起動/停止が高速。スケールも容易でクラウドネイティブとの親和性が高い。 開発スピードが向上し、DevOpsやCI/CDに最適。
  • #8 単一ホスト内複数コンテナのやり取り→可能 複数マシン上で外側とのやりとりにNATが必要 Dockerはホスト間の連携が煩雑になるため容易にスケールアウトできない
  • #9  新機能をシームレスに提供開始、ローリングアップデート 一つ停止一つ新しいもの、を順番に繰り返す コードの不具合などダウンタイムなしにバージョンアップできる 稼働中にアプリをスケールする水平の自動スケール CPU稼働率の閾値でコンテナ数を増減 複数ホスト上の複数コンテナへのロードバランシング、ワークロードの分散 認証認可、資源の監視、複数ホスト複数コンテナ上のログ一括管理
  • #10 yamlは後で説明します Podに内包するもの 共有ストレージ(ボリューム) ネットワーキング(クラスターに固有のIPアドレス) コンテナのイメージバージョンや使用するポートなどの、各コンテナをどう動かすかに関する情報
  • #11  ここからはどうやってコンテナを学んでいったか説明します。
  • #16 この後具体的に説明していきます 一度経験した自分ならではの 学ぶ理由、経験した所感、気づきも足してみる
  • #18 この後具体的に説明していきます 一度経験した自分ならではの 学ぶ理由、経験した所感、気づきも足してみる
  • #19 ざっくりした説明、こまごました設定がある。
  • #21  ・パワポは半分好み 残りは共通的わかりやすさ  改善の余地あり ベストでやってみる、話も  発表に対する FB twitter、質問 ・人の発表と比べる 伊藤さん、関谷さんのいいところ悪いところ