Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
第96回 雲勉【オンライン:初心者向け】インフラエンジニアのKubernetes入門
Search
Y.Sumikura
February 17, 2023
Technology
0
170
第96回 雲勉【オンライン:初心者向け】インフラエンジニアのKubernetes入門
Y.Sumikura
February 17, 2023
Tweet
Share
More Decks by Y.Sumikura
See All by Y.Sumikura
第103回 雲勉【オンライン】インフラエンジニアにおける ChatGPT の便利な使い方と注意点
sumikurayurie1125
1
180
第101回 雲勉【オンライン】VPC から始めるネットワーク入門
sumikurayurie1125
0
130
第99回 雲勉【オンライン:初心者向け】Infrastructure as Code (IaC) 入門 〜TerraformとAnsibleを使ってみよう〜
sumikurayurie1125
0
170
第8回 雲勉LT【オンライン:中級者向け】AthenaでS3上のデータとDynamoDBのデータを結合する
sumikurayurie1125
0
220
第93回 雲勉【オンライン:初心者向け】CI/CDって結局何なの?インフラエンジニアがCode3兄弟を学ぶ
sumikurayurie1125
11
3.2k
第7回 雲勉LT【オンライン:初心者向け】サーバレスコンテナサービス Lambda, Fargate, App Runnerの特徴、違いを解説
sumikurayurie1125
2
290
第6回 雲勉LT【オンライン:初心者向け】2022年 気になったアップデート情報:「RDSコンソールの、EC2ワンクリック接続オプション」について
sumikurayurie1125
0
140
第5回 雲勉LT【オンライン:初心者向け】GCのサービスだけでCI_CDを構築してみよう
sumikurayurie1125
0
54
第90回 雲勉【オンライン:初心者向け】AWS App RunnerにLaravelをデプロイしてLINEBotを作ってみよう
sumikurayurie1125
0
740
Other Decks in Technology
See All in Technology
いまならこう作りたい AWSコンテナ[本格]入門ハンズオン 〜2024年版 ハンズオンの構想〜
horsewin
9
2.1k
チームを主語にしてみる / Making "Team" the Subject
ar_tama
4
300
初心者に Vue.js を 教えるには
tsukuha
5
390
グローバル展開を見据えたサービスにおける機械翻訳プラクティス / dp-ai-translating
cyberagentdevelopers
PRO
1
150
一休.comレストランにおけるRustの活用
kymmt90
3
580
AWSコンテナ本出版から3年経った今、もし改めて執筆し直すなら / If I revise our container book
iselegant
15
3.9k
【技術書典17】OpenFOAM(自宅で極める流体解析)2次元円柱まわりの流れ
kamakiri1225
0
210
話題のGraphRAG、その可能性と課題を理解する
hide212131
4
1.4k
ユーザーの購買行動モデリングとその分析 / dsc-purchase-analysis
cyberagentdevelopers
PRO
2
100
omakaseしないための.rubocop.yml のつくりかた / How to Build Your .rubocop.yml to Avoid Omakase #kaigionrails
linkers_tech
3
730
なんで、私がAWS Heroに!? 〜社外の広い世界に一歩踏み出そう〜
minorun365
PRO
6
1.1k
Product Engineer Night #6プロダクトエンジニアを育む仕組み・施策
hacomono
PRO
1
460
Featured
See All Featured
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
92
16k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
37
1.8k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
364
22k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
13
1.9k
Building a Scalable Design System with Sketch
lauravandoore
459
33k
The Language of Interfaces
destraynor
154
24k
Designing on Purpose - Digital PM Summit 2013
jponch
115
6.9k
Scaling GitHub
holman
458
140k
Agile that works and the tools we love
rasmusluckow
327
21k
Reflections from 52 weeks, 52 projects
jeffersonlam
346
20k
Rebuilding a faster, lazier Slack
samanthasiow
79
8.6k
Making Projects Easy
brettharned
115
5.9k
Transcript
2023/02/16 第96回 雲勉【オンライン︓初⼼者向け】 インフラエンジニアのKubernetes⼊⾨
アジェンダ 2 0.⾃⼰紹介 1.はじめに 2.Kubernetesのイメージ 3.Kubernetesってなに 4.Kubernetesのアーキテクチャ 5.Kubernetesのリソース 6.最後に 7.質疑応答(~20:00)
0.講師⾃⼰紹介 3 n ⽥中 弘紀 • クラウドインテグレーション事業部 構築第⼋セクション 第⼆グループ •
経歴 ⼩売店(接客販売) 1年半 オンプレミスインフラエンジニア(運⽤保守) 6年 • アイレット歴 2年9ヶ⽉ (構築、運⽤保守) • 沖縄とロナウジーニョが好き
1. はじめに 4
1.はじめに 5 n 今回の雲勉は ・ Kubernetesを知らない ・ Kubernetesをこれから学習していきたい という⽅を対象とさせていただいております
1.はじめに 6 n 今回の⽬標 ・Kubernetesの基本的な仕組みを知る ・Kubernetes基本的なリソースの役割を知る お話の中で、 AWSが提供しているAmazon Elastic Kubernetes
Service (EKS)では についても少し触れたいと思います
2. Kubernetesのイメージ 7
2.Kubernetesのイメージ 8 n Kubernetesのイメージ 皆さんはKubernetesに対してどういったイメージをお持ちでしょうか 私は ・コンテナをいい感じにアレしてくれる ぐらいの認識でした。 雲勉を通してKubernetesがどういったものなのか︖ というイメージを掴んで頂ければと思います。
3. Kubernetesってなに 9
3. Kubernetesってなに 10 n Kubernetesってなんなの コンテナオーケストレーション です。
3. Kubernetesってなに 11 n コンテナオーケストレーションの役割 ・コンテナが1つの環境であれば特に問題は無いかもしれないがそういったケースは少ない。 ・実際のシステム構築では、「冗⻑性」、「可⽤性」、「保守性」も考える必要がある。 ・コンテナの数を増やしたい ・サーバーが1台だと不安 ・システム運⽤を簡素化したい
3. Kubernetesってなに 12 n コンテナオーケストレーションの役割 その悩みを解消してくれるものがコンテナオーケストレーション ・コンテナの死活監視 ・コンテナの⾃動復旧 ・コンテナホストの管理 ・コンテナの配置管理
・コンテナの負荷分散 ・etc.. といった事がコンテナオーケストレーションを利⽤する事で可能になる
3. Kubernetesってなに 13 n 代表的なコンテナオーケストレーション ・Kubernetes (クバネティス) ⇦ 今回はこちらのお話 ・Docker
Swarm(ドッカースウォーム) etc..
3. Kubernetesってなに 14 n Kubernetesって何がいいの ・コンテナのオートスケールが出来たりと機能に優位性がある ・AWS、Google Cloud、Azureといった代表的なクラウドサービスでも マネージドサービスとして提供されているのでロックインされずにマルチプラットフォームで の利⽤が出来る
・コミュニティが盛んでアップデートのサイクルも速く、デファクトスタンダードとされている
4. Kubernetesのアーキテクチャ 15
4.Kubernetesのアーキテクチャ 16 n Kubernetesクラスター ・Kubernetesクラスターはマスターノードとワーカーノード構成されています。 ・マスターノードは「クラスター内のワーカーノードとPodを管理」するもの。 Control Planesとも呼ばれる。 ・ワーカーノードは「コンテナであるPodをホスト」するもの。Nodesとも呼ばれる。 Control
Planesを構成するコンポーネントがワーカーノードにも存在する。 Kubernetesクラスター マスターノード ワーカーノード
4.Kubernetesのアーキテクチャ 17 n Kubernetesのアーキテクチャ 管理者 kubectlコマンド Pod container kubelet kube-proxy
Pod container kube-apiserver kube-scheduler kube-controller-manager etcd ワ " カ " ノ " ド マ ス タ " ノ " ド kubelet kube-proxy container runtime container runtime Kubernetesクラスター
4.Kubernetesのアーキテクチャ 18 n コントロールプレーン Kubernetesクラスター内の「ノード」や「Pod」といったリソースを管理するもの ノード コンポーネント名 役割 マスターノード kube-apiserver
KubernetesへのAPIリクエストを受け取りリソースを管理する kube-scheduler 新しく作成されたPodなどを適切なワーカーノードを選択して割り当てる kube-controller-manager リソースの状態を管理し、要求される状態を維持する。 例えばDepoloymentやReplicaSetで要求されるPodの数を維持する etcd ノードやクラスターなどの情報を保存する ワーカーノード kubelet コンテナの起動や削除を管理する kube-proxy クラスター内外のPodに対するアクセスをルーティングする
4.Kubernetesのアーキテクチャ 19 n kube-scheduler ・新しく作成されたPodなどを適切なワーカーノードを選択して割り当てる 管理者 kubelet Pod container kube-apiserver
kube-scheduler etcd kubectlコマンド 管理者から送られてきたKubernetesクラスターが あるべき姿(Podがいくつ起動しておくべきかなど)の情報を保存 Podの要求を監視し、適切なワーカーノードを選択 Podの起動を指⽰ Podが起動される マスターノード ワーカーノード container runtime Podの起動を指⽰
4.Kubernetesのアーキテクチャ 20 n kube-controller-manager ・リソースの状態を管理し、要求される状態を維持するようにコントロールするもの 管理者 Pod container kube-apiserver etcd
kubectlコマンド 管理者から送られてきたKubernetesクラスターが あるべき姿(Podがいくつ起動しておくべきかなど)の情報を保存 Podが起動される kube-controller-manager Deployment Contoroller ..etc Deployment 変化が発⽣した場合あるべき姿を保持しようとする ReplicaSet ReplicaSetを管理する Podを管理する Contorollerが監視 kube-scheduler
4.Kubernetesのアーキテクチャ 21 n kube-proxy ・ クラスタ内外のPodに対するアクセスをルーティングする 管理者 Pod container kube-apiserver
etcd kubectlコマンド 管理者から送られてきたKubernetesクラスターが あるべき姿(Podがいくつ起動しておくべきかなど)の情報を保存 ルーティングを変更 Service kube-proxy マスターノード ワーカーノード 適切なPodにルーティング ユーザー
4.Kubernetesのアーキテクチャ 22 n Kubernetesのアーキテクチャ 管理者 kubectlコマンド Pod container kubelet kube-proxy
Pod container kube-apiserver kube-scheduler kube-controller-manager etcd ワ " カ " ノ " ド マ ス タ " ノ " ド kubelet kube-proxy container runtime container runtime Kubernetesクラスター
4.Kubernetesのアーキテクチャ 23 n EKSでは Pod container kubelet kube-proxy Pod container
kube-apiserver kube-scheduler kube-controller-manager etcd ワ " カ " ノ " ド マ ス タ " ノ " ド kubelet kube-proxy container runtime container runtime EC2やFargeteが該当 AWSのEKSは マスターノードを提供している Kubernetesクラスター
4.Kubernetesのアーキテクチャ 24 n まとめ ・Kubernetesクラスタはマスターノードとワーカーノードで構成されている ・マスターノードは「クラスター内のワーカーノードとPodを管理」するもの ・ワーカーノードは「コンテナであるPodをホスト」するもの ・コントロールプレーンは複数のコンポーネントで構成されている ・Kubernetesはkubectlというコマンドで操作をする ・Kubernetesの設定ファイルはマニュフェストというyaml形式のファイルで定義される
5. Kubernetesのリソース 25
5. Kubernetesのリソース 26 n Kubernetesのリソース ・ Kubernetesクラスター上で稼働するもの マニュフェストと呼ばれるyaml形式のファイルであるべき姿を定義し、その情報がetcd に記録される ・Kubernetesを学習する上で押さえておきたいリソースについてお話しをしていきます
Kubernetesクラスターを論理的に分割するもの 27
5. Kubernetesのリソース 28 n NameSpace ・ Kubernetesクラスターの分離機能 ・PodやServiceといったリソースをノードを跨いで論理的にグルーピングすることが出来る ワーカーノード1 dev
Namespace prd Namespace ワーカーノード2 dev Namespace prd Namespace Kubernetesクラスター
コンテナの起動に関連するもの 29
5. Kubernetesのリソース 30 n Pod ・ ⼀つ以上のコンテナから構成されているもの ・NginxとMySQLのメインコンテナを⼀つのPodに包括するような構成は推奨されていない container(Nginx) Pod
container(MySQL) メインコンテナを⼀つのPodに包括する事は 結合度合いが⾼くなってしまうため、推奨されていない Pod container(MySQL) Pod container(Nginx) コンテナを⼀つずつのPodとして 疎結合な構成とする事が推奨されている
5. Kubernetesのリソース 31 n Pod ・メインコンテナを補助するような役割を持ったコンテナを起動させるマルチコンテナが 利⽤されることはある container(Nginx) Pod container(ログ転送)
メインコンテナのログを外部に出⼒ Pod container(Nginx) 外部サービスとの連携などで 外部サービスが受け取れるようにデータを整形する ストレージサーバー container(データ整形) 外部サービスなど サイドカーパターン アダプタパターン
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
5. Kubernetesのリソース 33 n Deployment ・ReplicaSetを管理する事で、 Rolling UpdateやRollBackといったデプロイ管理を提供するもの ・デフォルトの動作はRolling Updateとなるが、Recreateもサポートしている
・ReplicaSetはRolling Updateはサポートしていない ・Rolling Update中で幾つずつPodを更新するかなどの調整も出来る
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
5. Kubernetesのリソース 35 n DeamonSet ・各ノードにPodを⼀つずつ配置するリソース ・各ノードに対して監視エージェントを導⼊する際などはDeamonSetとして配置する DeamonSetとして監視エージェントを導⼊ ワーカーノードが増えると⾃動的に監視エージェントが 新しいワーカーノード上で起動する
ワーカーノード1 dev Namespace ワーカーノード1 dev Namespace ワーカーノード2 dev Namespace
5. Kubernetesのリソース 36 n StatefulSet ・状態を保持する必要があるアプリケーションを管理するためのもの ・Databaseなどのステートフルなアプリケーションで利⽤される ・StalefulSetが再作成されても同じストレージに接続される 永続ボリュームとPodで構成される container(MySQL)
Pod StatefulSet ワーカーノード ストレージ
5. Kubernetesのリソース 37 n Job/CronJob ・任意の時間に指定した処理をさせたい時に利⽤するもの CrongJobがJobを管理して実⾏する 毎時間Jobを実⾏ 毎⽇17時にJobを実⾏ ストレージ
Podに出⼒されたファイルをストレージにアップロード メール送信
コンテナへのアクセスに関連するもの 38
5. Kubernetesのリソース 39 n Service ・受信したトラフィックを複数のPodにL4で負荷分散してくれるもの ・「ClusterIP」、「NodePort」、「LoadBlancer」のタイプが代表的 IPアドレス:AAA IPアドレス:BBB
5. Kubernetesのリソース 40 n Service ・Podは起動するたびにIPアドレスが変わってしまうが、Seviceを利⽤すると動的にPodを Serviceに追加してくれる IPアドレス:AAA IPアドレス:BBB Pod消失
IPアドレス:CCC IPアドレス:BBB Pod再作成
5. Kubernetesのリソース 41 n Service種類「 ClusterIP 」 ・Kubernetesクラスター内からのみ疎通可能なアドレスが払い出される ・Kubernetesクラスター内部間の通信のみサポートする IPアドレス:AAA
IPアドレス:BBB ク ラ ス タ % 内 部 ア ド レ ス
5. Kubernetesのリソース 42 n Service種類「 NodePort 」 ・ノードのIPアドレスとポートを組み合わせて外部からのアクセスを可能とする ・ポート範囲は30000 から
32768で指定が可能 IPアドレス:AAA IPアドレス:BBB ノードの30080にアクセスするとServiceに転送される ノードのIPアドレス10.10.10.10:30080にアクセス ク ラ ス タ % 内 部 ア ド レ ス ワーカーノード
5. Kubernetesのリソース 43 n Service種類「 LoadBlancer 」 ・クラウド環境のロードバランサーによってサポートされている ・オンプレミスで利⽤する場合でも「MetalLB」といったものが利⽤出来る ・AWSだとCLB・NLB
IPアドレス:AAA IPアドレス:BBB NLB CLB ク ラ ス タ % 内 部 ア ド レ ス EKS
5. Kubernetesのリソース 44 n Ingress ・Kubernetesクラスター外からPodへのアクセスをL7で負荷分散するもの ・Ingressを作成するにはIngressコントローラーが必要 ・AWSだとALB IPアドレス:AAA IPアドレス:BBB
ALB ク ラ ス タ % 内 部 ア ド レ ス EKS
Kubernetesクラスター内に情報を定義するもの 45
5. Kubernetesのリソース 46 n Configmap ・Podに対して設定したい設定情報などのデータをkey-Value形式で保存しておくもの ・環境固有の設定などをコンテナイメージから分離できる ・暗号化されていない状態で登録されるためパスワードなどの機密情報の保存には向いていない Pod Pod
nginx.conf: | user nginx; worker_processes 2; error_log /var/log/nginx/error.log; events { worker_connections 9999; } MWの設定をConfig mapとして登録 nginx nginx
5. Kubernetesのリソース 47 n Secret ・DBの認証情報といった機密情報をkey-Value形式で保存しておくもの ・base64でエンコードした状態でパスワードなどをマニュフェストファイルに記述し登録する ・マニュフェストファイルをGit等で管理する際は、OSSのkubesecといったソフトウェアを利⽤する username:dGFuYWth password:
aXJldA== DBの接続情報をSecretとして登録 Secretから取得した情報でDBへ接続 DB
5. Kubernetesのリソース 48 n AWSでのSecret ・EKSではDBの認証情報といった機密情報はAWS Secrets Manager利⽤する ・AWS Secrets
Manager and Config Provider for Secret Store CSI Driver(ASCP)というプラグインを利⽤ ・マニュフェストファイルにはAWS Secrets Managerに対応した環境変数を記載するだけ ACSP username:iret password: cloudpack DBの接続情報をAWS Secrets Managerに登録 AWS Secrets Managerから 取得した情報でDBへ接続 RDS EKS Secrets Manager
KubernetesのAPIアクセス制御に関連するもの 49
5. Kubernetesのリソース 50 n Kubernetesのアカウント ・Kubernetesにはユーザーアカウントとサービスアカウントの2種類が存在している
5. Kubernetesのリソース 51 n ユーザーアカウント ・Kubernetes 外部からユーザーが Kubernetes を操作するために使うユーザーアカウント ・AWSではIAMユーザーとKubernetesに備わるRBACの仕組みを使って、「ユーザー」に
対するKubernetes上の権限を決定
5. Kubernetesのリソース 52 n RBACとは ・「誰が」どの「リソース」にどんな「操作」を許可するか定義するもの 誰が= ユーザー リソース=Pod,Deoloyment,Service etc..
操作=get,create,update,delete,list,watch etc..
5. Kubernetesのリソース 53 n RBACとは ・どの「リソース」にどんな「操作」を許可するのかというRoleを作成して それを誰に紐づける(Binding)のかを定義してユーザーに対して権限を付与する NameSpaceで限定 クラスター全体 Role
Cluster Role RoleBinding ClusterRoleBinding
5. Kubernetesのリソース 54 n RBACとは ワーカーノード dev Namespace prd Namespace
Kubernetesクラスター Kubernetesクラスターにある全ての Podの「create」,「delete」,「get」,「describe」を許可 Namespace「prd」に対して Podの「get」,「describe」を許可 ユーザーA ユーザーB
5. Kubernetesのリソース 55 n サービスアカウント ・Kubernetes内で管理されているアカウントで、 Podと紐づけることでPodからKubernetes APIを操作できる ・RBACを利⽤することでサービスアカウントへ任意で権限を設定可能 ・全てのPodへのサービスアカウント付与が必須で、
何も指定しなければ「default」が⾃動で付与される ・AWSではIAM Roles for Service Accounts(IRSA)という仕組みがあり、 PodにAWSリソースへのアクセス権限を付与出来る
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/
本⽇お話するリソースの紹介は以上となります 57
5. Kubernetesのリソース 58 n まとめ ・Kubernetesには様々なリソースが存在する ・まずはPod,ReplicaSet,Deployment,Service,Ingressを抑える ・EKSではAWSリソースと連携する機能が⽤意されている
5. Kubernetesのリソース 59 n EKSのworkshop AWSではEKSのworkshopが公開されています https://www.eksworkshop.com/
6. 最後に 60
6. 最後に 61 本⽇はKubernetesを学習する上で 私が思う最初に抑えておきたい内容についてお話しさせて頂きました。 ドキュメントが豊富でworkshopといった公開されている学習⽤のコンテンツもありますので そういったものにも触れて頂ければと思います。
7. 質疑応答 62
None