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
900
EKS 101
taxin
May 26, 2020
Tweet
Share
More Decks by taxin
See All by taxin
監視SaaSの運用におけるObservability改善の歩み
taxin
4
3.3k
ポストモーテム読書会のすすめ
taxin
1
2k
OpenTelemetry実践 はじめの一歩
taxin
0
2.6k
カスタムダッシュボードの活用方法とMackerel開発チームでの実践例
taxin
0
1.4k
SREを「続けていく」あなたへ
taxin
1
330
Cloud runユーザーから見たk8s
taxin
0
860
ローカルk8s環境のススメ / k8s-tools-for-local
taxin
0
1.2k
Other Decks in Programming
See All in Programming
データベースのオペレーターであるCloudNativePGがStatefulSetを使わない理由に迫る
nnaka2992
0
150
第3回関東Kaggler会_AtCoderはKaggleの役に立つ
chettub
3
1k
技術を根付かせる / How to make technology take root
kubode
1
250
ファインディLT_ポケモン対戦の定量的分析
fufufukakaka
0
720
Honoのおもしろいミドルウェアをみてみよう
yusukebe
1
210
Spring gRPC について / About Spring gRPC
mackey0225
0
220
2024年のkintone API振り返りと2025年 / kintone API look back in 2024
tasshi
0
220
さいきょうのレイヤードアーキテクチャについて考えてみた
yahiru
3
750
負債になりにくいCSSをデザイナとつくるには?
fsubal
10
2.4k
Formの複雑さに立ち向かう
bmthd
1
850
color-scheme: light dark; を完全に理解する
uhyo
3
360
クリーンアーキテクチャから見る依存の向きの大切さ
shimabox
2
370
Featured
See All Featured
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.4k
Build The Right Thing And Hit Your Dates
maggiecrowley
34
2.5k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
Docker and Python
trallard
44
3.3k
Thoughts on Productivity
jonyablonski
69
4.5k
Speed Design
sergeychernyshev
27
790
The Power of CSS Pseudo Elements
geoffreycrofte
75
5.5k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
33
2.8k
The Cost Of JavaScript in 2023
addyosmani
47
7.3k
Measuring & Analyzing Core Web Vitals
bluesmoon
6
240
Being A Developer After 40
akosma
89
590k
The Invisible Side of Design
smashingmag
299
50k
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/メモリの使用率 +α)