Kubernetesを
超雑にまとめてみました
2019年12⽉19⽇発⾏
Kubernetesとは
• アプリケーションをコンテナー上で良い感じに動かすツール
• コンピュート、ネットワーク、ストレージリソースを提供
• よく知られている機能
• アプリのスケール
• ローリングアップデート
• L4/L7ロードバランス
2
CRI
• コンテナーランタイムインターフェイス
• その名の通り、コンテナーを作るために使われる
• 例えば
• Docker
• Containerd
• Kata Container
• CRI-O
3
CNI
• コンテナーネットワークインターフェイス
• ネットワーク関連を提供するために使われる
• 例えば
• Flannel
• Calico
• Canal
• Cilium
• Tungsten Fabric
• 他、色々
4
CSI
• コンテナーストレージインターフェイス
• 任意のストレージシステムをコンテナワークロードに公開する
ために使われる
• CSIはKubernetes v1.9でアルファ、v1.10でベータ、
Kubernetes v1.13でGA
• 以前はFlexVolume DriverによってKubernetesとストレージ
を連携していた
5
Kubernetesで使えるストレージ
• 例えば
• Amazon EBS
• vSphere Volume
• Cinder
• NFS
• iSCSI
• FC
6
• Ceph
• Cephfs
• GlasterFS
• …など
• 一覧はこちら
割と使いやすいやつ
• Rook
• K8sでストレージを簡単に利用
• Ceph
• EdgeFS
• Minio
• NFS
7
ストレージ周りをざっくり
• Storage Class
• ストレージ
• Persistent Volumes
• 永続化ボリューム
• Dynamic Volume Provisioning
• 動的なプロビジョニング
• 対応していないストレージもある
8
Storage Class
PV
PVC
Pod
PV
PVC
Kubernetesとインストーラー
9
Minikube
• Kubernetesをラップトップなどで環境を作ってお試しするもの
• 1バイナリ、Windows、macOS、Linuxに対応
• コマンドを使っていくつかの主要機能を追加できる
• VT-xもしくはAMD-vが必要
10
Minishift
• OpenShiftをラップトップなどで環境を作ってお試しするもの
• 動作可能なのはOpenShift 3.xまでなので注意
• VirtulBoxか以下の導入が必要
• Linux…KVM+Driver
• macOS…xhyve or hyperkit
• Windows…Hyper-V
11
CodeReady Containers(CRC)
• OpenShift 4.xを手軽に(?)環境を作ってお試しするもの
• 無料で使える
• CRCインストーラーのダウンロードにはRed Hatアカウントが必
要
12
Kubeadm
• Kubernetesクラスターを構築するツール
• コンテナーランタイムを予めインストールしたうえで、インス
トーラーを実行
• CNIを追加するとKubernetes環境が完成
• クラスター化も可能
• HAはちょっと面倒
13
Conjure-up
• カノニカルが作ったOpenStackとKubernetesを簡単にセット
アップするパッケージ
• Snapパッケージで提供
• ここ最近はOpenStackは「microstack」、Kubernetesは「
microk8s」を提供しているので、このプロジェクトの今後がど
うなるかはわからない
14
microk8s
• カノニカルが作ったKubernetesを簡単にセットアップするパッ
ケージ
• Snapパッケージで提供
• マイナーバージョンは自動更新
• コマンドを使っていくつかの主要機能を追加できる
• クラスターも組める
15
Juju
• カノニカルが提供するアプリケーションのオーケストレーショ
ンツール
• マルチクラウド対応
• Kubernetes、OpenStack etc…など高可用デプロイまでサポー
ト
• GUI/CLIが存在する
• アプリケーションをカタログから選んでデプロイ
16
Rancher
• Rancher Labが提供するツール
• Dockerホストを用意して指示されたコマンドを実行するだけで
Kubernetes環境を作れる
• etcd、ctl、workerノードを分けた構成ができます
• RancherのDashboardは便利
• 複数のKubernetesを管理
• CNIを選択可能(Flannel,Calico,Canal,Weave Net)
• アプリケーションをカタログから選んでデプロイ
17
k3s
• Rancher Labが提供するツール
• 1バイナリーでKubernetesを構築
• クラスター化も対応
• マルチアーキテクチャー(amd64,armhf,arm64 etc)
• Linuxをインストールして1行コマンドを打つだけ
• クラスターもクレデンシャルを含めて1行コマンドを打つだけ
• IoT機器でも動かせるくらい軽量(512MBメモリーでも動作)
18
k3OS
• Rancher Labが提供するツール
• k3sが動くMinimal LinuxのLiveイメージを提供
• インストールも可能
• Alpine Linuxベース(らしい)
19
k3d
• Rancher Labが提供するツール
• k3sをDockerコンテナー上で動かす
• 必要なもの: Docker、wgetかcurl
20
rke
• Rancher Labが提供するCLIツール
• Dockerホストを用意してrkeを使ってKubernetesをデプロイ
• 必要に応じてRancherにクラスターを登録
• CNIを選択可能(Flannel,Calico,Canal,Weave Net)
21
Docker for Windows/Mac
• DockerのWindows版やmacOS版にはKubernetesをデプロイす
る機能が提供されている
• Windows版はHyper-Vが必要(なのでPro Edition以上が必要)
• macOS版は特に前提条件なし
22
他のソリューション
• Kubernetesソリューションは各社色々用意されている
• 一覧はこちら
• https://kubernetes.io/docs/setup/
23
(K8s関連ではないけど)Multipassの紹介
• WindowsやmacOSで簡単にUbuntuインスタンスを作って使え
るCLIツール
• コレ+snapパッケージを使って、KubernetesやOpenStackなど
もセットアップできます
• microstack
• microk8s
24
インストールしてみよう
25
Minikubeの場合
• minikubeをダウンロード
• minikube start
• 詳細は公式サイトへ
26
Microk8sの場合
• snapdをインストール
• snap install microk8s --classic --stable
• sudo microk8s.status
• 詳細は公式サイトへ
27
k3sの場合
• Linuxをインストール
• curl -sfL https://get.k3s.io | sh -
• k3s kubectl get node
• 詳細は公式サイトへ
28
動かしてみよう
29
チュートリアル
• 「Kubernetesの基本を学ぶ」の項目2から実施してみよう
30

Kubernetes雑にまとめてみた 2019年12月版