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
150
Kubernetes入門
社内勉強会での発表資料です。
2019/04/19 内容を更新
Kyohei Mizumoto
January 24, 2019
Tweet
Share
More Decks by Kyohei Mizumoto
See All by Kyohei Mizumoto
コンテナサプライチェーンセキュリティ
kyohmizu
1
130
サイバーセキュリティの最新動向:脅威と対策
kyohmizu
1
230
コンテナセキュリティの基本と脅威への対策
kyohmizu
4
1.5k
安全な Kubernetes 環境を目指して
kyohmizu
4
1.1k
Unlocking Cloud Native Security
kyohmizu
5
1.3k
コンテナ × セキュリティ × AWS
kyohmizu
11
3.8k
コンテナセキュリティ
kyohmizu
10
4.2k
コンテナイメージのマルウェア検出とその実用性について
kyohmizu
4
3.4k
Play with 🐐 in Kubernetes
kyohmizu
1
1.3k
Other Decks in Technology
See All in Technology
AWS Well-Architected Frameworkで学ぶAmazon ECSのセキュリティ対策
umekou
2
120
あなたが人生で成功するための5つの普遍的法則 #jawsug #jawsdays2025 / 20250301 HEROZ
yoshidashingo
2
140
NFV基盤のOpenStack更新 ~9世代バージョンアップへの挑戦~
vtj
0
330
Reading Code Is Harder Than Writing It
trishagee
2
120
抽象化をするということ - 具体と抽象の往復を身につける / Abstraction and concretization
soudai
27
15k
AI Agent時代なのでAWSのLLMs.txtが欲しい!
watany
2
180
EDRの検知の仕組みと検知回避について
chayakonanaika
11
4.4k
実は強い 非ViTな画像認識モデル
tattaka
1
1.1k
システム・ML活用を広げるdbtのデータモデリング / Expanding System & ML Use with dbt Modeling
i125
1
310
Windows の新しい管理者保護モード
murachiakira
0
200
LINEギフトにおけるバックエンド開発
lycorptech_jp
PRO
0
210
デスクトップだけじゃないUbuntu
mtyshibata
0
710
Featured
See All Featured
The MySQL Ecosystem @ GitHub 2015
samlambert
250
12k
Music & Morning Musume
bryan
46
6.4k
Imperfection Machines: The Place of Print at Facebook
scottboms
267
13k
Unsuck your backbone
ammeep
669
57k
Raft: Consensus for Rubyists
vanstee
137
6.8k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
100
18k
Navigating Team Friction
lara
183
15k
VelocityConf: Rendering Performance Case Studies
addyosmani
328
24k
Building an army of robots
kneath
303
45k
How GitHub (no longer) Works
holman
314
140k
Documentation Writing (for coders)
carmenintech
67
4.6k
What’s in a name? Adding method to the madness
productmarketing
PRO
22
3.3k
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!