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
940
EKS 101
taxin
May 26, 2020
Tweet
Share
More Decks by taxin
See All by taxin
監視SaaSの運用におけるObservability改善の歩み
taxin
4
4.5k
ポストモーテム読書会のすすめ
taxin
1
2.4k
OpenTelemetry実践 はじめの一歩
taxin
0
3k
カスタムダッシュボードの活用方法とMackerel開発チームでの実践例
taxin
0
1.6k
SREを「続けていく」あなたへ
taxin
1
360
Cloud runユーザーから見たk8s
taxin
0
890
ローカルk8s環境のススメ / k8s-tools-for-local
taxin
0
1.2k
Other Decks in Programming
See All in Programming
Porting a visionOS App to Android XR
akkeylab
0
730
DMMを支える決済基盤の技術的負債にどう立ち向かうか / Addressing Technical Debt in Payment Infrastructure
yoshiyoshifujii
4
420
The Modern View Layer Rails Deserves: A Vision For 2025 And Beyond @ RailsConf 2025, Philadelphia, PA
marcoroth
2
730
AI駆動のマルチエージェントによる業務フロー自動化の設計と実践
h_okkah
0
230
SQLアンチパターン第2版 データベースプログラミングで陥りがちな失敗とその対策 / Intro to SQL Antipatterns 2nd
twada
PRO
20
5k
Goで作る、開発・CI環境
sin392
0
260
階層化自動テストで開発に機動力を
ickx
0
160
Claude Code + Container Use と Cursor で作る ローカル並列開発環境のススメ / ccc local dev
kaelaela
12
7.1k
Flutterで備える!Accessibility Nutrition Labels完全ガイド
yuukiw00w
0
170
型で語るカタ
irof
0
710
テスターからテストエンジニアへ ~新米テストエンジニアが歩んだ9ヶ月振り返り~
non0113
2
220
High-Level Programming Languages in AI Era -Human Thought and Mind-
hayat01sh1da
PRO
0
880
Featured
See All Featured
Why You Should Never Use an ORM
jnunemaker
PRO
58
9.5k
GraphQLとの向き合い方2022年版
quramy
49
14k
Making Projects Easy
brettharned
116
6.3k
Building Applications with DynamoDB
mza
95
6.5k
The World Runs on Bad Software
bkeepers
PRO
70
11k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
7
750
How to Ace a Technical Interview
jacobian
278
23k
Building Flexible Design Systems
yeseniaperezcruz
328
39k
Designing Experiences People Love
moore
142
24k
Stop Working from a Prison Cell
hatefulcrawdad
271
21k
What's in a price? How to price your products and services
michaelherold
246
12k
Adopting Sorbet at Scale
ufuk
77
9.5k
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/メモリの使用率 +α)