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
EKS 101
Search
taxin
May 26, 2020
Programming
0
950
EKS 101
taxin
May 26, 2020
Tweet
Share
More Decks by taxin
See All by taxin
監視SaaSの運用におけるObservability改善の歩み
taxin
4
4.8k
ポストモーテム読書会のすすめ
taxin
1
2.5k
OpenTelemetry実践 はじめの一歩
taxin
0
3.1k
カスタムダッシュボードの活用方法とMackerel開発チームでの実践例
taxin
0
1.7k
SREを「続けていく」あなたへ
taxin
1
360
Cloud runユーザーから見たk8s
taxin
0
900
ローカルk8s環境のススメ / k8s-tools-for-local
taxin
0
1.2k
Other Decks in Programming
See All in Programming
テストカバレッジ100%を10年続けて得られた学びと品質
mottyzzz
2
570
Cache Me If You Can
ryunen344
2
650
Kiroの仕様駆動開発から見えてきたAIコーディングとの正しい付き合い方
clshinji
1
210
ソフトウェアテスト徹底指南書の紹介
goyoki
1
150
Vue・React マルチプロダクト開発を支える Vite
andpad
0
110
RDoc meets YARD
okuramasafumi
4
170
Go言語での実装を通して学ぶLLMファインチューニングの仕組み / fukuokago22-llm-peft
monochromegane
0
120
Flutter with Dart MCP: All You Need - 박제창 2025 I/O Extended Busan
itsmedreamwalker
0
150
さようなら Date。 ようこそTemporal! 3年間先行利用して得られた知見の共有
8beeeaaat
3
1.4k
モバイルアプリからWebへの横展開を加速した話_Claude_Code_実践術.pdf
kazuyasakamoto
0
320
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
330
Design Foundational Data Engineering Observability
sucitw
3
190
Featured
See All Featured
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
31
2.2k
RailsConf 2023
tenderlove
30
1.2k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
667
120k
Raft: Consensus for Rubyists
vanstee
140
7.1k
4 Signs Your Business is Dying
shpigford
184
22k
Navigating Team Friction
lara
189
15k
Why You Should Never Use an ORM
jnunemaker
PRO
59
9.5k
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.4k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.1k
The Straight Up "How To Draw Better" Workshop
denniskardys
236
140k
Thoughts on Productivity
jonyablonski
70
4.8k
The Language of Interfaces
destraynor
161
25k
Transcript
EKS 101 2020 / 05 / 26 Kubernetes Novice Meetup
@taxin_tt
Who am I ? @taxin_tt • AWS, Python, Kubernetes •
Kubernetes歴: 8ヶ月くらい
Today’s Talk • 話すこと • EKSとは? • クラスタの作成方法 • 作成したクラスタを利用した簡単な検証
(Deploymentの作成) • EKSを使う上で気になる点 +α • 話さないこと • Kubernetesとは? • コンテナとは?
Kubernetesを触ってみたい
What can we use for Practice? • kubeadm • Kind
(Kubernetes in Docker) • Kubernetes Service ◦ AKS (Azure) ◦ EKS (AWS) ◦ GKE (GCP) 弊社のKubernetes Servicesが含まれてないぞ...! という方はTwitterでコメント下さい ;-)
What can we use for Practice? • kubeadm • Kind
(Kubernetes in Docker) • Managed Services ◦ AKS (Azure) ◦ EKS (AWS) ◦ GKE (GCP)
EKSを触ってみよう
その前に...
AWSにおけるコンテナ環境
AWSにおけるコンテナ環境 Control Plane / Data Plane を一種類ずつ組み合わせて環境を用意する Control Plane コンテナを管理する
コンポーネントが稼働する場所 ECS EKS Data Plane ユーザーが作成した コンテナが稼働する場所 EC2 Fargate
AWSにおけるコンテナ環境 Control Plane / Data Plane を一種類ずつ組み合わせて環境を用意する → 他のクラウドベンダーが提供するコンテナサービスと考え方が異なる
Why?
None
ビルディング・ブロック • AWSの一つ一つのサービスをブロックとして 複数のブロックを組み合わせて要件にあったシステムを作るという考え方 ◦ 基盤系サービス:EC2, RDS, S3 ◦ +
アプリケーション関連サービス:CloudFront, SQS/SNS ◦ + 運用系サービス:Cloudwatch, Systems Manager, Codeシリーズ ◦ + ... • 各ブロックはAPIで連携するため柔軟なシステムの構築が可能
ビルディング・ブロック 複数のブロックを組み合わせてシステム(=コンテナ環境)を作る Control Plane コンテナを管理する コンポーネントが稼働する場所 ECS EKS Data Plane
ユーザーが作成した コンテナが稼働する場所 EC2 Fargate
AWSにおけるKubernetes (EKS)
What is EKS? • EKS = (ざっくり言うと) AWSマネージドのKubernetesサービス ◦ Control
Planeとしての役割を担う • Data Plane ◦ EC2 or Fargateを選択する • 課金 ◦ 0.10 USD/h (EKS) + 0.0544USD/h (EC2 / t3.medium) + EBSの料金 etc. = (Worker Nodeの数が2のクラスタだと) 0.209USD/h +α
(今度こそ) EKSを触ってみよう
試してみること • クラスタの作成 • Deployment (nginx) の作成 + 動いているコンテナへのアクセス
Step0: Set up • kubectl ◦ kubernetesと通信する際に利用するコマンドラインツール ▪ homebrewを利用して設定 (mac)
$ brew install kubectl $ kubectl version Client Version: version.Info{... ,GitVersion:”1.17.2”,...}
Step0: Set up • AWS CLI ◦ AWSサービスの作成・設定をするためのコマンドラインツール ▪ (ver1)
pip or インストーラーを利用して設定 $ pip3 install awscli --upgrade --user $ aws --version aws-cli/1.16.230 Python/3.7.6 Darwin ...
Step0: Set up • eksctl ◦ EKSベースのクラスタを作成するためのコマンドラインツール ◦ クラスタを構成する複数のAWSリソースをまとめて作成・設定してくれる $
brew tap weaveworks/tap $ brew install weaveworks/tap/eksctl $ eksctl version 0.16.0
Step0: Set up • eksctl ◦ 設定値をYAMLで渡すことも可能 ◦ クラスタ作成時のデフォルト値に注意 ▪
InstanceType(EC2): m5.large
• クラスタ作成用のコマンドを実行 $ eksctl create cluster -f ./cluster.yaml Step1: Create
k8s Cluster
• クラスタが正常に作成されたかを確認する $ kubectl get nodes Step1: Create k8s Cluster
Step1: Create k8s Cluster • (+α) MFA有効化アカウントを用いてクラスタを作成する場合 ◦ https://aws.amazon.com/jp/premiumsupport/knowledge-center/authenticate-mfa-cli/
Step2: Deploy nginx • Deploymentを作成する ◦ マニュフェストファイルはexampleとして提供されているものを利用 $ kubectl apply
-f https://k8s.io/examples/controllers/nginx-deployment.yaml https://kubernetes.io/ja/docs/concepts/workloads/controllers/deployment/
• 定義したPodが正常に作成されたかを確認する $ kubectl get pods Step2: Deploy nginx
Step3: Access nginx • 任意のPod (nginx-deployment-xx) を指定してポートフォワーディング $ kubectl get
pods $ kubectl port-forward nginx-deployment-xxxx 32711:80
Step3: Access nginx
• localhost:32711 に対してブラウザからアクセスする ◦ 正常にアクセスできれば下記のような画面が表示される Step3: Access nginx
EKSを使う上で気になる点 +α
EKSを使う上で気になる点 • 1)「どのようなブロックでクラスタが構成されているか」の理解 ◦ Kubernetesクラスタの運用に携わる人は必須 ◦ eksctlは詳細を知らなくてもクラスタを作成できてしまう
EKSを使う上で気になる点 • 2) KubernetesとAWSのサービスの対応関係 ◦ 何のAWSサービスを使って実現しているかを把握すると理解が進む e.g.) Service ( Type:
LoadBalancer ) - NLB or CLB (NodeがEC2の場合) https://docs.aws.amazon.com/ja_jp/eks/latest/userguide/load-balancing.html
+α • 覚えることは多いように感じる (Kubernetes + AWS) ◦ (今すぐ) 覚えなくてもいいこと も結構ある
◦ Indexをはっておくだけでも十分 • 一旦は、自分のやってみたいことをやってみる ◦ 必要になったタイミングで、知識のインプット + クラスタでの検証 ◦ だからこそ、クラスタの簡単な作り方を知っておくのは大事!
まとめ • Kubernetes + AWSのサービスで色々なことができる • EKSやっていきましょう!
Thank you for Listening !
https://eksctl.io/ https://github.com/kubernetes/examples 参考リンク
(+α) Monitoring
Kubernetes - Monitoring • Prometheus • Datadog • Cloudwatch Container
Insights ◦ モニタリング用のコンポーネントのデプロイのみでセットアップ可能 (= AWSのサービスだけでモニタリングに対応できる ) ◦ Container Insightsのメトリクス取得は料金は発生する ▪ 料金試算のサイトもあるので不安な方は試算してみるのがおすすめ Amazon CloudWatch Pricing – Amazon Web Services (AWS)
Kubernetes - Monitoring • Cloudwatch Container Insights ◦ 1) CloudWatch
Agent / Fluentd のデプロイ ◦ 2) CloudWatchのダッシュボードでのメトリクスの確認 • ※ 事前にWorker Node用のIAM Roleに下記のポリシーをアタッチ ◦ CloudWatchAgentServerPolicy
Kubernetes - Monitoring • CloudWatchAgentServerPolicy ◦ eksctl用の設定ファイル内で指定可能 ◦ 下記のPolicyも必要なので注意 ▪
AmazonEKSWorkerNodePolicy ▪ AmazonEKS_CNI_Policy
• セットアップ用のコマンドを実行 ◦ cluster-name / cluster-regionを置き換えてコマンドを実行 $ curl https://raw.githubusercontent.com/aws-samples/ .../quickstart/cwagent-fluentd-quickstart.yaml
\ | sed "s/{{cluster_name}}/cluster-name/;s/{{region_name}}/cluster-region/" \ | kubectl apply -f - https://docs.aws.amazon.com/ja_jp/AmazonCloudWatch/latest/monitoring/Container-Insights-setup-EKS-quickstart.html Step1:Cloudwatch Agent/Fluentdのデプロイ
Step1:Cloudwatch Agent/Fluentdのデプロイ • Cloudwatch Agent / FluentdのPodがデプロイされていることを確認
Step2:ダッシュボードでのメトリクスの確認 • CloudWatchのダッシュボードから概要のリンクをクリックして 「Container Insights」を選択する
Step2:ダッシュボードでのメトリクスの確認 • Container Insightsのダッシュボードからメトリクスを確認する ◦ 1) デプロイしたPodの負荷状況 (CPU/メモリの利用率)
Step2:ダッシュボードでのメトリクスの確認 • Container Insightsのダッシュボードからメトリクスを確認する ◦ 2) クラスタを構成するWorker Nodeの負荷状況 (CPU/メモリの使用率 +α)