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

コンテナ若葉マーク勉強会資料.pdf

Noriyuki TAKEI
June 29, 2020
600

 コンテナ若葉マーク勉強会資料.pdf

Noriyuki TAKEI

June 29, 2020
Tweet

More Decks by Noriyuki TAKEI

Transcript

  1. © SIOS Technology, Inc. All rights Reserved. About me 3

    Internal Only BCPVUNF Noriyuki TAKEI ෢Ҫ ٓߦ Information • サイオステクノロジー株式会社 • クラウドネイティブアプリケーション • 千葉県在住 Favorites • Azure • Squash • Sweets blog https://tech-lab.sios.jp/ core skill Azure Kubernetes Service Docker
  2. © SIOS Technology, Inc. All rights Reserved. コンテナとは︖ 5 Internal

    Only ίϯςφͱ͸ʁ コンテナとは、 平たく⾔ってしまえば、 単なるプロセスです。
  3. © SIOS Technology, Inc. All rights Reserved. コンテナとは︖ 6 Internal

    Only Կ͕Ͱ͖Δͷʁ OSの中にOSが⽴てられます。 $FOU04 ϗετ04 8FCαʔόʔ༻$FOU04 σʔλϕʔε༻$FOU04 ϑΝΠϧαʔόʔ༻$FOU04 似たようなのに 仮想化ってあっ たような・・・。
  4. © SIOS Technology, Inc. All rights Reserved. コンテナとは︖ 7 Internal

    Only Ծ૝Խͱͷҧ͍ ホストOS HyperVisor OS OS プロセス プロセス プロセス プロセス Docker Engine プロセス プロセス プロセス プロセス Ծ૝Խ ίϯςφ プロセス プロセス プロセス プロセス コンテナはOSが 不要な分だけ ⾼速︕︕
  5. © SIOS Technology, Inc. All rights Reserved. コンテナとは︖ 8 Internal

    Only Ծ૝Խͱͷҧ͍ ホストOS HyperVisor OS OS プロセス プロセス プロセス プロセス Docker Engine プロセス プロセス プロセス プロセス プロセス プロセス プロセス プロセス カーネル Docker上のプロセスとホストOS上のプロセスはカーネルを共有します。
  6. © SIOS Technology, Inc. All rights Reserved. コンテナとは︖ 9 Internal

    Only 以下のような2つのアプリケーションを⼀つの ホストOS上に構築することを考えてみます。 var www html / <?php echo “hoge”; ?> ΞϓϦ app.phpの 所有者は www-data(id=33) app.php var www html / <?php echo “fuga”; ?> ΞϓϦ app.phpの 所有者は www-data(id=33) app.php
  7. © SIOS Technology, Inc. All rights Reserved. コンテナとは︖ 10 Internal

    Only ホストOS HyperVisor OS var www html / <?php echo “hoge”; ?> ΞϓϦ app.phpの 所有者は www-data(id=33) app.php OS var www html / <?php echo “fuga”; ?> ΞϓϦ app.phpの 所有者は www-data(id=33) app.php 仮想化だったら簡単︕︕
  8. © SIOS Technology, Inc. All rights Reserved. コンテナとは︖ 11 Internal

    Only ホストOS Docker Engine var www html / <?php echo “hoge”; ?> ΞϓϦ app.phpの 所有者は www-data(id=33) app.php var www html / <?php echo “fuga”; ?> ΞϓϦ app.phpの 所有者は www-data(id=33) app.php コンテナではどうやるの︖ ユーザー名 かぶってるし ファイル名 かぶってるし
  9. © SIOS Technology, Inc. All rights Reserved. コンテナとは︖ 12 Internal

    Only そこで コンテナでは超重要な概念である の出番です。 namespace
  10. © SIOS Technology, Inc. All rights Reserved. コンテナとは︖ 13 Internal

    Only OBNFTQBDFͱ͸ʁ プロセス、ファイル構造、ユーザーID、グループIDなどを⼀つのOSの中で分離す る技術である。 プログラム⾔語の中ではよく登場する概念である。Javaのパッケージと⾔う概念と にているものがあり、同⼀の名称を使いたい場合(例えばUser.java)、namespace を分けると実現可能となる。 package jp.sios.funcA User.java package jp.sios.funcB User.java コンテナのコアテクノロジーであるnamespaceという技術は2006年あたりにLinux カーネルに実装された技術であり、最新の技術ではない。
  11. © SIOS Technology, Inc. All rights Reserved. コンテナとは︖ 14 Internal

    Only ホストOS apache(親) apache(⼦) apache(⼦) pid 1 / www html ファイル システム initプロセス pid 2 プロセス namespace A apache(親) apache(⼦) apache(⼦) / www html プロセス ファイル システム pid 1 pid 3 namespace B pid 2 pid 3 pid 2 pid 3 namespaceが異なれば同 じファイル名やディレクト リが⼀つのOS上に作れる。 pid 1
  12. © SIOS Technology, Inc. All rights Reserved. コンテナとは︖ 15 Internal

    Only ホストOS apache(親) apache(⼦) apache(⼦) pid 1 / www html ファイル システム initプロセス pid 2 プロセス namespace A apache(親) apache(⼦) apache(⼦) / www html プロセス ファイル システム pid 1 pid 1 pid 3 namespace B pid 2 pid 3 pid 2 pid 3 このnamespace で区切られた部分 がコンテナ
  13. © SIOS Technology, Inc. All rights Reserved. コンテナとは︖ 16 Internal

    Only では namespace(コンテナ) を 作ってみよう
  14. © SIOS Technology, Inc. All rights Reserved. コンテナとは︖ 17 Internal

    Only # ps ax PID TTY STAT TIME COMMAND 1 ? Ss 0:03 /sbin/init 2 ? S 0:00 [kthreadd] 4 ? I< 0:00 [kworker/0:0H] 6 ? I< 0:00 [mm_percpu_wq] 7 ? S 0:00 [ksoftirqd/0] 8 ? I 0:01 [rcu_sched] ………… # unshare --mount-proc -p --fork /bin/bash # ps ax PID TTY TIME CMD 1 pts/0 00:00:00 bash 11 pts/0 00:00:00 ps namespaceを作成する前は、 プロセスがたくさんあります。 namespace作成にはunshareコマンドを使います。 namespaceを作成したあと は、プロセス空間が別になる ので、bashのプロセスしか ないです。
  15. © SIOS Technology, Inc. All rights Reserved. コンテナとは︖ 18 Internal

    Only 参考︓コンテナ技術⼊⾨ https://employment.en-japan.com/engineerhub/entry/2019/02/05/103000 $ ROOTFS=$(mktemp -d) $ CID=$(sudo docker container create centos:centos7) $ sudo docker container export $CID | tar -x -C $ROOTFS $ ln -s /usr/local/bin/bash $ROOTFS/bin/bash $ sudo docker container rm $CID $ UUID=$(uuidgen) $ sudo cgcreate -t $(id -un):$(id -gn) -a $(id -un):$(id -gn) -g cpu,memory:$UUID $ cgset -r memory.limit_in_bytes=10000000 $UUID $ cgset -r cpu.cfs_period_us=1000000 $UUID $ cgset -r cpu.cfs_quota_us=300000 $UUID $ CMD="/bin/sh" $ cgexec -g cpu,memory:$UUID \ unshare -muinpfr /bin/sh -c " mount -t proc proc $ROOTFS/proc && touch $ROOTFS$(tty); mount --bind $(tty) $ROOTFS$(tty) && touch $ROOTFS/dev/pts/ptmx; mount --bind /dev/pts/ptmx $ROOTFS/dev/pts/ptmx && ln -sf /dev/pts/ptmx $ROOTFS/dev/ptmx && touch $ROOTFS/dev/null && mount --bind /dev/null $ROOTFS/dev/null && /bin/hostname $UUID && exec capsh --chroot=$ROOTFS --drop=cap_sys_chroot -- -c 'exec $CMD' " ファイルシステムやユーザー空間まで分けた実⽤的なCentOS7のnamespace(コ ンテナ)を作ります。
  16. © SIOS Technology, Inc. All rights Reserved. コンテナとは︖ 19 Internal

    Only ホストOS namespace / 先のコマンドは、以下の2つのことを 実施しています。 bin etc var log spool ・・・ / bin etc var log spool ・・・ CentOS7の動作 に必要なファイ ルを取得 namespaceの作 成
  17. © SIOS Technology, Inc. All rights Reserved. コンテナとは︖ 20 Internal

    Only こんなにたくさんの コマンド打つの めんどくさい・・・
  18. © SIOS Technology, Inc. All rights Reserved. コンテナとは︖ 21 Internal

    Only Dockerを使えば解決 たった1⾏のコマンドで、 先程のダラダラ⻑いコマンドと同じことが 実現出来ます。 $ docker run -it centos:centos7 /bin/bash
  19. © SIOS Technology, Inc. All rights Reserved. コンテナとは︖ 22 Internal

    Only namespaceの作成その他コンテナ作成に必要な もろもろのコマンドの簡略化 コンテナを作成するの必要なOSのイメージを Docker Hubからダウンロード つまり Dockerで実現できることは 主に以下の2つ
  20. © SIOS Technology, Inc. All rights Reserved. コンテナとは︖ 24 Internal

    Only %PDLFS)VCͱ͸ʁ %PDLFS)VC CentOS 6 / bin etc ・・・ 7 / bin etc ・・・ 8 / bin etc ・・・ Ubuntu 16.0 / bin etc ・・・ 18.0 / bin etc ・・・ 19.0 / bin etc ・・・ etc ・・・ bin etc ・・・ 8 / bin etc ・・・ CentOS ホストOS namespace $ docker run -it centos:centos8 /bin/bash ダウンロードしてくるイメー ジを指定 イメージをダウ ンロード 1$
  21. © SIOS Technology, Inc. All rights Reserved. コンテナとは︖ 25 Internal

    Only Dockefileを 使うと コンテナをカスタマイズ できます︕︕
  22. © SIOS Technology, Inc. All rights Reserved. コンテナとは︖ 26 Internal

    Only Dockerfile FROM centos:centos7 RUN yum –y install httpd CentOS7のイメージにApacheをインストールしてみます。そのた めのDockerfileは以下のとおりです。 CentOS7のイメージをダウンロード Apacheをインストール
  23. © SIOS Technology, Inc. All rights Reserved. コンテナとは︖ 27 Internal

    Only %PDLFS)VC CentOS 6 / bin etc ・・・ 7 / bin etc ・・・ 8 / bin etc ・・・ etc ・・・bin etc ・・・ 7 / bin etc ・・・ CentOS ホストOS namespace $ docker build -t web. イメージをダウ ンロード Dockerfileを作成し、以下のコマンドを実⾏すると、CentOS7のイ メージ上にApacheがインストールされたコンテナが作成されます。 1$ var httpd Apacheの インストール
  24. © SIOS Technology, Inc. All rights Reserved. コンテナとは︖ 28 Internal

    Only etc ・・・bin etc ・・・ 7 / bin etc ・・・ CentOS ホストOS namespace $ docker push XXX.azurecr.io/web:1.0 さらに作成したコンテナをもとにプライベートリポジトリにオリジナ ルイメージとしてプッシュ出来ます。 1$ var httpd ϓϥΠϕʔτ ϦϙδτϦ web etc ・・・bin etc ・・・ 1.0 / bin etc ・・・ var httpd
  25. © SIOS Technology, Inc. All rights Reserved. コンテナとは︖ 29 Internal

    Only さらにプライベートリポジトリにプッシュしたイメージを他の開発者 に配ることも出来ます。 ϓϥΠϕʔτ ϦϙδτϦ web etc ・・・bin etc ・・・ 1.0 / bin etc ・・・ var httpd ։ൃऀ" ։ൃऀ# ։ൃऀ$
  26. © SIOS Technology, Inc. All rights Reserved. コンテナとは︖ 30 Internal

    Only Dockerfile FROM centos:centos7 ENV idp_version=3.4.6 # Inatall the libraries neccesary for building Shibboleth IdP RUN yum -y update && \ yum -y install wget java-1.8.0-openjdk # Download Shibboleth IdP RUN wget -q https://shibboleth.net/downloads/identity-provider/$idp_version/shibboleth-identity- provider-$idp_version.tar.gz && \ tar -zxvf shibboleth-identity-provider-$idp_version.tar.gz -C /opt && \ ln -s /opt/shibboleth-identity-provider-$idp_version/ /opt/shibboleth-idp COPY bin/ /usr/local/bin/ RUN chmod 750 /usr/local/bin/init-idp.sh もっと複雑な環境を構築するためにDockerfileです。
  27. © SIOS Technology, Inc. All rights Reserved. 仮想化との違い 32 Internal

    Only 開発環境の構築を例に 仮想化との違いを 考えてみます。
  28. © SIOS Technology, Inc. All rights Reserved. 仮想化との違い 33 Internal

    Only Ծ૝Խͷ৔߹ package jp.sios.funcB User.java 開発環境 システム管理者 システム構成が変更になったので、開発 エンジニアの⽅は、この⼿順書に従って、 環境を変更して下さーい。
  29. © SIOS Technology, Inc. All rights Reserved. 仮想化との違い 34 Internal

    Only Ծ૝Խͷ৔߹ 開発環境 あれ、開発環境がうまく動かない・・・。 あっ、⼿順書通りに実施していなかっ た・・・。 システム管理者
  30. © SIOS Technology, Inc. All rights Reserved. 仮想化との違い 35 Internal

    Only ίϯςφͷ৔߹ 開発環境 Dockerイメージダウ ンロード ϓϥΠϕʔτ ϦϙδτϦ Dockerイメージから コンテナを⽣成 システム管理者 システム構成が変更になっ たDockerイメージをレポジ トリからにプッシュ
  31. © SIOS Technology, Inc. All rights Reserved. 仮想化との違い 36 Internal

    Only コンテナを⽤いると開発環境の構築において以下のようなメリットが あります。 開発者のPCにDockerさえインストールされていれ ば、イメージをダウンロードするだけで環境ができ あがるので、ミスがない コンテナはカーネルを含まず軽量なのでダウンロー ドが速い。よって可搬性がよい。
  32. © SIOS Technology, Inc. All rights Reserved. 仮想化との違い 37 Internal

    Only 開発環境だけでなく 本番環境にも コンテナを持っていたら 便利だと思いませんか︖
  33. © SIOS Technology, Inc. All rights Reserved. 仮想化との違い 38 Internal

    Only 開発環境 Dockerイメージダウ ンロード ϓϥΠϕʔτ ϦϙδτϦ 修正したDockerイ メージをプッシュ システム管理者 システム構成が変更になっ たDockerイメージをレポジ トリからにプッシュ 本番環境 Dockerイメージから 本番環境のコンテナ を⽣成 ᶃ ᶄ ᶅ ᶆ
  34. © SIOS Technology, Inc. All rights Reserved. 仮想化との違い 39 Internal

    Only 開発環境 ϓϥΠϕʔτ ϦϙδτϦ ①〜④はOSまで含む環境 なので、開発環境でも本番 環境でも、その動作に違い はない。 システム管理者 本番環境 ᶃ ᶄ ᶅ ᶆ
  35. © SIOS Technology, Inc. All rights Reserved. 仮想化との違い 40 Internal

    Only つまり、本番環境にコンテナを⽤いると、以下のようなメリットがあ ります。 本番環境も検証環境も、OSまで含めた同じイメー ジを使うので、全く同じように動作する。仮想化で ありがちな、本番環境と検証環境の動作の差異がな い。 コンテナはホストOSのカーネルを共有し、OSのイ メージのみのため、サイズが⼩さく、可搬性がよい。 リポジトリからのダウンロードもすぐに終わる。
  36. © SIOS Technology, Inc. All rights Reserved. 仮想化との違い 41 Internal

    Only でも、本番環境では いろんなことを 考慮しなければ なりません。
  37. © SIOS Technology, Inc. All rights Reserved. 仮想化との違い 42 Internal

    Only 例えば、、、 負荷分散 無停⽌更新 監視 ネットワーク管理(ルーティングなど) 他にもたくさん、、、、
  38. © SIOS Technology, Inc. All rights Reserved. 仮想化との違い 43 Internal

    Only それ、全部 Kubernetes が解決します︕︕
  39. © SIOS Technology, Inc. All rights Reserved. 仮想化との違い 44 Internal

    Only 開発環境 ϓϥΠϕʔτ ϦϙδτϦ ここをKubernetesにします。 システム管理者 Kubernetes ᶃ ᶄ ᶅ ᶆ
  40. © SIOS Technology, Inc. All rights Reserved. Kubernetesとは︖ 46 Internal

    Only Kubernetesの基本原則は以下のとおりです。 Immutable Infrastructure 宣⾔的設定 変更を積み重ねず全て作り直す。例えば何か⼀箇所で も変更があった場合は、その箇所だけ修正するのでは なく、全て作り直す。 設定ファイルによって⼀旦構築したら、何が起こって もその状態を維持する ⾃⼰修復 障害が発⽣しても⾃分で勝⼿に修復する。
  41. © SIOS Technology, Inc. All rights Reserved. Kubernetesとは︖ 47 Internal

    Only Kubernetesとは、本番環境でコンテナを動かすための様々な機能を 提供するOSSです。 オートスケール スケジューリング セルフヒーリング ロードバランシング ローリングアップデート Infrastructure as Code
  42. © SIOS Technology, Inc. All rights Reserved. Kubernetesとは︖ 48 Internal

    Only Kubernetesの基本的な構成は以下のとおりです。 Pod コンテナ コンテナ Pod コンテナ コンテナ Master Node Node ・・・ ・・・
  43. © SIOS Technology, Inc. All rights Reserved. Kubernetesとは︖ 49 Internal

    Only Master Node 各Nodeの状態を管理するサーバー。例えば、各Node やPodの状態を常に監視し、どこにPodを配置したら よいかなどを管理する。 Podが配置されるサーバー。 Pod コンテナを論理的にまとめた単位。基本的には1Pod1 コンテナであることが多い。
  44. © SIOS Technology, Inc. All rights Reserved. Kubernetesとは︖ 50 Internal

    Only *OGSBTUSVDUVSFBT$PEF Kubernetesでは、すべての構成をyaml形式のファイルで⽣成します。 apiVersion: apps/v1beta1 kind: Deployment metadata: name: techlab-admin spec: replicas: 2 selector: matchLabels: app: techlab-admin strategy: type: RollingUpdate rollingUpdate: maxSurge: 1 maxUnavailable: 0 template: metadata: labels: app: techlab-admin spec: containers: - name: wordpress image: XXXXXX.azurecr.io/techblog/wordpress:php7.4 ・・・
  45. © SIOS Technology, Inc. All rights Reserved. Kubernetesとは︖ 51 Internal

    Only ϩʔυόϥϯγϯά httpd httpd httpd httpd httpd httpd httpd httpd httpd Node1 Node2 Node3 httpd …コンテナ ロードバランサー
  46. © SIOS Technology, Inc. All rights Reserved. Kubernetesとは︖ 52 Internal

    Only Φʔτεέʔϧ httpd httpd httpd httpd httpd httpd httpd httpd httpd Node1 Node2 Node3 httpd …コンテナ httpd httpd httpd httpd httpd httpd httpd httpd httpd httpd httpd httpd httpd httpd httpd httpd httpd httpd リクエスト数や負荷に応じ てコンテナを増減
  47. © SIOS Technology, Inc. All rights Reserved. Kubernetesとは︖ 53 Internal

    Only εέδϡʔϦϯά httpd httpd httpd httpd httpd httpd httpd httpd httpd Node1(HDD) httpd …コンテナ DB DB DB DBなどディスクIOが多いコン テナを⾼速なディスク(SSD)の あるノードに配置する。 Node2(HDD) Node1(SSD)
  48. © SIOS Technology, Inc. All rights Reserved. Kubernetesとは︖ 54 Internal

    Only ηϧϑώʔϦϯά httpd httpd httpd httpd httpd httpd Node1(HDD) httpd …コンテナ Nodeに障害などが発⽣してコ ンテナ(プロセス)が停⽌した場 合、コンテナを再起動したり別 のNodeに移したりして、処理 を継続する。 Node2(HDD) Node1(SSD) java java java java java java
  49. © SIOS Technology, Inc. All rights Reserved. Kubernetesとは︖ 55 Internal

    Only ϩʔϦϯάΞοϓσʔτ httpd httpd httpd httpd httpd httpd Node1(HDD) httpd …コンテナ Node2(HDD) Node1(SSD) httpd httpd httpd httpd httpd httpd 旧 新 旧 旧 新 新 旧コンテナへのユーザーか らのアクセスを遮断 ᶃ 旧コンテナを停⽌ ᶄ 新コンテナを起動 ᶅ 新コンテナへのユーザー からのアクセスを開始 ᶆ
  50. © SIOS Technology, Inc. All rights Reserved. Kubernetesとは︖ 56 Internal

    Only ϩʔϦϯάΞοϓσʔτͷ಺෦తͳॲཧ terminationGracePeriodSeconds (40秒) preStop sleep 3 apachectl –k graceful-stop sleep 30 SIGTERM SIGKILL サービス 除外 ユーザーの接続 ユーザーの接続
  51. © SIOS Technology, Inc. All rights Reserved. Kubernetesとは︖ 57 Internal

    Only Kubernetesのアーキテク チャは以下のとおりです。 Pod コンテナ コンテナ kube-proxy kubelet API Server Scheduler Pod コンテナ コンテナ kube-proxy kubelet Master Node Node ・・・ ・・・ etcd コマンド群 kubectl apply kubectl delete kubectl …
  52. © SIOS Technology, Inc. All rights Reserved. Kubernetesとは︖ 58 Internal

    Only API Server Restのインタフェースを持つプロセスで、Kubernetes のリソース情報(Podに関する情報やCluster IPなど)を 管理します。kube-proxyやkubeletなどの全てのプロ セスは、このAPI Serverを介して、お互いの情報をや り取りします。 etcd kubernetesの情報を保存する⾼信頼分散KVSです。 API Serverは、Kubernetes稼働に必要な情報全てを etcdに情報を保存します。他にもflannel(Pod間の通信 を実現するVXLAN管理サービス)も利⽤します。 kubelet Podの⽣成や停⽌を⾏います。定期的にAPI Serverに問 い合わせて、⽣成や停⽌の数やタイミングを決めていま す。
  53. © SIOS Technology, Inc. All rights Reserved. Kubernetesとは︖ 59 Internal

    Only scheduler 各Nodeの空き状況や状態を監視して、その結果をAPI Serverを通じて、kubeletに伝える役割を持っています。 この情報を参考にして、kubeletはコンテナを⽣成しま す。例えば、後述しますが、ReplicaSetで複数台ス ケールするクラスタを作成したときは、このScheduler が開いているNodeにコンテナを作成するようkubelet に指⽰します。そして、コンテナは複数のNodeに配置 されます。 kube-proxy Cluster IPの管理を⾏います。Cluster IPとは、サービ スにアクセスするための代表的なIPアドレスになります。 Load BalancerなどのVIPに近いイメージです。このIP アドレスにアクセスすると、そのリクエストは複数の Podに分散されます。kube-proxyのお仕事は、定期的 にAPI Server経由でKubernetesのリソース情報にアク セスし、必要に応じてiptableseのルールを作成し、 iptablesの機能によって負荷分散を⾏います。
  54. © SIOS Technology, Inc. All rights Reserved. Kubernetesとは︖ 60 Internal

    Only kubectl kubectlなどのコマンド群です。ユーザーのインター フェースになります。このコマンドを使って、クラスタ を作成したり削除したりとか、Kubernetesにおける全 ての管理をします。実際はAPI Serverにリクエストを 投げています。
  55. © SIOS Technology, Inc. All rights Reserved. Kubernetesとは︖ 61 Internal

    Only API Server kubelet kube-proxy scheduler kubectl etcd 何か変更ないです か︖変更あればコン テナ構成を更新しま すよ。 何か変更ないです か︖変更あればネッ トワーク構成を更新 しますよ。 何か変更ないです か︖変更あればコン テナの配置変更しま すよ。 構成変更したいので、 宜しくお願いしま す︕︕ etcdさん、変更情報 記録してくださ い︕︕
  56. © SIOS Technology, Inc. All rights Reserved. Kubernetesとは︖ 62 Internal

    Only ネットワーク構成って どうなってますか︖
  57. © SIOS Technology, Inc. All rights Reserved. Kubernetesとは︖ 63 Internal

    Only Kubernetesのネットワーク構成は以下のとおりです︕︕ eth0 eth0 10.4.4.5 172.30.31.2 docker0 172.30.31.1 flannel.1 Cluster IP 10.254.236.167/32 eth0 eth0 172.30.91.1 docker0 172.30.91.1 flannel.1 172.30.31.0 10.4.4.7 172.30.91.0 node01 node02 Pod Pod httpd httpd Cluster IP 10.254.236.167/32
  58. © SIOS Technology, Inc. All rights Reserved. Kubernetesとは︖ 64 Internal

    Only 先にご紹介したKubernetesのネットワーク図の解説です。 Pod間のネットワークはflannelというVXLANを管理するソフトウェアに より、172.30.0.0/16というネットワーク空間を持ち、さらにそのネッ トワークをPodごとに24ビットのネットワーク空間に区切っている。 flannel.1というデバイスがVXLANデバイスである。 別ノード宛のパケットは、VXLANデバイスflannel.1によりVXLANヘッ ダが付与された形でカプセル化され、nodeのeth0を通り、別ノードに 届く。
  59. © SIOS Technology, Inc. All rights Reserved. Kubernetesとは︖ 65 Internal

    Only 先にご紹介したKubernetesのネットワーク図の解説です。 doker0という仮想ブリッジ(IPアドレスをもっている)があり、Podはこ のブリッジにつながっている。 Cluster IPというIPアドレスがある。ネットワークインターフェースは 持たず、iptablesの中で定義された仮想的なIPアドレスである。このIP アドレス宛のパケットは各nodeにロードバランスされる。
  60. © SIOS Technology, Inc. All rights Reserved. Kubernetesとは︖ 66 Internal

    Only Kubernetes・・・構築するもの多すぎ・・・運⽤・管理も⼤ 変・・・ masterサーバー Nodeが必要な分 だけ API Server kubelet scheduler ストレージ Dockerレジストリ ネットワーク
  61. © SIOS Technology, Inc. All rights Reserved. Kubernetesとは︖ 67 Internal

    Only すべてマネージドにおまかせしましょう︕︕ masterサーバー Nodeが必要な分 だけ API Server kubelet scheduler ストレージ Dockerレジストリ ネットワーク
  62. © SIOS Technology, Inc. All rights Reserved. Kubernetesとは︖ 68 Internal

    Only そこで Azure Kubernetes Service の出番です︕︕
  63. © SIOS Technology, Inc. All rights Reserved. Azure Kubernetes Service

    70 Internal Only Azure Kubernetes Serviceの特徴は以下のとおりです。 Masterサーバー、Nodeサーバーを構築する必要な し。管理も全ておまかせ。 Kubernetes⾃⾝のバージョンアップもGUIで⼀発 あとからNodeの追加も可能
  64. © SIOS Technology, Inc. All rights Reserved. Azure Kubernetes Service

    71 Internal Only GUIでらくらく環境構築︕︕
  65. © SIOS Technology, Inc. All rights Reserved. Azure Kubernetes Service

    72 Internal Only Kubernetesで実は⼀番⼤変なロギングもすでにサービスが⽤意され ている。
  66. © SIOS Technology, Inc. All rights Reserved. Azure Kubernetes Service

    73 Internal Only もし、負荷が増⼤しNodeの追加が必要になったときでも、簡単に増 減が可能。
  67. © SIOS Technology, Inc. All rights Reserved. Azure Kubernetes Service

    74 Internal Only 進化が速いKubernetesのバージョンアップもGUIで⼀発︕︕
  68. © SIOS Technology, Inc. All rights Reserved. Azure Kubernetes Service

    75 Internal Only Azure Kubernetes Serviceって 何で出来てるの︖
  69. © SIOS Technology, Inc. All rights Reserved. Azure Kubernetes Service

    76 Internal Only AKSクラスター Masterの機能 API Server Scheduler etcd Nodeの機能 Azure Load Balancer ・・・ Virtual Macihne (Virtual Machine Scale Sets) Virtual Netowork Azure Container Registry Public IP Address Log Analytics Azure DNS
  70. © SIOS Technology, Inc. All rights Reserved. Azure Kubernetes Service

    導⼊のポイント 78 Internal Only Kubernetesは 銀の弾丸ではありません。
  71. © SIOS Technology, Inc. All rights Reserved. Azure Kubernetes Service

    導⼊のポイント 79 Internal Only Kubernetesは複雑なシステムで 設計が⼤変です。 Kubernetesが適さいないサービスに 導⼊をすると、 運⽤管理の⼿間ばかり増えて 不幸になります・・・。
  72. © SIOS Technology, Inc. All rights Reserved. Azure Kubernetes Service

    導⼊のポイント 80 Internal Only Kubernetes導⼊可否判断のポイントは、以下の3つです。 その1︓頻繁な機能変更・追加があるかどうか︖ その2︓⼤量のリソースを消費するかどうか︖ その3︓急激なスケールアウトが必要かどうか︖
  73. © SIOS Technology, Inc. All rights Reserved. Azure Kubernetes Service

    導⼊のポイント 81 Internal Only ͦͷɿසൟͳػೳมߋɾ௥Ճ͕͋Δ͔Ͳ͏͔ʁ 頻繁な機能変更・追加がある場合は、Kubernetes向きのシステムです。 Kubernetesにはローリングアップデート、ブルーグリーンデプロイ、 カナリーデプロイ等、ユーザー影響なくデプロイできる機能が揃って いる。 1機能1コンテナ単位で開発を⾏う「マイクロサービスアーキテク チャ」を⽤いると、Kubernetesはコンテナ単位で管理ができるので、 運⽤が楽になる。例えば冒頭にご紹介した「スケジューリング」を⽤ いてIOの必要な機能は、SSDがあるノードに配置するなど。
  74. © SIOS Technology, Inc. All rights Reserved. Azure Kubernetes Service

    導⼊のポイント 82 Internal Only ͦͷɿେྔͷϦιʔεΛফඅ͢Δ͔Ͳ͏͔ʁ ⼤量のリソースを消費するサービスの場合、Kubernetesには向きません。 Kubernetesは、kube-proxyやkubelet等、Node上で様々なサービス が稼働するためオーバーヘッドが⾼く、⼤量にメモリやCPUを消費す るサービスを載せられません。 このような場合は、VirtualMachineのほうが、Kubernetesのような オーバーヘッドもないのでパフォーマンスを発揮できます。
  75. © SIOS Technology, Inc. All rights Reserved. Azure Kubernetes Service

    導⼊のポイント 83 Internal Only ͦͷɿٸܹͳεέʔϧΞ΢τ͕ඞཁ͔Ͳ͏͔ʁ 急激なスケールアウトが必要なサービスの場合は、Kubernetes向きのシス テムです。 Kubernetesは、コンテナという単位で稼働するため、サービスの起 動が⾼速で、スケールアップが得意です。簡単にスケールアウトしや すいサービスの場合、Kubernetes向きであると⾔えます。 逆に、スケールアップすることでしかパフォーマンス向上を図れない 場合、VirtualMachineやAppServiceのほうが向いています。
  76. © SIOS Technology, Inc. All rights Reserved. よく頂くご質問 85 Internal

    Only Kubernetesを本番で使う予定ないんだけ ど、、、 それでもKubernetesを学ぶ価値は⼗分にあ ります。Kubernetesには、今後のシステム 設計に必要なエッセンスがたくさん詰まって います。マイクロサービス、ブルーグリーン デプロイ、カナリーリリース、ステートレス な設計などです。Kubernetesを学ぶことに よって得た知識は、必ず他のシステムでも役 に⽴ちます︕︕
  77. © SIOS Technology, Inc. All rights Reserved. よく頂くご質問 86 Internal

    Only Kubernetesってむずかしいですか︖ Kubernetesはたくさんのコンポーネントが 複雑に絡み合い、そしてアプリケーションと インフラの両⽅の知識が必要になるので、難 しいと思われがちですが、そうではありませ ん。コンピューター理論の基本(TCP/IPや HTTPのプロトコル)さえ抑えておけば⼤丈夫 です。Kubernetesは最新の技術ですが、 ベースとなっているのは実にレガシーな技術 の塊です。
  78. © SIOS Technology, Inc. All rights Reserved. 最新事例 88 Internal

    Only 弊社技術ブログを Azure Kubernetes Serviceに 移⾏しました。
  79. © SIOS Technology, Inc. All rights Reserved. 最新事例 90 Internal

    Only 詳細は、弊社技術ブログを ご参照ください。 https://tech-lab.sios.jp/archives/18794 Azure Kubernetes Serviceで実現する超低予算 &(ほぼ)フルマネージド&本格的なWordPress環境
  80. © SIOS Technology, Inc. All rights Reserved. さいごに 92 Internal

    Only Internal Only https://tech-lab.sios.jp/ DockerやKubernetesについては、弊社技術ブログで も、より詳細な情報をお届けしております。
  81. © SIOS Technology, Inc. All rights Reserved. さいごに 93 Internal

    Only Azure Kubernetes Serviceで実現する超低予算&(ほぼ)フルマネージド&本格的な WordPress環境 https://tech-lab.sios.jp/archives/18794 ؔ࿈ϒϩά Azure Kubernetes Serviceで最速k8s https://tech-lab.sios.jp/archives/18536 実際の開発フローにおけるKubernetesの使い⽅ https://tech-lab.sios.jp/archives/7745 Kubernetesのネットワーク構成 https://tech-lab.sios.jp/archives/7857 【連載】世界⼀わかりみが深いコンテナ & Docker⼊⾨ https://tech-lab.sios.jp/archives/18811
  82. © SIOS Technology, Inc. All rights Reserved. さいごに 94 Internal

    Only 先々⽉発売のSoftware Designの VS Code + Docker関連の話題を執筆しました。