4.Kubernetesのアーキテクチャ
16
n Kubernetesクラスター
・Kubernetesクラスターはマスターノードとワーカーノード構成されています。
・マスターノードは「クラスター内のワーカーノードとPodを管理」するもの。
Control Planesとも呼ばれる。
・ワーカーノードは「コンテナであるPodをホスト」するもの。Nodesとも呼ばれる。
Control Planesを構成するコンポーネントがワーカーノードにも存在する。
Kubernetesクラスター
マスターノード ワーカーノード
4.Kubernetesのアーキテクチャ
24
n まとめ
・Kubernetesクラスタはマスターノードとワーカーノードで構成されている
・マスターノードは「クラスター内のワーカーノードとPodを管理」するもの
・ワーカーノードは「コンテナであるPodをホスト」するもの
・コントロールプレーンは複数のコンポーネントで構成されている
・Kubernetesはkubectlというコマンドで操作をする
・Kubernetesの設定ファイルはマニュフェストというyaml形式のファイルで定義される
Slide 25
Slide 25 text
5. Kubernetesのリソース
25
Slide 26
Slide 26 text
5. Kubernetesのリソース
26
n Kubernetesのリソース
・ Kubernetesクラスター上で稼働するもの
マニュフェストと呼ばれるyaml形式のファイルであるべき姿を定義し、その情報がetcd
に記録される
・Kubernetesを学習する上で押さえておきたいリソースについてお話しをしていきます
Slide 27
Slide 27 text
Kubernetesクラスターを論理的に分割するもの
27
Slide 28
Slide 28 text
5. Kubernetesのリソース
28
n NameSpace
・ Kubernetesクラスターの分離機能
・PodやServiceといったリソースをノードを跨いで論理的にグルーピングすることが出来る
ワーカーノード1
dev Namespace prd Namespace
ワーカーノード2
dev Namespace prd Namespace
Kubernetesクラスター
Slide 29
Slide 29 text
コンテナの起動に関連するもの
29
Slide 30
Slide 30 text
5. Kubernetesのリソース
30
n Pod
・ ⼀つ以上のコンテナから構成されているもの
・NginxとMySQLのメインコンテナを⼀つのPodに包括するような構成は推奨されていない
container(Nginx)
Pod
container(MySQL)
メインコンテナを⼀つのPodに包括する事は
結合度合いが⾼くなってしまうため、推奨されていない
Pod
container(MySQL)
Pod
container(Nginx)
コンテナを⼀つずつのPodとして
疎結合な構成とする事が推奨されている
Slide 31
Slide 31 text
5. Kubernetesのリソース
31
n Pod
・メインコンテナを補助するような役割を持ったコンテナを起動させるマルチコンテナが
利⽤されることはある
container(Nginx)
Pod
container(ログ転送)
メインコンテナのログを外部に出⼒
Pod
container(Nginx)
外部サービスとの連携などで
外部サービスが受け取れるようにデータを整形する
ストレージサーバー
container(データ整形)
外部サービスなど
サイドカーパターン アダプタパターン
Slide 32
Slide 32 text
5. Kubernetesのリソース
32
n ReplicaSet
・Podのレプリカを作成し、指定したPodの数を維持し続けるもの
・ノードやPodが停⽌した場合でも
指定したPodの数を維持し続けるように別のPodを⽴ち上げる
3つのPodを起動するように定義しておくと
障害が発⽣した場合でも
新しくPodを起動してくれる
ワーカーノード1
dev Namespace
ワーカーノード2
dev Namespace
ワーカーノード1
dev Namespace
ワーカーノード2
dev Namespace
Slide 33
Slide 33 text
5. Kubernetesのリソース
33
n Deployment
・ReplicaSetを管理する事で、
Rolling UpdateやRollBackといったデプロイ管理を提供するもの
・デフォルトの動作はRolling Updateとなるが、Recreateもサポートしている
・ReplicaSetはRolling Updateはサポートしていない
・Rolling Update中で幾つずつPodを更新するかなどの調整も出来る
Slide 34
Slide 34 text
5. Kubernetesのリソース
34
n Rolling Update
Podの数を3として起動しているReplicaSetでコンテナイメージを更新した場合
Old image ReplicaSet
New image ReplicaSet
Old image ReplicaSet
New image ReplicaSet
Old image ReplicaSet
New image ReplicaSet
Old image ReplicaSet
New image ReplicaSet
Slide 35
Slide 35 text
5. Kubernetesのリソース
35
n DeamonSet
・各ノードにPodを⼀つずつ配置するリソース
・各ノードに対して監視エージェントを導⼊する際などはDeamonSetとして配置する
DeamonSetとして監視エージェントを導⼊
ワーカーノードが増えると⾃動的に監視エージェントが
新しいワーカーノード上で起動する
ワーカーノード1
dev Namespace
ワーカーノード1
dev Namespace
ワーカーノード2
dev Namespace
Slide 36
Slide 36 text
5. Kubernetesのリソース
36
n StatefulSet
・状態を保持する必要があるアプリケーションを管理するためのもの
・Databaseなどのステートフルなアプリケーションで利⽤される
・StalefulSetが再作成されても同じストレージに接続される
永続ボリュームとPodで構成される
container(MySQL)
Pod
StatefulSet
ワーカーノード
ストレージ
5. Kubernetesのリソース
53
n RBACとは
・どの「リソース」にどんな「操作」を許可するのかというRoleを作成して
それを誰に紐づける(Binding)のかを定義してユーザーに対して権限を付与する
NameSpaceで限定 クラスター全体
Role Cluster Role
RoleBinding ClusterRoleBinding
Slide 54
Slide 54 text
5. Kubernetesのリソース
54
n RBACとは
ワーカーノード
dev Namespace prd Namespace
Kubernetesクラスター
Kubernetesクラスターにある全ての
Podの「create」,「delete」,「get」,「describe」を許可
Namespace「prd」に対して
Podの「get」,「describe」を許可
ユーザーA
ユーザーB
Slide 55
Slide 55 text
5. Kubernetesのリソース
55
n サービスアカウント
・Kubernetes内で管理されているアカウントで、
Podと紐づけることでPodからKubernetes APIを操作できる
・RBACを利⽤することでサービスアカウントへ任意で権限を設定可能
・全てのPodへのサービスアカウント付与が必須で、
何も指定しなければ「default」が⾃動で付与される
・AWSではIAM Roles for Service Accounts(IRSA)という仕組みがあり、
PodにAWSリソースへのアクセス権限を付与出来る
Slide 56
Slide 56 text
5. Kubernetesのリソース
56
n IRSA
IPアドレス:AAA
Pod
IPアドレス:BBB
Pod
nginx
nginx
Podのサービスアカウントに紐付けたS3バケット参照権限のあるロールを利⽤してS3へアクセス
S3
EKS
IAM
Role AWS STS
Permissions
https://aws.amazon.com/jp/blogs/news/diving-into-iam-roles-for-service-accounts/
Slide 57
Slide 57 text
本⽇お話するリソースの紹介は以上となります
57
Slide 58
Slide 58 text
5. Kubernetesのリソース
58
n まとめ
・Kubernetesには様々なリソースが存在する
・まずはPod,ReplicaSet,Deployment,Service,Ingressを抑える
・EKSではAWSリソースと連携する機能が⽤意されている
Slide 59
Slide 59 text
5. Kubernetesのリソース
59
n EKSのworkshop
AWSではEKSのworkshopが公開されています
https://www.eksworkshop.com/