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
Kubernetes入門
Search
Kyohei Mizumoto
January 24, 2019
Technology
0
130
Kubernetes入門
社内勉強会での発表資料です。
2019/04/19 内容を更新
Kyohei Mizumoto
January 24, 2019
Tweet
Share
More Decks by Kyohei Mizumoto
See All by Kyohei Mizumoto
安全な Kubernetes 環境を目指して
kyohmizu
4
620
Unlocking Cloud Native Security
kyohmizu
5
850
コンテナ × セキュリティ × AWS
kyohmizu
10
3.2k
コンテナセキュリティ
kyohmizu
10
3.8k
コンテナイメージのマルウェア検出とその実用性について
kyohmizu
4
2.1k
Play with 🐐 in Kubernetes
kyohmizu
1
1k
Security Command Center × PagerDuty 自動アラート通知の取り組み
kyohmizu
0
440
サイバー攻撃から Kubernetes クラスタを守るための効果的なセキュリティ対策
kyohmizu
13
3.2k
脆弱性に学ぶコンテナセキュリティ
kyohmizu
4
2.4k
Other Decks in Technology
See All in Technology
実務への応用例から考える 変更に強いオブジェクト指向設計 / 20240324-ooc2024
bengo4com
7
5.3k
#51 “Empowering Azure Storage with RDMA”
cafenero_777
3
210
Getting started with controlling LEGO using Swift
hcrane
0
130
大規模なアジャイル開発の現場と技術負債 / Technical Debt
yoshiitaka
20
4k
チーム単位で保守性を高める:独自指標と向上にむけた実践
tarappo
0
300
2023 Japan AWS Jr.Championsに選出されての振り返りとこれから
hiropy877
1
130
オブジェクト指向宗教史
tanakahisateru
14
12k
どう買う?Azure
kuniteru
1
190
Azureコストは水道代/The_47th_Tokyo_Jazug
aeonpeople
3
360
オーティファイ会社紹介資料 / Autify Company Deck
autifyhq
7
100k
GitHub最新情報キャッチアップ 2024年3月
dzeyelid
16
3.2k
エバンジェリスト活動を7年やってきて見えてきた、コミュニティとエバンジェリストの関係
soracom
PRO
1
200
Featured
See All Featured
We Have a Design System, Now What?
morganepeng
42
6.7k
YesSQL, Process and Tooling at Scale
rocio
160
13k
Making the Leap to Tech Lead
cromwellryan
123
8.4k
KATA
mclloyd
14
11k
Adopting Sorbet at Scale
ufuk
66
8.5k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
19
1.9k
A designer walks into a library…
pauljervisheath
199
23k
Teambox: Starting and Learning
jrom
126
8.4k
The Straight Up "How To Draw Better" Workshop
denniskardys
227
130k
Building Applications with DynamoDB
mza
88
5.6k
Unsuck your backbone
ammeep
661
56k
Large-scale JavaScript Application Architecture
addyosmani
501
110k
Transcript
2019/4/19 Kubernetes⼊⾨ 127.0.0.1:5500/#65 1/66 Kubernetes⼊⾨
2019/4/19 Kubernetes⼊⾨ 127.0.0.1:5500/#65 2/66 Kyohei Mizumoto(@kyohmizu) C# Software Engineer Interests
Docker/Kubernetes Go Security whoami
2019/4/19 Kubernetes⼊⾨ 127.0.0.1:5500/#65 3/66 対象者 Kubernetesやったことない、知らない Kubernetesに興味がある Kubernetesの概要を知りたい
2019/4/19 Kubernetes⼊⾨ 127.0.0.1:5500/#65 4/66 ⽬次 Kubernetesとは Kubernetesの機能 アーキテクチャ Kubernetesリソース マニフェスト例
2019/4/19 Kubernetes⼊⾨ 127.0.0.1:5500/#65 5/66 Kubernetesとは
2019/4/19 Kubernetes⼊⾨ 127.0.0.1:5500/#65 6/66 コンテナオーケストレーションツール オープンソース Cloud Native Computing Foundation
(CNCF)がホスト Kubernetes︖
2019/4/19 Kubernetes⼊⾨ 127.0.0.1:5500/#65 7/66 コンテナ︖ 仮想化技術の⼀種 プロセスを1つの環境として切り分けたもの 軽量かつ移植、複製が容易 Dockerがデファクトスタンダード
2019/4/19 Kubernetes⼊⾨ 127.0.0.1:5500/#65 8/66 オーケストレーション︖ 配置、設定、管理の⾃動化 Webアプリ 内部プログラム データベース ネットワーク
Kubernetesは全てをリソースとして管理
2019/4/19 Kubernetes⼊⾨ 127.0.0.1:5500/#65 9/66 Kubernetesの利⽤ ローカル Minikube Docker for Mac
Kubernetes構築ツール kubeadm Rancher
2019/4/19 Kubernetes⼊⾨ 127.0.0.1:5500/#65 10/66 Kubernetesの利⽤ マネージドサービス Google Kubernetes Engine(GKE) Azure
Container Service(AKS) Elastic Container Service for Kubernetes(EKS)
2019/4/19 Kubernetes⼊⾨ 127.0.0.1:5500/#65 11/66 Kubernetesの機能
2019/4/19 Kubernetes⼊⾨ 127.0.0.1:5500/#65 12/66 Kubernetesの機能 仕様、設定管理 リソース作成、配置 リソース拡張 通信 ジョブ管理
ログ管理 冗⻑性 認証・認可
2019/4/19 Kubernetes⼊⾨ 127.0.0.1:5500/#65 13/66 仕様・設定管理 コードベースの仕様 yaml形式のマニフェストファイル Infrastructure as Code
2019/4/19 Kubernetes⼊⾨ 127.0.0.1:5500/#65 14/66 リソース作成・配置 設定に従って必要なリソースを作成、配置 バージョン管理 ローリングアップデート ロールバック
2019/4/19 Kubernetes⼊⾨ 127.0.0.1:5500/#65 15/66 リソース拡張 リソースの不⾜時に⾃動拡張 オートスケーリング
2019/4/19 Kubernetes⼊⾨ 127.0.0.1:5500/#65 16/66 通信 外部との通信 プロキシ 内部の通信 オーバーレイネットワーク 内部DNS
2019/4/19 Kubernetes⼊⾨ 127.0.0.1:5500/#65 17/66 ジョブ管理 スケジューリング 1回のみ 繰り返し
2019/4/19 Kubernetes⼊⾨ 127.0.0.1:5500/#65 18/66 ログ管理 各リソースのログを集約 外部ツールと連携 監視 アラート
2019/4/19 Kubernetes⼊⾨ 127.0.0.1:5500/#65 19/66 冗⻑性 死活監視 セルフヒーリング ロードバランシング
2019/4/19 Kubernetes⼊⾨ 127.0.0.1:5500/#65 20/66 認証・認可 アカウント管理 権限の分離 RBAC
2019/4/19 Kubernetes⼊⾨ 127.0.0.1:5500/#65 21/66 アーキテクチャ
2019/4/19 Kubernetes⼊⾨ 127.0.0.1:5500/#65 22/66
2019/4/19 Kubernetes⼊⾨ 127.0.0.1:5500/#65 23/66 Cluster(クラスタ) Kubernetes実⾏環境の基盤 1つ(以上)のmaster 複数のnode
2019/4/19 Kubernetes⼊⾨ 127.0.0.1:5500/#65 24/66 Master(マスター) クラスタ全体の管理ユニット etcd API Server Scheduler
Controller Manager
2019/4/19 Kubernetes⼊⾨ 127.0.0.1:5500/#65 25/66 Node(ノード) コンテナが動作する環境、マシンリソース Pod Kubelet Kube-proxy cAdvisor
2019/4/19 Kubernetes⼊⾨ 127.0.0.1:5500/#65 26/66 etcd 永続的で軽量な分散Key-Valueストア クラスタの設定や状態を保存
2019/4/19 Kubernetes⼊⾨ 127.0.0.1:5500/#65 27/66 API Server Kubernetes APIのサーバー Kubernetesに対する内外のインターフェースを提供す る
2019/4/19 Kubernetes⼊⾨ 127.0.0.1:5500/#65 28/66 Scheduler 新規Podを最適なノードに配置 リソースの供給を需要に合わせる
2019/4/19 Kubernetes⼊⾨ 127.0.0.1:5500/#65 29/66 Controller Manager クラスタの状態を維持 レプリカ数 ジョブ管理
2019/4/19 Kubernetes⼊⾨ 127.0.0.1:5500/#65 30/66 Pod 1つ以上のコンテナを内包する単位 Pod内はlocalhostでアクセス可能
2019/4/19 Kubernetes⼊⾨ 127.0.0.1:5500/#65 31/66 Kubelet ノード内の管理 Podの状態を監視、異常があれば再デプロイ ノード状態をマスターに送信
2019/4/19 Kubernetes⼊⾨ 127.0.0.1:5500/#65 32/66 Kube-proxy プロキシ、ロードバランサーの役割 cAdvisor リソースの使⽤量を監視、収集
2019/4/19 Kubernetes⼊⾨ 127.0.0.1:5500/#65 33/66 Kubernetesリソース
2019/4/19 Kubernetes⼊⾨ 127.0.0.1:5500/#65 34/66 リソースの分類 Workloadsリソース Discovery&LBリソース Config&Storageリソース Clusterリソース Metadataリソース
2019/4/19 Kubernetes⼊⾨ 127.0.0.1:5500/#65 35/66 Workloadsリソース
2019/4/19 Kubernetes⼊⾨ 127.0.0.1:5500/#65 36/66 Workloadsリソース Pod ReplicaSet Deployment DaemonSet StatefulSet
Job CronJob
2019/4/19 Kubernetes⼊⾨ 127.0.0.1:5500/#65 37/66 ReplicaSet Podの管理、複製 Pod数を設定どおりに維持 セルフヒーリング
2019/4/19 Kubernetes⼊⾨ 127.0.0.1:5500/#65 38/66 Deployment ReplicaSetの履歴、バージョン管理 アップデート ロールバック 削除
2019/4/19 Kubernetes⼊⾨ 127.0.0.1:5500/#65 39/66 DaemonSet 各ノードに1つずつPodを配置 e.g. ノードの管理、情報収集
2019/4/19 Kubernetes⼊⾨ 127.0.0.1:5500/#65 40/66 Job 1度のみ実⾏ CronJob Jobのスケジューリング
2019/4/19 Kubernetes⼊⾨ 127.0.0.1:5500/#65 41/66 Discovery&LBリソース
2019/4/19 Kubernetes⼊⾨ 127.0.0.1:5500/#65 42/66 Discovery&LBリソース Service ClusterIP NodePort LoadBalancer ExternalIP
ExternalName Headless Ingress
2019/4/19 Kubernetes⼊⾨ 127.0.0.1:5500/#65 43/66 Service コンテナと外部の通信 クラスタ内 クラスタと外部 IPアドレス、ポートによるアクセス
2019/4/19 Kubernetes⼊⾨ 127.0.0.1:5500/#65 44/66 Ingress クラスタと外部の通信 URLによるアクセス L7ロードバランシング
2019/4/19 Kubernetes⼊⾨ 127.0.0.1:5500/#65 45/66 Config&Storageリソース
2019/4/19 Kubernetes⼊⾨ 127.0.0.1:5500/#65 46/66 Config&Storageリソース Secret ConfigMap PersistentVolumeClaim
2019/4/19 Kubernetes⼊⾨ 127.0.0.1:5500/#65 47/66 Secret 機密情報を定義 パスワード、トークン、Keyなど kubesec で暗号化
2019/4/19 Kubernetes⼊⾨ 127.0.0.1:5500/#65 48/66 ConfigMap Key-Valueでデータを保持 設定情報とコンテナを分離
2019/4/19 Kubernetes⼊⾨ 127.0.0.1:5500/#65 49/66 Clusterリソース
2019/4/19 Kubernetes⼊⾨ 127.0.0.1:5500/#65 50/66 Clusterリソース Namespace ServiceAccount Role/ClusterRole RoleBinding/ClusterRoleBinding Volume
PersistentVolume Node
2019/4/19 Kubernetes⼊⾨ 127.0.0.1:5500/#65 51/66 Namespace リソースの分割 e.g. 開発者⽤、管理者⽤ アクセス制御 仮想クラスタ
2019/4/19 Kubernetes⼊⾨ 127.0.0.1:5500/#65 52/66 StatefulSet データの永続化 Podの管理 それぞれのPodに個別ID 置き換え不可
2019/4/19 Kubernetes⼊⾨ 127.0.0.1:5500/#65 53/66 Volume ホスト上の領域をマッピング ファイルの保存 コンテナ間のデータ共有
2019/4/19 Kubernetes⼊⾨ 127.0.0.1:5500/#65 54/66 PersistentVolume 永続化領域 利⽤には PersistentVolumeClaim(PVC) が必要
2019/4/19 Kubernetes⼊⾨ 127.0.0.1:5500/#65 55/66 Metadataリソース
2019/4/19 Kubernetes⼊⾨ 127.0.0.1:5500/#65 56/66 Metadataリソース CustomResourceDefinition LimitRange HorizontalPodAutoscaler
2019/4/19 Kubernetes⼊⾨ 127.0.0.1:5500/#65 57/66 マニフェスト例
2019/4/19 Kubernetes⼊⾨ 127.0.0.1:5500/#65 58/66 Pod apiVersion: v1 kind: Pod metadata:
name: sample-pod spec: containers: - name: nginx-container image: nginx:1.12
2019/4/19 Kubernetes⼊⾨ 127.0.0.1:5500/#65 59/66 ReplicaSet apiVersion: apps/v1 kind: ReplicaSet metadata:
name: sample-rs spec: replicas: 3 selector: matchLabels: app: sample-app template: metadata: labels: app: sample-app spec: containers: - name: nginx-container image: nginx:1.12 ports: - containerPort: 80
2019/4/19 Kubernetes⼊⾨ 127.0.0.1:5500/#65 60/66 Deployment apiVersion: apps/v1 kind: Deployment metadata:
name: sample-deployment spec: replicas: 3 selector: matchLabels: app: sample-app template: metadata: labels: app: sample-app spec: containers: - name: nginx-container image: nginx:1.12 ports: - containerPort: 80
2019/4/19 Kubernetes⼊⾨ 127.0.0.1:5500/#65 61/66 Job apiVersion: batch/v1 kind: Job metadata:
name: sample-job spec: completions: 1 parallelism: 1 backoffLimit: 10 template: spec: containers: - name: sleep-container image: centos:6 command: ["sleep"] args: ["60"] restartPolicy: Never
2019/4/19 Kubernetes⼊⾨ 127.0.0.1:5500/#65 62/66 Secret apiVersion: v1 kind: Pod metadata:
name: sample-secret-single-env spec: containers: - name: secret-container image: nginx:1.12 env: - name: DB_USERNAME valueFrom: secretKeyRef: name: sample-db-auth key: username
2019/4/19 Kubernetes⼊⾨ 127.0.0.1:5500/#65 63/66 書籍紹介
2019/4/19 Kubernetes⼊⾨ 127.0.0.1:5500/#65 64/66 書籍紹介
2019/4/19 Kubernetes⼊⾨ 127.0.0.1:5500/#65 65/66 参考サイト 公式サイト https://kubernetes.io 『Kubernetes完全ガイド』の付録マニフェスト https://github.com/MasayaAoyama/kubernetes-perfect-guide 今こそ始めよう︕
Kubernetes⼊⾨ https://thinkit.co.jp/series/7342
2019/4/19 Kubernetes⼊⾨ 127.0.0.1:5500/#65 66/66 Thank you!