SlideShare ist ein Scribd-Unternehmen logo
1 von 30
Downloaden Sie, um offline zu lesen
2019/2/22最近よく聞く Kubernetes を体験してみた 1/30
最近よく聞く Kubernetes を体験してみた
橋本 修太 武山 文信
日本 openSUSE ユーザ会
2019/2/22最近よく聞く Kubernetes を体験してみた 2/30
本日の内容
●
少しだけ openSUSE の紹介
●
Kubernetes クラスタ構築してみた
●
Kubernetes で自作のアプリを動かしてみる
2019/2/22最近よく聞く Kubernetes を体験してみた 3/30
みなさん
って何かご存知ですか?
2019/2/22最近よく聞く Kubernetes を体験してみた 4/30
正しいのはどれ?
●
1. サーバールームでモフモフできるカメレオン型ガジェット
●
2. Ruby で簡単に Web アプリを作れるフレームワーク
●
3. 1996年にドイツで生まれた Linux ディストリビューション
2019/2/22最近よく聞く Kubernetes を体験してみた 5/30
正しいのはどれ?
●
1. サーバールームでモフモフできるカメレオン型ガジェット
●
2. Ruby で簡単に Web アプリを作れるフレームワーク
●
3. 1996年にドイツで生まれた Linux ディストリビューション
2019/2/22最近よく聞く Kubernetes を体験してみた 6/30
正解: 3
●
3. 20年以上前にドイツで生まれた Linux ディストリビューション
– 1996 年: S.u.S.E Linux 4.2 リリース
●
これ以前は Slackware + 設定ツールでした
●
Q: RedHat 系ですか? Debian 系ですか?
A: どちらでもありません! Slackware系でもありません
●
Q: OpenSUSE ですか?openSUSE ですか?
A: o は小文字です。IPhone ではなく、iPhone なのと同じです
2019/2/22最近よく聞く Kubernetes を体験してみた 7/30
2つの openSUSE
Tumbleweed
常に最新 安定
新しいカーネルやライブラリを使いたい人
アプリケーションのテスト環境
有償サポートが不要な人
普段遣いのデスクトップやサーバーに
2019/2/22最近よく聞く Kubernetes を体験してみた 8/30
openSUSE Leap 15.0 1/2
●
SUSE Linux Enterprise 15 ベースの安定志向
ディストリビューション
●
エンタープライズ版に openSUSE 独自のパッケージを追加
– CentOS + Fedora のような感じ
– デスクトップ環境:
Plasma 5.12, GNOME 3.26, XFCE 4.12, MATE, LXQt, etc.
2019/2/22最近よく聞く Kubernetes を体験してみた 9/30
openSUSE Leap 15.0 2/2
●
年に1回のマイナーアップデート(サービスパック)
– 15.1, 15.2, 15.3, …
– 15.1 は 2019年5月リリース予定
– 3年に1度程度のメジャーアップデート
●
1つ前のバージョンは 42.3 でした
– 15.0 のほうが新しいので注意!
– 42.3 は2019年6月末までサポート
2019/2/22最近よく聞く Kubernetes を体験してみた 10/30
2019/2/22最近よく聞く Kubernetes を体験してみた 11/30
スナップショット
新機能: トランザクショナルアップデート
●
Btrfs を活用した機能がいろいろ
●
トランザクショナルアップデート:
スナップショットを使って、複数のパッケージを同時にアップデート
– パッケージの不整合防止のダウンタイムを再起動の時間だけに
– 詳しくは OSC 2018 Tokyo/Fall のスライドで
ストレージ上の
データ
/ libB.so libC.so/usr/bin/A
実行中
/usr/bin/A libB.so libC.so
Updated Updated
古いファイル
2019/2/22最近よく聞く Kubernetes を体験してみた 12/30
同人誌も書いています
●
コミックマーケットC95で頒布
●
内容
– openSUSE で Google Drive を使う
– Kubic でお手軽 Kubernetes クラス
タ構築
– いまさらだけど… Let’s Encrypt で
HTTPS を使えるようにする
– openSUSE Leap 15.0 でハチプロ
を鳴らしてみよう
●
お買い求めはブースで!
2019/2/22最近よく聞く Kubernetes を体験してみた 13/30
前半 : 構築編
2019/2/22最近よく聞く Kubernetes を体験してみた 14/30
自作の Web アプリケーションを
Kubernetes クラスタにデプロイしてみた
武山 文信
日本 openSUSE ユーザ会
2019/2/22最近よく聞く Kubernetes を体験してみた 15/30
よくあるイメージ
Kubernetes って大規模システムでしか
役に立たないのかな?
1 ノード構成でも使えるところがあるのでは?
2019/2/22最近よく聞く Kubernetes を体験してみた 16/30
docker-compose + 便利機能?
●
リモート端末から直接コンテナを管理できる
– クラスタ側に SSH ログインできるようにする必要なし
●
豊富な REST API を通したアプリ連携
– GitLab から CI で連携したり…
●
パフォーマンス、可用性…
Kubernetes クラスタ
今回は対象外です
コンテナコンテナ
コンテナ
コンテナ
$ kubectl
2019/2/22最近よく聞く Kubernetes を体験してみた 17/30
開発環境
●
openSUSE Kubic をノート PC の KVM 上にインストール
●
Master Node と Worker Node を1つにまとめる細工
– VM を何個も動かしたくない
– Master node への配置制限の解除
●
クラウドで提供されている K8s のほうが色々楽
– Google Cloud Platform、Azure、IBM Cloud、…
– オンプレでもクラウドでも使えるのが K8s 利点
$ kubectl taint nodes ノード名 node-role.kubernetes.io/master:NoSchedule-
2019/2/22最近よく聞く Kubernetes を体験してみた 18/30
題材: 自作 Web アプリ Radish
●
Ruby on Rails で実装した
Connpass っぽいイベント参加登録アプリ(作りかけ)
– 本当に作りかけなので
まだ使い物になりません
●
作業の流れ
1. アプリをコンテナ化する
2. K8s クラスタへのデプロイ
Dockerfile, イメージ、
ここで紹介する K8s の各種定義、ソースコード
https://gitlab.com/ftake/radish
2019/2/22最近よく聞く Kubernetes を体験してみた 19/30
1. アプリのコンテナ対応
●
コンテナを立ち上げたら、すぐ動くようにする
●
Stateless にする
– コンテナを作り直したときにデータが失われないよう、
データをアプリコンテナ外のデータベース(PostgreSQL)へ
●
データベースのデータは永続化するように設定(後述)
●
コンテナイメージをレジストリに配置する
– ローカルでビルドし、
K8s クラスタがアクセスできるレジストリに push が必要
– GitLab のレジストリを使用
●
別の方法: ローカルレジストリを作成する
https://blog.geeko.jp/ftake/1749
ローカルDockerとの違い
コンテナをいつでも
再生成できるように
2019/2/22最近よく聞く Kubernetes を体験してみた 20/30
2. K8s クラスタへのデプロイ
●
コンテナ(K8s 用語では Pod)の構成
– radish-server: Rails アプリのコンテナ
– postgresql: PostgreSQL のコンテナ
●
保存しておくべきデータはここに
radish-server
コンテナ (Pod)
Postgresql
コンテナ (Pod)
ブラウザ
直接は通信できない(後述)
2019/2/22最近よく聞く Kubernetes を体験してみた 21/30
まずは PostgreSQL を動かす
●
必要なものは主に3つ
– Service
クラスタ内から参照できる名前 + ポートで
コンテナがサービスを提供することを宣言する
●
tcp://postgresql:5432
– Deployment
どのようなコンテナ(Pod)を
何個立ち上げるか
●
postgresql:10 イメージのコンテナを 1個
– PersistentVolume(永続ボリューム)
データを永続的に保存しておく領域
postgres
Service
postgres
コンテナ (Pod)
postgres-pv
PersistentVolume
他の Pod
2019/2/22最近よく聞く Kubernetes を体験してみた 22/30
YAML ファイル
●
docker-compose のように
コンテナの定義を YAML で書く
apiVersion: apps/v1
kind: Deployment
metadata:
namespace: radish
name: postgresql
spec:
<< …中略… >>
strategy:
type: Recreate
template:
metadata:
labels:
app: postgresql
spec:
containers:
- name: postgresql
image: postgres:10
env:
- <<…後述…>>
<< 続く >>
apiVersion: v1
kind: Service
metadata:
namespace: radish
name: postgresql
spec:
selector:
app: postgresql
type: ClusterIP
clusterIP: None
ports:
- port: 5432
Service
tcp://postgresql:5432
提供されるサービスがある
Deployment:
postgres:10 イメージ
でコンテナを1つ起動
app: postgresql を持つ
コンテナがサービスを提供
2019/2/22最近よく聞く Kubernetes を体験してみた 23/30
PostgreSQL の保存先を作る
apiVersion: v1
kind: PersistentVolume
metadata:
namespace: radish
name: radish-db-pv
labels:
type: local
spec:
capacity:
storage: 5Gi
accessModes:
- ReadWriteOnce
storageClassName: standard
hostPath:
path: /var/lib/radish/db
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
namespace: radish
name: radish-db-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 5Gi
storageClassName: standard
<<postgresqlのDeploymentの続き>>
containers:
- name: postgresql
image: postgres:10
Env: <<略>>
volumeMounts:
- name: data-dir
mountPath: /var/lib/postgresql/data
volumes:
- name: data-dir
persistentVolumeClaim:
claimName: radish-db-pvc
DBのデータディレクトリを
永続ボリュームに
Claimを満たすVolumeを
k8sが割り当て
Nodeの/var/lib/radish/db
に領域を確保
2019/2/22最近よく聞く Kubernetes を体験してみた 24/30
Apply でリソースを作成
●
定義ファイルを書いたら kubectl apply でリソースを作成する
– 修正したら再度 kubectl apply して OK
●
何個もリソースが作り直されることはない(一種のべき等性)
$ kubectl apply -f kube/postgresql.yml
$ kubectl apply -f kube/radish-db.yml
$ kubectl apply -f kube
$ kubectl get pods
NAME                          READY     STATUS    RESTARTS   AGE
postgresql-7dd686946c-jdw8m   1/1       Running   1          12s
$ kubectl get service
NAME         TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)          AGE
postgresql   ClusterIP   None             <none>        5432/TCP         12s
ディレクトリ指定も可
コンテナとサービス状態取得
2019/2/22最近よく聞く Kubernetes を体験してみた 25/30
便利機能1: Name space
●
Radishで使用する k8s のリソース(Pod, Service)をまとめる
– アクセス制御にも使えるが…今回はスキップ
$ docker ps
CONTAINER ID IMAGE ...
852e3e9d0756 radish:master ...
e03bc13bf859 postgres:10
92ad9078be0e busybox
1215054fd637 registry
ac74b987a567 portus
3ef7fb2aa6ce jenkins
13f540dad13f redmine
$ kubectl -n radish get pods
NAME READY ...
postgresql-c9cc48968-k8wfn 1/1 ...
radish-d7554c44b-lb9rr 1/1
色々なコンテナが
たくさん出てくる
radish 関連のコンテナのみ
2019/2/22最近よく聞く Kubernetes を体験してみた 26/30
便利機能2: ConfigMap と Secret
●
設定っぽいものをまとめておける
– ConfigMap: 一般用
– Secret: API キーとか
●
Deployment で環境変数値を
設定するときに参照できる
kind: ConfigMap
metadata:
name: radish-config
namespace: radish
data:
db.user: postgres
db.name: radish
kind: Secret
metadata:
name: radish-secret
namespace: radish
data: {}
stringData:
db.password: pAS$w0rd
rails.secret_key_base: 3447ef705b…
<< Deployment の一部 >>
env:
- name: RADISH_DB_USER
valueFrom:
configMapKeyRef:
name: radish-config
key: db.user
- name: RADISH_DB_PASSWORD
valueFrom:
secretKeyRef:
name: radish-secret
key: db.password
2019/2/22最近よく聞く Kubernetes を体験してみた 27/30
アプリを動かす
●
同じように
Deployment と
Service を書く
●
$ kubectl apply
apiVersion: apps/v1
kind: Deployment
metadata:
namespace: radish
name: radish
spec:
selector:
matchLabels:
app: radish
template:
metadata:
labels:
app: radish
spec:
containers:
- name: radish-server
image: registry.gitlab.com/ftake/radish:master
imagePullPolicy: Always
command: ["bundle", "exec", "rails", "s"]
env:
<< 長いので省略 >>
ports:
- containerPort: 3000
apiVersion: v1
kind: Service
metadata:
namespace: radish
name: radish
spec:
selector:
app: radish
type: NodePort
ports:
- port: 3000
nodePort: 30080
2019/2/22最近よく聞く Kubernetes を体験してみた 28/30
データベースの初期化
●
コンテナ内のコマンドを実行したい
●
kubectl exec で実行できる
– 引数は Docker と同じ
– コンテナがどこのノードで動いているか気にしなくて良い!
●
●
●
Job という方法もあるらしい
# コンテナ(pod)の名前を調べる
$ kubectl get pods -n radish
NAME READY STATUS RESTARTS AGE
postgresql-7dd686946c-jdw8m 1/1 Running 0 2d
radish-d7554c44b-lb9rr 1/1 Running 0 3d
$ kubectl exec -ti radish-d7554c44b-lb9rr /bin/bash
# ここからはコンテナの中
$ DISABLE_DATABASE_ENVIRONMENT_CHECK=1 rails db:reset
2019/2/22最近よく聞く Kubernetes を体験してみた 29/30
外からアクセスする
●
サービスをクラスタの外に公開する
– 方法1: ポートフォワード
サービスを Node のポートにマッピング
– 方法2: Ingress Nginx Controller
URL のパターンで Service に転送
●
どの Worker Node に転送する?
– Load balancer を使う
●
MetalLB: K8s クラスタからルーターのルーティングをコントロール
●
IaaS であれば、提供されているものを使用
– 耐障害性を無視するなら(1ノードなら)決め打ち
http://ノード1のIPアドレス:30080/
●
Node まで届ければ kube-proxy が Service に応じてコンテナへ
apiVersion: v1
kind: Service
metadata:
namespace: radish
name: radish
spec:
selector:
app: radish
type: NodePort
ports:
- port: 3000
nodePort: 30080
ポートフォワード
2019/2/22最近よく聞く Kubernetes を体験してみた 30/30
感想
●
抽象化レイヤー(Service, PersistentVolumeClaim)で
実体の差し替えが容易であるが、記述が冗長
●
各リソースの設定ファイルは書いていればなんとなく分かってくる
– 最初は意味不明
●
外部からのアクセスをどうノードに振り分けるかは
色々考える必要があり大変

Weitere ähnliche Inhalte

Was ist angesagt?

TectonicはKubernetesの構築・管理基盤である -概要の章-/-構築の章-
TectonicはKubernetesの構築・管理基盤である -概要の章-/-構築の章-TectonicはKubernetesの構築・管理基盤である -概要の章-/-構築の章-
TectonicはKubernetesの構築・管理基盤である -概要の章-/-構築の章-Masahito Zembutsu
 
コンテナ未経験新人が学ぶコンテナ技術入門
コンテナ未経験新人が学ぶコンテナ技術入門コンテナ未経験新人が学ぶコンテナ技術入門
コンテナ未経験新人が学ぶコンテナ技術入門Kohei Tokunaga
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Kohei Tokunaga
 
Docker入門 - 基礎編 いまから始めるDocker管理
Docker入門 - 基礎編 いまから始めるDocker管理Docker入門 - 基礎編 いまから始めるDocker管理
Docker入門 - 基礎編 いまから始めるDocker管理Masahito Zembutsu
 
Kubernetes超入門 with java
Kubernetes超入門 with javaKubernetes超入門 with java
Kubernetes超入門 with javaYasunari Tanaka
 
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021Preferred Networks
 
近頃のDockerネットワーク
近頃のDockerネットワーク近頃のDockerネットワーク
近頃のDockerネットワークYuji Oshima
 
コンテナ導入概要資料2018
コンテナ導入概要資料2018コンテナ導入概要資料2018
コンテナ導入概要資料2018Masahito Zembutsu
 
VMwareユーザのためのdocker入門 ~Re:Virtualization Night #1~
VMwareユーザのためのdocker入門 ~Re:Virtualization Night #1~VMwareユーザのためのdocker入門 ~Re:Virtualization Night #1~
VMwareユーザのためのdocker入門 ~Re:Virtualization Night #1~Masaomi Kudo
 
CRX: Container Runtime Executive 
CRX: Container Runtime Executive CRX: Container Runtime Executive 
CRX: Container Runtime Executive imurata8203
 
Rootlessコンテナ
RootlessコンテナRootlessコンテナ
RootlessコンテナAkihiro Suda
 
Dockerが抱えるネットワークの課題
Dockerが抱えるネットワークの課題Dockerが抱えるネットワークの課題
Dockerが抱えるネットワークの課題Asuka Suzuki
 
クラウドアプリケーションの マルチプロセス・プログラミングモデル を実現する「Data Center Kernel」
クラウドアプリケーションの マルチプロセス・プログラミングモデル を実現する「Data Center Kernel」クラウドアプリケーションの マルチプロセス・プログラミングモデル を実現する「Data Center Kernel」
クラウドアプリケーションの マルチプロセス・プログラミングモデル を実現する「Data Center Kernel」Etsuji Nakai
 
DockerとPodmanの比較
DockerとPodmanの比較DockerとPodmanの比較
DockerとPodmanの比較Akihiro Suda
 
Dockerの利用事例
Dockerの利用事例Dockerの利用事例
Dockerの利用事例maebashi
 
忙しい人の5分で分かるDocker 2017年春Ver
忙しい人の5分で分かるDocker 2017年春Ver忙しい人の5分で分かるDocker 2017年春Ver
忙しい人の5分で分かるDocker 2017年春VerMasahito Zembutsu
 
仮想化技術として注目されているDocker入門 - PASONATECH ADVANTAGE SEMINAR
仮想化技術として注目されているDocker入門 - PASONATECH ADVANTAGE SEMINAR仮想化技術として注目されているDocker入門 - PASONATECH ADVANTAGE SEMINAR
仮想化技術として注目されているDocker入門 - PASONATECH ADVANTAGE SEMINARVirtualTech Japan Inc.
 
コンテナを突き破れ!! ~コンテナセキュリティ入門基礎の基礎~(Kubernetes Novice Tokyo #11 発表資料)
コンテナを突き破れ!! ~コンテナセキュリティ入門基礎の基礎~(Kubernetes Novice Tokyo #11 発表資料)コンテナを突き破れ!! ~コンテナセキュリティ入門基礎の基礎~(Kubernetes Novice Tokyo #11 発表資料)
コンテナを突き破れ!! ~コンテナセキュリティ入門基礎の基礎~(Kubernetes Novice Tokyo #11 発表資料)NTT DATA Technology & Innovation
 
OpenStackとDockerの未来像
OpenStackとDockerの未来像OpenStackとDockerの未来像
OpenStackとDockerの未来像Etsuji Nakai
 
コンテナは次世代サービスの主流になるか?
コンテナは次世代サービスの主流になるか?コンテナは次世代サービスの主流になるか?
コンテナは次世代サービスの主流になるか?SAKURA Internet Inc.
 

Was ist angesagt? (20)

TectonicはKubernetesの構築・管理基盤である -概要の章-/-構築の章-
TectonicはKubernetesの構築・管理基盤である -概要の章-/-構築の章-TectonicはKubernetesの構築・管理基盤である -概要の章-/-構築の章-
TectonicはKubernetesの構築・管理基盤である -概要の章-/-構築の章-
 
コンテナ未経験新人が学ぶコンテナ技術入門
コンテナ未経験新人が学ぶコンテナ技術入門コンテナ未経験新人が学ぶコンテナ技術入門
コンテナ未経験新人が学ぶコンテナ技術入門
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
 
Docker入門 - 基礎編 いまから始めるDocker管理
Docker入門 - 基礎編 いまから始めるDocker管理Docker入門 - 基礎編 いまから始めるDocker管理
Docker入門 - 基礎編 いまから始めるDocker管理
 
Kubernetes超入門 with java
Kubernetes超入門 with javaKubernetes超入門 with java
Kubernetes超入門 with java
 
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
 
近頃のDockerネットワーク
近頃のDockerネットワーク近頃のDockerネットワーク
近頃のDockerネットワーク
 
コンテナ導入概要資料2018
コンテナ導入概要資料2018コンテナ導入概要資料2018
コンテナ導入概要資料2018
 
VMwareユーザのためのdocker入門 ~Re:Virtualization Night #1~
VMwareユーザのためのdocker入門 ~Re:Virtualization Night #1~VMwareユーザのためのdocker入門 ~Re:Virtualization Night #1~
VMwareユーザのためのdocker入門 ~Re:Virtualization Night #1~
 
CRX: Container Runtime Executive 
CRX: Container Runtime Executive CRX: Container Runtime Executive 
CRX: Container Runtime Executive 
 
Rootlessコンテナ
RootlessコンテナRootlessコンテナ
Rootlessコンテナ
 
Dockerが抱えるネットワークの課題
Dockerが抱えるネットワークの課題Dockerが抱えるネットワークの課題
Dockerが抱えるネットワークの課題
 
クラウドアプリケーションの マルチプロセス・プログラミングモデル を実現する「Data Center Kernel」
クラウドアプリケーションの マルチプロセス・プログラミングモデル を実現する「Data Center Kernel」クラウドアプリケーションの マルチプロセス・プログラミングモデル を実現する「Data Center Kernel」
クラウドアプリケーションの マルチプロセス・プログラミングモデル を実現する「Data Center Kernel」
 
DockerとPodmanの比較
DockerとPodmanの比較DockerとPodmanの比較
DockerとPodmanの比較
 
Dockerの利用事例
Dockerの利用事例Dockerの利用事例
Dockerの利用事例
 
忙しい人の5分で分かるDocker 2017年春Ver
忙しい人の5分で分かるDocker 2017年春Ver忙しい人の5分で分かるDocker 2017年春Ver
忙しい人の5分で分かるDocker 2017年春Ver
 
仮想化技術として注目されているDocker入門 - PASONATECH ADVANTAGE SEMINAR
仮想化技術として注目されているDocker入門 - PASONATECH ADVANTAGE SEMINAR仮想化技術として注目されているDocker入門 - PASONATECH ADVANTAGE SEMINAR
仮想化技術として注目されているDocker入門 - PASONATECH ADVANTAGE SEMINAR
 
コンテナを突き破れ!! ~コンテナセキュリティ入門基礎の基礎~(Kubernetes Novice Tokyo #11 発表資料)
コンテナを突き破れ!! ~コンテナセキュリティ入門基礎の基礎~(Kubernetes Novice Tokyo #11 発表資料)コンテナを突き破れ!! ~コンテナセキュリティ入門基礎の基礎~(Kubernetes Novice Tokyo #11 発表資料)
コンテナを突き破れ!! ~コンテナセキュリティ入門基礎の基礎~(Kubernetes Novice Tokyo #11 発表資料)
 
OpenStackとDockerの未来像
OpenStackとDockerの未来像OpenStackとDockerの未来像
OpenStackとDockerの未来像
 
コンテナは次世代サービスの主流になるか?
コンテナは次世代サービスの主流になるか?コンテナは次世代サービスの主流になるか?
コンテナは次世代サービスの主流になるか?
 

Ähnlich wie 最近良く聞く Kubernetes を体験してみた イントロ + 活用編

Kubernetes Meetup Tokyo #8 Self-hosted Kubernetes を調べてみた
Kubernetes Meetup Tokyo #8 Self-hosted Kubernetes を調べてみたKubernetes Meetup Tokyo #8 Self-hosted Kubernetes を調べてみた
Kubernetes Meetup Tokyo #8 Self-hosted Kubernetes を調べてみたAkihito Inoh
 
Kubernets on Bluemix + DevOpsでコンテナCIやってみた
Kubernets on Bluemix + DevOpsでコンテナCIやってみたKubernets on Bluemix + DevOpsでコンテナCIやってみた
Kubernets on Bluemix + DevOpsでコンテナCIやってみたShoichiro Sakaigawa
 
kube-system落としてみました
kube-system落としてみましたkube-system落としてみました
kube-system落としてみましたShuntaro Saiba
 
Kubernetes + containerd で cgroup v2 に移行したら "failed to create fsnotify watcher...
Kubernetes + containerd で cgroup v2 に移行したら "failed to create fsnotify watcher...Kubernetes + containerd で cgroup v2 に移行したら "failed to create fsnotify watcher...
Kubernetes + containerd で cgroup v2 に移行したら "failed to create fsnotify watcher...Preferred Networks
 
もっとも簡単なKubernetes構築 on Raspberry pi (July tech festa winter 2021)
もっとも簡単なKubernetes構築 on Raspberry pi  (July tech festa winter 2021)もっとも簡単なKubernetes構築 on Raspberry pi  (July tech festa winter 2021)
もっとも簡単なKubernetes構築 on Raspberry pi (July tech festa winter 2021)Kamon Nobuchika
 
今だからこそ知りたい Docker Compose/Swarm 入門
今だからこそ知りたい Docker Compose/Swarm 入門今だからこそ知りたい Docker Compose/Swarm 入門
今だからこそ知りたい Docker Compose/Swarm 入門Masahito Zembutsu
 
Docker ComposeでMastodonが必要なものを梱包する話
Docker ComposeでMastodonが必要なものを梱包する話Docker ComposeでMastodonが必要なものを梱包する話
Docker ComposeでMastodonが必要なものを梱包する話Masahito Zembutsu
 
CloudNativePGを動かしてみた! ~PostgreSQL on Kubernetes~(第34回PostgreSQLアンカンファレンス@オンライ...
CloudNativePGを動かしてみた! ~PostgreSQL on Kubernetes~(第34回PostgreSQLアンカンファレンス@オンライ...CloudNativePGを動かしてみた! ~PostgreSQL on Kubernetes~(第34回PostgreSQLアンカンファレンス@オンライ...
CloudNativePGを動かしてみた! ~PostgreSQL on Kubernetes~(第34回PostgreSQLアンカンファレンス@オンライ...NTT DATA Technology & Innovation
 
これから始めるAzure Kubernetes Service入門
これから始めるAzure Kubernetes Service入門これから始めるAzure Kubernetes Service入門
これから始めるAzure Kubernetes Service入門Yuto Takei
 
Docker最新動向2017秋+セキュリティの落とし穴
Docker最新動向2017秋+セキュリティの落とし穴Docker最新動向2017秋+セキュリティの落とし穴
Docker最新動向2017秋+セキュリティの落とし穴Masahito Zembutsu
 
CI/CD Pipeline を考える 〜KubeCon 2017 + CyberAgent の最大公倍数〜
CI/CD Pipeline を考える 〜KubeCon 2017 + CyberAgent の最大公倍数〜CI/CD Pipeline を考える 〜KubeCon 2017 + CyberAgent の最大公倍数〜
CI/CD Pipeline を考える 〜KubeCon 2017 + CyberAgent の最大公倍数〜Masaya Aoyama
 
最近のKubernetesとDocker Machine/Swarmの話
最近のKubernetesとDocker Machine/Swarmの話最近のKubernetesとDocker Machine/Swarmの話
最近のKubernetesとDocker Machine/Swarmの話Kazuto Kusama
 
普通のRailsアプリをdockerで本番運用する知見
普通のRailsアプリをdockerで本番運用する知見普通のRailsアプリをdockerで本番運用する知見
普通のRailsアプリをdockerで本番運用する知見zaru sakuraba
 
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】Masahito Zembutsu
 
Docker Meetup tpkyo #30 kubecon recap
Docker Meetup tpkyo #30 kubecon recapDocker Meetup tpkyo #30 kubecon recap
Docker Meetup tpkyo #30 kubecon recapYutaro Wada
 
今さら聞けない人のための K8s超入門 Big Sur対応版 CNDO2021 ショートバージョン
今さら聞けない人のための K8s超入門 Big Sur対応版 CNDO2021 ショートバージョン今さら聞けない人のための K8s超入門 Big Sur対応版 CNDO2021 ショートバージョン
今さら聞けない人のための K8s超入門 Big Sur対応版 CNDO2021 ショートバージョンVirtualTech Japan Inc./Begi.net Inc.
 
Rancher 2.0 Technical Preview & Bluemix Kubernetes Cluster Import
Rancher 2.0 Technical Preview & Bluemix Kubernetes Cluster ImportRancher 2.0 Technical Preview & Bluemix Kubernetes Cluster Import
Rancher 2.0 Technical Preview & Bluemix Kubernetes Cluster ImportBMXUG
 
kubetnetes etc.. & Rancher2.0 Technical Preview -import BLUMIX K8S Clusters-
kubetnetes etc.. & Rancher2.0 Technical Preview -import BLUMIX K8S Clusters-kubetnetes etc.. & Rancher2.0 Technical Preview -import BLUMIX K8S Clusters-
kubetnetes etc.. & Rancher2.0 Technical Preview -import BLUMIX K8S Clusters-cyberblack28 Ichikawa
 
Introduction of skippbox
Introduction of skippboxIntroduction of skippbox
Introduction of skippboxGo Chiba
 

Ähnlich wie 最近良く聞く Kubernetes を体験してみた イントロ + 活用編 (20)

Kubernetes Meetup Tokyo #8 Self-hosted Kubernetes を調べてみた
Kubernetes Meetup Tokyo #8 Self-hosted Kubernetes を調べてみたKubernetes Meetup Tokyo #8 Self-hosted Kubernetes を調べてみた
Kubernetes Meetup Tokyo #8 Self-hosted Kubernetes を調べてみた
 
Kubernets on Bluemix + DevOpsでコンテナCIやってみた
Kubernets on Bluemix + DevOpsでコンテナCIやってみたKubernets on Bluemix + DevOpsでコンテナCIやってみた
Kubernets on Bluemix + DevOpsでコンテナCIやってみた
 
kube-system落としてみました
kube-system落としてみましたkube-system落としてみました
kube-system落としてみました
 
Kubernetes + containerd で cgroup v2 に移行したら "failed to create fsnotify watcher...
Kubernetes + containerd で cgroup v2 に移行したら "failed to create fsnotify watcher...Kubernetes + containerd で cgroup v2 に移行したら "failed to create fsnotify watcher...
Kubernetes + containerd で cgroup v2 に移行したら "failed to create fsnotify watcher...
 
もっとも簡単なKubernetes構築 on Raspberry pi (July tech festa winter 2021)
もっとも簡単なKubernetes構築 on Raspberry pi  (July tech festa winter 2021)もっとも簡単なKubernetes構築 on Raspberry pi  (July tech festa winter 2021)
もっとも簡単なKubernetes構築 on Raspberry pi (July tech festa winter 2021)
 
今だからこそ知りたい Docker Compose/Swarm 入門
今だからこそ知りたい Docker Compose/Swarm 入門今だからこそ知りたい Docker Compose/Swarm 入門
今だからこそ知りたい Docker Compose/Swarm 入門
 
Docker ComposeでMastodonが必要なものを梱包する話
Docker ComposeでMastodonが必要なものを梱包する話Docker ComposeでMastodonが必要なものを梱包する話
Docker ComposeでMastodonが必要なものを梱包する話
 
CloudNativePGを動かしてみた! ~PostgreSQL on Kubernetes~(第34回PostgreSQLアンカンファレンス@オンライ...
CloudNativePGを動かしてみた! ~PostgreSQL on Kubernetes~(第34回PostgreSQLアンカンファレンス@オンライ...CloudNativePGを動かしてみた! ~PostgreSQL on Kubernetes~(第34回PostgreSQLアンカンファレンス@オンライ...
CloudNativePGを動かしてみた! ~PostgreSQL on Kubernetes~(第34回PostgreSQLアンカンファレンス@オンライ...
 
AlibabaCloudではじめるKubernetes
AlibabaCloudではじめるKubernetesAlibabaCloudではじめるKubernetes
AlibabaCloudではじめるKubernetes
 
これから始めるAzure Kubernetes Service入門
これから始めるAzure Kubernetes Service入門これから始めるAzure Kubernetes Service入門
これから始めるAzure Kubernetes Service入門
 
Docker最新動向2017秋+セキュリティの落とし穴
Docker最新動向2017秋+セキュリティの落とし穴Docker最新動向2017秋+セキュリティの落とし穴
Docker最新動向2017秋+セキュリティの落とし穴
 
CI/CD Pipeline を考える 〜KubeCon 2017 + CyberAgent の最大公倍数〜
CI/CD Pipeline を考える 〜KubeCon 2017 + CyberAgent の最大公倍数〜CI/CD Pipeline を考える 〜KubeCon 2017 + CyberAgent の最大公倍数〜
CI/CD Pipeline を考える 〜KubeCon 2017 + CyberAgent の最大公倍数〜
 
最近のKubernetesとDocker Machine/Swarmの話
最近のKubernetesとDocker Machine/Swarmの話最近のKubernetesとDocker Machine/Swarmの話
最近のKubernetesとDocker Machine/Swarmの話
 
普通のRailsアプリをdockerで本番運用する知見
普通のRailsアプリをdockerで本番運用する知見普通のRailsアプリをdockerで本番運用する知見
普通のRailsアプリをdockerで本番運用する知見
 
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
 
Docker Meetup tpkyo #30 kubecon recap
Docker Meetup tpkyo #30 kubecon recapDocker Meetup tpkyo #30 kubecon recap
Docker Meetup tpkyo #30 kubecon recap
 
今さら聞けない人のための K8s超入門 Big Sur対応版 CNDO2021 ショートバージョン
今さら聞けない人のための K8s超入門 Big Sur対応版 CNDO2021 ショートバージョン今さら聞けない人のための K8s超入門 Big Sur対応版 CNDO2021 ショートバージョン
今さら聞けない人のための K8s超入門 Big Sur対応版 CNDO2021 ショートバージョン
 
Rancher 2.0 Technical Preview & Bluemix Kubernetes Cluster Import
Rancher 2.0 Technical Preview & Bluemix Kubernetes Cluster ImportRancher 2.0 Technical Preview & Bluemix Kubernetes Cluster Import
Rancher 2.0 Technical Preview & Bluemix Kubernetes Cluster Import
 
kubetnetes etc.. & Rancher2.0 Technical Preview -import BLUMIX K8S Clusters-
kubetnetes etc.. & Rancher2.0 Technical Preview -import BLUMIX K8S Clusters-kubetnetes etc.. & Rancher2.0 Technical Preview -import BLUMIX K8S Clusters-
kubetnetes etc.. & Rancher2.0 Technical Preview -import BLUMIX K8S Clusters-
 
Introduction of skippbox
Introduction of skippboxIntroduction of skippbox
Introduction of skippbox
 

Mehr von Fuminobu Takeyama

Btrfs + Snapper + Samba で作る「以前のバージョン」に戻せるファイルサーバー
Btrfs + Snapper + Samba で作る「以前のバージョン」に戻せるファイルサーバーBtrfs + Snapper + Samba で作る「以前のバージョン」に戻せるファイルサーバー
Btrfs + Snapper + Samba で作る「以前のバージョン」に戻せるファイルサーバーFuminobu Takeyama
 
Geeko Magazine: A Technical Magazine on openSUSE, edited on openSUSE―openSUSE...
Geeko Magazine: A Technical Magazine on openSUSE, edited on openSUSE―openSUSE...Geeko Magazine: A Technical Magazine on openSUSE, edited on openSUSE―openSUSE...
Geeko Magazine: A Technical Magazine on openSUSE, edited on openSUSE―openSUSE...Fuminobu Takeyama
 
SUSE Studio Express を使ってみた
SUSE Studio Express を使ってみたSUSE Studio Express を使ってみた
SUSE Studio Express を使ってみたFuminobu Takeyama
 
Geeko Magazine: A Technical Magazine on openSUSE, editied on openSUSE
Geeko Magazine: A Technical Magazine on openSUSE, editied on openSUSEGeeko Magazine: A Technical Magazine on openSUSE, editied on openSUSE
Geeko Magazine: A Technical Magazine on openSUSE, editied on openSUSEFuminobu Takeyama
 
Ruby でできていると言っても過言ではない Linux ディストリビューション―openSUSE
Ruby でできていると言っても過言ではない Linux ディストリビューション―openSUSERuby でできていると言っても過言ではない Linux ディストリビューション―openSUSE
Ruby でできていると言っても過言ではない Linux ディストリビューション―openSUSEFuminobu Takeyama
 
ここが違う! OSC Tokyo と台湾の COSCUP
ここが違う! OSC Tokyo と台湾の COSCUPここが違う! OSC Tokyo と台湾の COSCUP
ここが違う! OSC Tokyo と台湾の COSCUPFuminobu Takeyama
 
トランザクショナルアップデート ― Btrfsを活用したパッケージ更新方法
トランザクショナルアップデート ― Btrfsを活用したパッケージ更新方法トランザクショナルアップデート ― Btrfsを活用したパッケージ更新方法
トランザクショナルアップデート ― Btrfsを活用したパッケージ更新方法Fuminobu Takeyama
 
What is necessary for the next input method framework?
What is necessary for the next input method framework?What is necessary for the next input method framework?
What is necessary for the next input method framework?Fuminobu Takeyama
 
Leap の初のメジャーアップデート! openSUSE Leap 15.0 リリース
Leap の初のメジャーアップデート! openSUSE Leap 15.0 リリースLeap の初のメジャーアップデート! openSUSE Leap 15.0 リリース
Leap の初のメジャーアップデート! openSUSE Leap 15.0 リリースFuminobu Takeyama
 
Portus でプライベート Docker レジストリを構築してみよう(openSUSE の紹介パート)
Portus でプライベート Docker レジストリを構築してみよう(openSUSE の紹介パート)Portus でプライベート Docker レジストリを構築してみよう(openSUSE の紹介パート)
Portus でプライベート Docker レジストリを構築してみよう(openSUSE の紹介パート)Fuminobu Takeyama
 
Portus でプライベート Docker レジストリを構築してみよう ― 予告編 ―
Portus でプライベート Docker レジストリを構築してみよう ― 予告編 ―Portus でプライベート Docker レジストリを構築してみよう ― 予告編 ―
Portus でプライベート Docker レジストリを構築してみよう ― 予告編 ―Fuminobu Takeyama
 
Welcome to openSUSE.Asia Summit 2017
Welcome to openSUSE.Asia Summit 2017Welcome to openSUSE.Asia Summit 2017
Welcome to openSUSE.Asia Summit 2017Fuminobu Takeyama
 
告知LT最終回! openSUSE.Asia Summit 2017 注目セッションのご紹介
告知LT最終回! openSUSE.Asia Summit 2017 注目セッションのご紹介告知LT最終回! openSUSE.Asia Summit 2017 注目セッションのご紹介
告知LT最終回! openSUSE.Asia Summit 2017 注目セッションのご紹介Fuminobu Takeyama
 
今さら聞けない -Linux コマンドラインツールテクニック その1 rev. 4
今さら聞けない -Linux コマンドラインツールテクニック その1 rev. 4今さら聞けない -Linux コマンドラインツールテクニック その1 rev. 4
今さら聞けない -Linux コマンドラインツールテクニック その1 rev. 4Fuminobu Takeyama
 
【openSUSEの最新動向のみ】Solrで日本語全文検索システムの構築と応用
【openSUSEの最新動向のみ】Solrで日本語全文検索システムの構築と応用【openSUSEの最新動向のみ】Solrで日本語全文検索システムの構築と応用
【openSUSEの最新動向のみ】Solrで日本語全文検索システムの構築と応用Fuminobu Takeyama
 
サーバーだけじゃない!Linux デスクトップを使い倒そう その3 ― 今話題の Kotlin から Ruby、C++ 1x…の開発環境を整える
サーバーだけじゃない!Linux デスクトップを使い倒そう その3 ― 今話題の Kotlin から Ruby、C++ 1x…の開発環境を整えるサーバーだけじゃない!Linux デスクトップを使い倒そう その3 ― 今話題の Kotlin から Ruby、C++ 1x…の開発環境を整える
サーバーだけじゃない!Linux デスクトップを使い倒そう その3 ― 今話題の Kotlin から Ruby、C++ 1x…の開発環境を整えるFuminobu Takeyama
 
今さら聞けない! Linux コマンドラインツールテクニック その1 rev. 3
今さら聞けない! Linux コマンドラインツールテクニック その1 rev. 3今さら聞けない! Linux コマンドラインツールテクニック その1 rev. 3
今さら聞けない! Linux コマンドラインツールテクニック その1 rev. 3Fuminobu Takeyama
 
今さら聞けない Linux コマンドラインツールテクニック その1 rev. 2
今さら聞けない Linux コマンドラインツールテクニック その1 rev. 2今さら聞けない Linux コマンドラインツールテクニック その1 rev. 2
今さら聞けない Linux コマンドラインツールテクニック その1 rev. 2Fuminobu Takeyama
 
20161106 osc-tokyo-lt-asia-summit
20161106 osc-tokyo-lt-asia-summit20161106 osc-tokyo-lt-asia-summit
20161106 osc-tokyo-lt-asia-summitFuminobu Takeyama
 
20161106 osc-tokyo-command-line
20161106 osc-tokyo-command-line20161106 osc-tokyo-command-line
20161106 osc-tokyo-command-lineFuminobu Takeyama
 

Mehr von Fuminobu Takeyama (20)

Btrfs + Snapper + Samba で作る「以前のバージョン」に戻せるファイルサーバー
Btrfs + Snapper + Samba で作る「以前のバージョン」に戻せるファイルサーバーBtrfs + Snapper + Samba で作る「以前のバージョン」に戻せるファイルサーバー
Btrfs + Snapper + Samba で作る「以前のバージョン」に戻せるファイルサーバー
 
Geeko Magazine: A Technical Magazine on openSUSE, edited on openSUSE―openSUSE...
Geeko Magazine: A Technical Magazine on openSUSE, edited on openSUSE―openSUSE...Geeko Magazine: A Technical Magazine on openSUSE, edited on openSUSE―openSUSE...
Geeko Magazine: A Technical Magazine on openSUSE, edited on openSUSE―openSUSE...
 
SUSE Studio Express を使ってみた
SUSE Studio Express を使ってみたSUSE Studio Express を使ってみた
SUSE Studio Express を使ってみた
 
Geeko Magazine: A Technical Magazine on openSUSE, editied on openSUSE
Geeko Magazine: A Technical Magazine on openSUSE, editied on openSUSEGeeko Magazine: A Technical Magazine on openSUSE, editied on openSUSE
Geeko Magazine: A Technical Magazine on openSUSE, editied on openSUSE
 
Ruby でできていると言っても過言ではない Linux ディストリビューション―openSUSE
Ruby でできていると言っても過言ではない Linux ディストリビューション―openSUSERuby でできていると言っても過言ではない Linux ディストリビューション―openSUSE
Ruby でできていると言っても過言ではない Linux ディストリビューション―openSUSE
 
ここが違う! OSC Tokyo と台湾の COSCUP
ここが違う! OSC Tokyo と台湾の COSCUPここが違う! OSC Tokyo と台湾の COSCUP
ここが違う! OSC Tokyo と台湾の COSCUP
 
トランザクショナルアップデート ― Btrfsを活用したパッケージ更新方法
トランザクショナルアップデート ― Btrfsを活用したパッケージ更新方法トランザクショナルアップデート ― Btrfsを活用したパッケージ更新方法
トランザクショナルアップデート ― Btrfsを活用したパッケージ更新方法
 
What is necessary for the next input method framework?
What is necessary for the next input method framework?What is necessary for the next input method framework?
What is necessary for the next input method framework?
 
Leap の初のメジャーアップデート! openSUSE Leap 15.0 リリース
Leap の初のメジャーアップデート! openSUSE Leap 15.0 リリースLeap の初のメジャーアップデート! openSUSE Leap 15.0 リリース
Leap の初のメジャーアップデート! openSUSE Leap 15.0 リリース
 
Portus でプライベート Docker レジストリを構築してみよう(openSUSE の紹介パート)
Portus でプライベート Docker レジストリを構築してみよう(openSUSE の紹介パート)Portus でプライベート Docker レジストリを構築してみよう(openSUSE の紹介パート)
Portus でプライベート Docker レジストリを構築してみよう(openSUSE の紹介パート)
 
Portus でプライベート Docker レジストリを構築してみよう ― 予告編 ―
Portus でプライベート Docker レジストリを構築してみよう ― 予告編 ―Portus でプライベート Docker レジストリを構築してみよう ― 予告編 ―
Portus でプライベート Docker レジストリを構築してみよう ― 予告編 ―
 
Welcome to openSUSE.Asia Summit 2017
Welcome to openSUSE.Asia Summit 2017Welcome to openSUSE.Asia Summit 2017
Welcome to openSUSE.Asia Summit 2017
 
告知LT最終回! openSUSE.Asia Summit 2017 注目セッションのご紹介
告知LT最終回! openSUSE.Asia Summit 2017 注目セッションのご紹介告知LT最終回! openSUSE.Asia Summit 2017 注目セッションのご紹介
告知LT最終回! openSUSE.Asia Summit 2017 注目セッションのご紹介
 
今さら聞けない -Linux コマンドラインツールテクニック その1 rev. 4
今さら聞けない -Linux コマンドラインツールテクニック その1 rev. 4今さら聞けない -Linux コマンドラインツールテクニック その1 rev. 4
今さら聞けない -Linux コマンドラインツールテクニック その1 rev. 4
 
【openSUSEの最新動向のみ】Solrで日本語全文検索システムの構築と応用
【openSUSEの最新動向のみ】Solrで日本語全文検索システムの構築と応用【openSUSEの最新動向のみ】Solrで日本語全文検索システムの構築と応用
【openSUSEの最新動向のみ】Solrで日本語全文検索システムの構築と応用
 
サーバーだけじゃない!Linux デスクトップを使い倒そう その3 ― 今話題の Kotlin から Ruby、C++ 1x…の開発環境を整える
サーバーだけじゃない!Linux デスクトップを使い倒そう その3 ― 今話題の Kotlin から Ruby、C++ 1x…の開発環境を整えるサーバーだけじゃない!Linux デスクトップを使い倒そう その3 ― 今話題の Kotlin から Ruby、C++ 1x…の開発環境を整える
サーバーだけじゃない!Linux デスクトップを使い倒そう その3 ― 今話題の Kotlin から Ruby、C++ 1x…の開発環境を整える
 
今さら聞けない! Linux コマンドラインツールテクニック その1 rev. 3
今さら聞けない! Linux コマンドラインツールテクニック その1 rev. 3今さら聞けない! Linux コマンドラインツールテクニック その1 rev. 3
今さら聞けない! Linux コマンドラインツールテクニック その1 rev. 3
 
今さら聞けない Linux コマンドラインツールテクニック その1 rev. 2
今さら聞けない Linux コマンドラインツールテクニック その1 rev. 2今さら聞けない Linux コマンドラインツールテクニック その1 rev. 2
今さら聞けない Linux コマンドラインツールテクニック その1 rev. 2
 
20161106 osc-tokyo-lt-asia-summit
20161106 osc-tokyo-lt-asia-summit20161106 osc-tokyo-lt-asia-summit
20161106 osc-tokyo-lt-asia-summit
 
20161106 osc-tokyo-command-line
20161106 osc-tokyo-command-line20161106 osc-tokyo-command-line
20161106 osc-tokyo-command-line
 

最近良く聞く Kubernetes を体験してみた イントロ + 活用編

  • 1. 2019/2/22最近よく聞く Kubernetes を体験してみた 1/30 最近よく聞く Kubernetes を体験してみた 橋本 修太 武山 文信 日本 openSUSE ユーザ会
  • 2. 2019/2/22最近よく聞く Kubernetes を体験してみた 2/30 本日の内容 ● 少しだけ openSUSE の紹介 ● Kubernetes クラスタ構築してみた ● Kubernetes で自作のアプリを動かしてみる
  • 3. 2019/2/22最近よく聞く Kubernetes を体験してみた 3/30 みなさん って何かご存知ですか?
  • 4. 2019/2/22最近よく聞く Kubernetes を体験してみた 4/30 正しいのはどれ? ● 1. サーバールームでモフモフできるカメレオン型ガジェット ● 2. Ruby で簡単に Web アプリを作れるフレームワーク ● 3. 1996年にドイツで生まれた Linux ディストリビューション
  • 5. 2019/2/22最近よく聞く Kubernetes を体験してみた 5/30 正しいのはどれ? ● 1. サーバールームでモフモフできるカメレオン型ガジェット ● 2. Ruby で簡単に Web アプリを作れるフレームワーク ● 3. 1996年にドイツで生まれた Linux ディストリビューション
  • 6. 2019/2/22最近よく聞く Kubernetes を体験してみた 6/30 正解: 3 ● 3. 20年以上前にドイツで生まれた Linux ディストリビューション – 1996 年: S.u.S.E Linux 4.2 リリース ● これ以前は Slackware + 設定ツールでした ● Q: RedHat 系ですか? Debian 系ですか? A: どちらでもありません! Slackware系でもありません ● Q: OpenSUSE ですか?openSUSE ですか? A: o は小文字です。IPhone ではなく、iPhone なのと同じです
  • 7. 2019/2/22最近よく聞く Kubernetes を体験してみた 7/30 2つの openSUSE Tumbleweed 常に最新 安定 新しいカーネルやライブラリを使いたい人 アプリケーションのテスト環境 有償サポートが不要な人 普段遣いのデスクトップやサーバーに
  • 8. 2019/2/22最近よく聞く Kubernetes を体験してみた 8/30 openSUSE Leap 15.0 1/2 ● SUSE Linux Enterprise 15 ベースの安定志向 ディストリビューション ● エンタープライズ版に openSUSE 独自のパッケージを追加 – CentOS + Fedora のような感じ – デスクトップ環境: Plasma 5.12, GNOME 3.26, XFCE 4.12, MATE, LXQt, etc.
  • 9. 2019/2/22最近よく聞く Kubernetes を体験してみた 9/30 openSUSE Leap 15.0 2/2 ● 年に1回のマイナーアップデート(サービスパック) – 15.1, 15.2, 15.3, … – 15.1 は 2019年5月リリース予定 – 3年に1度程度のメジャーアップデート ● 1つ前のバージョンは 42.3 でした – 15.0 のほうが新しいので注意! – 42.3 は2019年6月末までサポート
  • 11. 2019/2/22最近よく聞く Kubernetes を体験してみた 11/30 スナップショット 新機能: トランザクショナルアップデート ● Btrfs を活用した機能がいろいろ ● トランザクショナルアップデート: スナップショットを使って、複数のパッケージを同時にアップデート – パッケージの不整合防止のダウンタイムを再起動の時間だけに – 詳しくは OSC 2018 Tokyo/Fall のスライドで ストレージ上の データ / libB.so libC.so/usr/bin/A 実行中 /usr/bin/A libB.so libC.so Updated Updated 古いファイル
  • 12. 2019/2/22最近よく聞く Kubernetes を体験してみた 12/30 同人誌も書いています ● コミックマーケットC95で頒布 ● 内容 – openSUSE で Google Drive を使う – Kubic でお手軽 Kubernetes クラス タ構築 – いまさらだけど… Let’s Encrypt で HTTPS を使えるようにする – openSUSE Leap 15.0 でハチプロ を鳴らしてみよう ● お買い求めはブースで!
  • 14. 2019/2/22最近よく聞く Kubernetes を体験してみた 14/30 自作の Web アプリケーションを Kubernetes クラスタにデプロイしてみた 武山 文信 日本 openSUSE ユーザ会
  • 15. 2019/2/22最近よく聞く Kubernetes を体験してみた 15/30 よくあるイメージ Kubernetes って大規模システムでしか 役に立たないのかな? 1 ノード構成でも使えるところがあるのでは?
  • 16. 2019/2/22最近よく聞く Kubernetes を体験してみた 16/30 docker-compose + 便利機能? ● リモート端末から直接コンテナを管理できる – クラスタ側に SSH ログインできるようにする必要なし ● 豊富な REST API を通したアプリ連携 – GitLab から CI で連携したり… ● パフォーマンス、可用性… Kubernetes クラスタ 今回は対象外です コンテナコンテナ コンテナ コンテナ $ kubectl
  • 17. 2019/2/22最近よく聞く Kubernetes を体験してみた 17/30 開発環境 ● openSUSE Kubic をノート PC の KVM 上にインストール ● Master Node と Worker Node を1つにまとめる細工 – VM を何個も動かしたくない – Master node への配置制限の解除 ● クラウドで提供されている K8s のほうが色々楽 – Google Cloud Platform、Azure、IBM Cloud、… – オンプレでもクラウドでも使えるのが K8s 利点 $ kubectl taint nodes ノード名 node-role.kubernetes.io/master:NoSchedule-
  • 18. 2019/2/22最近よく聞く Kubernetes を体験してみた 18/30 題材: 自作 Web アプリ Radish ● Ruby on Rails で実装した Connpass っぽいイベント参加登録アプリ(作りかけ) – 本当に作りかけなので まだ使い物になりません ● 作業の流れ 1. アプリをコンテナ化する 2. K8s クラスタへのデプロイ Dockerfile, イメージ、 ここで紹介する K8s の各種定義、ソースコード https://gitlab.com/ftake/radish
  • 19. 2019/2/22最近よく聞く Kubernetes を体験してみた 19/30 1. アプリのコンテナ対応 ● コンテナを立ち上げたら、すぐ動くようにする ● Stateless にする – コンテナを作り直したときにデータが失われないよう、 データをアプリコンテナ外のデータベース(PostgreSQL)へ ● データベースのデータは永続化するように設定(後述) ● コンテナイメージをレジストリに配置する – ローカルでビルドし、 K8s クラスタがアクセスできるレジストリに push が必要 – GitLab のレジストリを使用 ● 別の方法: ローカルレジストリを作成する https://blog.geeko.jp/ftake/1749 ローカルDockerとの違い コンテナをいつでも 再生成できるように
  • 20. 2019/2/22最近よく聞く Kubernetes を体験してみた 20/30 2. K8s クラスタへのデプロイ ● コンテナ(K8s 用語では Pod)の構成 – radish-server: Rails アプリのコンテナ – postgresql: PostgreSQL のコンテナ ● 保存しておくべきデータはここに radish-server コンテナ (Pod) Postgresql コンテナ (Pod) ブラウザ 直接は通信できない(後述)
  • 21. 2019/2/22最近よく聞く Kubernetes を体験してみた 21/30 まずは PostgreSQL を動かす ● 必要なものは主に3つ – Service クラスタ内から参照できる名前 + ポートで コンテナがサービスを提供することを宣言する ● tcp://postgresql:5432 – Deployment どのようなコンテナ(Pod)を 何個立ち上げるか ● postgresql:10 イメージのコンテナを 1個 – PersistentVolume(永続ボリューム) データを永続的に保存しておく領域 postgres Service postgres コンテナ (Pod) postgres-pv PersistentVolume 他の Pod
  • 22. 2019/2/22最近よく聞く Kubernetes を体験してみた 22/30 YAML ファイル ● docker-compose のように コンテナの定義を YAML で書く apiVersion: apps/v1 kind: Deployment metadata: namespace: radish name: postgresql spec: << …中略… >> strategy: type: Recreate template: metadata: labels: app: postgresql spec: containers: - name: postgresql image: postgres:10 env: - <<…後述…>> << 続く >> apiVersion: v1 kind: Service metadata: namespace: radish name: postgresql spec: selector: app: postgresql type: ClusterIP clusterIP: None ports: - port: 5432 Service tcp://postgresql:5432 提供されるサービスがある Deployment: postgres:10 イメージ でコンテナを1つ起動 app: postgresql を持つ コンテナがサービスを提供
  • 23. 2019/2/22最近よく聞く Kubernetes を体験してみた 23/30 PostgreSQL の保存先を作る apiVersion: v1 kind: PersistentVolume metadata: namespace: radish name: radish-db-pv labels: type: local spec: capacity: storage: 5Gi accessModes: - ReadWriteOnce storageClassName: standard hostPath: path: /var/lib/radish/db apiVersion: v1 kind: PersistentVolumeClaim metadata: namespace: radish name: radish-db-pvc spec: accessModes: - ReadWriteOnce resources: requests: storage: 5Gi storageClassName: standard <<postgresqlのDeploymentの続き>> containers: - name: postgresql image: postgres:10 Env: <<略>> volumeMounts: - name: data-dir mountPath: /var/lib/postgresql/data volumes: - name: data-dir persistentVolumeClaim: claimName: radish-db-pvc DBのデータディレクトリを 永続ボリュームに Claimを満たすVolumeを k8sが割り当て Nodeの/var/lib/radish/db に領域を確保
  • 24. 2019/2/22最近よく聞く Kubernetes を体験してみた 24/30 Apply でリソースを作成 ● 定義ファイルを書いたら kubectl apply でリソースを作成する – 修正したら再度 kubectl apply して OK ● 何個もリソースが作り直されることはない(一種のべき等性) $ kubectl apply -f kube/postgresql.yml $ kubectl apply -f kube/radish-db.yml $ kubectl apply -f kube $ kubectl get pods NAME                          READY     STATUS    RESTARTS   AGE postgresql-7dd686946c-jdw8m   1/1       Running   1          12s $ kubectl get service NAME         TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)          AGE postgresql   ClusterIP   None             <none>        5432/TCP         12s ディレクトリ指定も可 コンテナとサービス状態取得
  • 25. 2019/2/22最近よく聞く Kubernetes を体験してみた 25/30 便利機能1: Name space ● Radishで使用する k8s のリソース(Pod, Service)をまとめる – アクセス制御にも使えるが…今回はスキップ $ docker ps CONTAINER ID IMAGE ... 852e3e9d0756 radish:master ... e03bc13bf859 postgres:10 92ad9078be0e busybox 1215054fd637 registry ac74b987a567 portus 3ef7fb2aa6ce jenkins 13f540dad13f redmine $ kubectl -n radish get pods NAME READY ... postgresql-c9cc48968-k8wfn 1/1 ... radish-d7554c44b-lb9rr 1/1 色々なコンテナが たくさん出てくる radish 関連のコンテナのみ
  • 26. 2019/2/22最近よく聞く Kubernetes を体験してみた 26/30 便利機能2: ConfigMap と Secret ● 設定っぽいものをまとめておける – ConfigMap: 一般用 – Secret: API キーとか ● Deployment で環境変数値を 設定するときに参照できる kind: ConfigMap metadata: name: radish-config namespace: radish data: db.user: postgres db.name: radish kind: Secret metadata: name: radish-secret namespace: radish data: {} stringData: db.password: pAS$w0rd rails.secret_key_base: 3447ef705b… << Deployment の一部 >> env: - name: RADISH_DB_USER valueFrom: configMapKeyRef: name: radish-config key: db.user - name: RADISH_DB_PASSWORD valueFrom: secretKeyRef: name: radish-secret key: db.password
  • 27. 2019/2/22最近よく聞く Kubernetes を体験してみた 27/30 アプリを動かす ● 同じように Deployment と Service を書く ● $ kubectl apply apiVersion: apps/v1 kind: Deployment metadata: namespace: radish name: radish spec: selector: matchLabels: app: radish template: metadata: labels: app: radish spec: containers: - name: radish-server image: registry.gitlab.com/ftake/radish:master imagePullPolicy: Always command: ["bundle", "exec", "rails", "s"] env: << 長いので省略 >> ports: - containerPort: 3000 apiVersion: v1 kind: Service metadata: namespace: radish name: radish spec: selector: app: radish type: NodePort ports: - port: 3000 nodePort: 30080
  • 28. 2019/2/22最近よく聞く Kubernetes を体験してみた 28/30 データベースの初期化 ● コンテナ内のコマンドを実行したい ● kubectl exec で実行できる – 引数は Docker と同じ – コンテナがどこのノードで動いているか気にしなくて良い! ● ● ● Job という方法もあるらしい # コンテナ(pod)の名前を調べる $ kubectl get pods -n radish NAME READY STATUS RESTARTS AGE postgresql-7dd686946c-jdw8m 1/1 Running 0 2d radish-d7554c44b-lb9rr 1/1 Running 0 3d $ kubectl exec -ti radish-d7554c44b-lb9rr /bin/bash # ここからはコンテナの中 $ DISABLE_DATABASE_ENVIRONMENT_CHECK=1 rails db:reset
  • 29. 2019/2/22最近よく聞く Kubernetes を体験してみた 29/30 外からアクセスする ● サービスをクラスタの外に公開する – 方法1: ポートフォワード サービスを Node のポートにマッピング – 方法2: Ingress Nginx Controller URL のパターンで Service に転送 ● どの Worker Node に転送する? – Load balancer を使う ● MetalLB: K8s クラスタからルーターのルーティングをコントロール ● IaaS であれば、提供されているものを使用 – 耐障害性を無視するなら(1ノードなら)決め打ち http://ノード1のIPアドレス:30080/ ● Node まで届ければ kube-proxy が Service に応じてコンテナへ apiVersion: v1 kind: Service metadata: namespace: radish name: radish spec: selector: app: radish type: NodePort ports: - port: 3000 nodePort: 30080 ポートフォワード
  • 30. 2019/2/22最近よく聞く Kubernetes を体験してみた 30/30 感想 ● 抽象化レイヤー(Service, PersistentVolumeClaim)で 実体の差し替えが容易であるが、記述が冗長 ● 各リソースの設定ファイルは書いていればなんとなく分かってくる – 最初は意味不明 ● 外部からのアクセスをどうノードに振り分けるかは 色々考える必要があり大変