ニフクラ ブログ

ニフクラやクラウドの技術について、エンジニアが語るブログです。

【レポート】第30回ニフクラエンジニアミートアップ『今さら聞けない人のためのKubernetes超入門』

2020年10月28日(水)に第30回ニフクラエンジニアミートアップを開催しました。

今回のテーマは、「今さら聞けない人のためのKubernetes超入門」ということで、これからKubernetes(K8s)を使ってみたいと思っている人、すでに導入しているがまだまだ分からないことがあって本格的な利用に至っていない人に、あらためてKubernetesを解説するのが今回の趣旨でした。

まずはMinikubeによるミニマム環境を教材にkubernetesの基本的な仕組み理解をおさらいをして、続いて一歩進んだ活用法としてKubernetesクラスタ構築ツール「kubeadm」によるKubernetes構築・運用、そして応用編としての軽量kubernetes環境K3sのご紹介という豪華3本立ての実践的な「Kubernetes超入門」となりました。

引き続きkubernetes熱がどんどん上昇しているのか、ニフクラエンジニアミートアップ史上、最多の動員を記録しました。 みなさま、本当にありがとうございました。

fujitsufjct.connpass.com

『今さら聞けない人のためのKubernetes超入門』

まず、トップバッターは日本仮想化技術の宮原氏による今回のイベントと同名のセッションです。

最近、本腰を入れて「Kubernetes」を使い始めたという宮原氏ですが、まずはお試し環境でKubernetesの使用法を勉強して仕組みを理解できるようにするという内容です。

Minikubeを使ったミニマム環境で導入・実際に動かしてみてわかったこと、今後の課題までを語って下さいました。

Minikubeでお試し環境をつくる

Minikubeは「本当はあまり使いたくなかった」そうですが、クラウドサービスを利用して構築を試みたところ挫折したため、手近なローカル検証環境で動かせるMinikubeを使ってみたとのこと。

f:id:sameshima_fjct:20201124175120p:plain
Kubernetesを使う方法はいくつかある

なぜ、Kubernetesか?ということですが、コンテナを大規模に利用するためには一元管理のためにオーケストレーションツールが必須であり、自動回復できるとかCI/CDによりデプロイのスピードを速められるとか、マイクロサービス化とか複合的な要因があるようです。

このあたりは、日本企業に求められているDX化に必要な要素を多く含んでいるように見えることから、さらに期待値が上昇している感があります。

Minikubeならば、Webブラウザーからダッシュボードを介して視覚的に状態確認や操作が行えるというメリットがあります。 まずは、公式サイトのドキュメントを読みながらインストールして、起動します。

f:id:sameshima_fjct:20201124181246p:plain
何の変哲も無い普通のMinikubeのダッシュボード

Podを作って基本的な動作を確認

さっそく、簡単なPodを起動して、Podにアクセスして状況を確認します。

f:id:sameshima_fjct:20201124175936p:plain
Podにアクセスしてみた

ダッシュボードもしくはコマンドで、スケールの操作を行うことができます。 実際にPodに含まれるコンテナの増減を行って、その状況を確認してみます。

f:id:sameshima_fjct:20201124181909p:plain
スケールの操作を確認してみた

続いて、必ずハマる人がいると断言してもいいネットワーク構成に関しても、実際にどういう仕組みになっているかスケールした場合も含めて図解します。

f:id:sameshima_fjct:20201124182723p:plain
Minikubeのネットワーク構成

今後の課題

最後に、今後の課題がまとめとして提示されました。 Kubernetesは頻繁にバージョンアップしているので、環境を色々変えて試してみる必要があるようです。

f:id:sameshima_fjct:20201124183808p:plain
K8sの進化に追いつくためには情報収集に励むか、試すしか無い
ここまでくると複数ノードの構成を試してみたくなるのが人情ですが、複数ノードの構成がMinikubeではできないので、この次のステップに進むには、世良氏および矢野氏のお話にでてくるようなツールを利用することになります。

詳しくは、こちらのスライド、動画をご覧ください。

www.slideshare.net

youtu.be

『初めてKubernetesクラスタを作る人のためのkubeadm入門』

続いて、エンジニアミートアップ常連である弊社の世良による「Kubeadm」に関するセッションです。

f:id:sameshima_fjct:20201124191725p:plain
Kubeadmとは?読み方が難しいのはK8s界の伝統なのか?

Kubeadmは公式ツールであるにも関わらず情報が少ないということで、世良自身が人柱になって世界初のKubeadm解説書「解体Kubeadm フェーズから読み解くKubernetesクラスタ構築ツールの全貌」という書籍を出したばかりです。

nextpublishing.jp

今回は、Kubeadmを使ってKubernetesクラスタを作るための基本的な知識と構築について初心者向けに解説するという内容でした。

Kubernetesクラスタを構成するコンポーネント

そもそも、Kubernetesクラスタって何?という状態の人も多いので、まずはそこから解説します。

コンテナをいい感じに管理するコントロールプレーンと、コンテナを実際に動かすノードの役割を理解すればKubernetesクラスタを概ね理解したと言って過言ではないとのことです。 この2つがあることで、Kubernetesクラスタをいい感じに管理できて、APIサーバーであるKubernetesAPIが中心になって各コンポーネントと通信を行うことで色々な操作を行うということです。

f:id:sameshima_fjct:20201124185752p:plain
コントロールプレーンとノードを理解すればOK

Kubeadmの基本

Kubeadmは、先に触れたように公式Kubernetesクラスタ構築・運用ツールですが、Kubeadmのコアデザインプリンシプル(基本原理?)は下記の3つだそうです。

1.Secure(セキュア)
2.Easy to use(簡単に使える)
3.Extendable(拡張可能)

実際に、構築したクラスタは下記のような構成になります。

f:id:sameshima_fjct:20201126105230p:plain
kubernetesクラスタの基本はコントロールプレーンとノード

KubeadmによるKubernetesクラスタ構築

Kubeadmによって構築したKubernetesクラスタも、コントロールプレーンが1台だと単一障害点になってしまうため、マルチコントロールプレーンの構成にする必要があるようです。

f:id:sameshima_fjct:20201124193823p:plain
冗長化するための手順。LBはよくあるやつで問題ないそうです。

Kubeadmで本番用のK8sクラスタ運用は大変?

最後に補足として、KubeadmでKubernetesの本番環境用のクラスタ運用を行うのは、非常に面倒であり、結局はクラウド事業社がサービス提供しているいわゆる「as a service」を使うのが無難とのこと。検証用としての利用はKubeadmで問題ないが、高可用のシステムを作るのには向いていないからだそうです。

しかし、Kubernetesを理解するためには使ってみることが重要・・・というのは宮原氏のセッションと似た結論になります。

詳しくはこちらをご覧ください。 youtu.be

さらに詳しい話は繰り返しになりますが、こちらの書籍をお勧めします。 nextpublishing.jp

『軽量Kubernetes環境K3sのご紹介』

最後が、飛び入りで参加することになった株式会社スタイルズの矢野氏です。 同氏はK8s関連のミートアップに何度か登壇いただいていますが、今回は軽量Kubernetes環境である「K3s」をご紹介いただきました。K3sはOSSですが、Rancher Labs社のプロダクトで有償サポートを行っている(日本では株式会社スタイルズが対応)そうです。

Kubernetesの学習は良い検証環境が重要

宮原氏のセッションでも感じたことですが、Kubernetesの学習はとにかくやってみることが重要なのですが、検証環境を作るの大変という課題があります。そこで、比較的低コストで用意できる検証環境で動作する特徴を持つ軽量Kubernetesが「K3s」です。

f:id:sameshima_fjct:20201124200056p:plain
K3sとは何か?K3sならではの特徴が多いです

マルチCPUアーキテクチャー対応で、Raspberry PiのCPUに使われるARMでも動作することからIoTなどの用途で使うのに向いているようですし、MySQLやPostgreSQLをデータストアとして使えることもあって既存のDB管理手法が使えるのもメリットです。

f:id:sameshima_fjct:20201124201358p:plain
etcdではなく、慣れ親しんだDBが使える!

f:id:sameshima_fjct:20201124201949p:plain
詳しくは日本語マニュアルを読んでください
youtu.be

ということで、全てのセッションが終わりました。

最後は質問コーナーがあり、チャットでもリアルタイムで質問に答えたり活発な交流が行われました。

まとめ

また、宮原氏もコメントしていましたが、3つのセッションを通してKubernetesを学習するための環境がいい感じに紹介できたのではないかと思います。

1.最低限のミニマムな方法
2.公式ツール+解説書
3.有償サポート付きのマネージド環境

コンテナ環境、特にKubernetesはこれからより大規模かつミッションクリティカルな環境にも使われていく流れが進むと予想されますが、最新情報の入手・追従が引き続き重要です。そして、いちばん必要なのは優れた検証環境を用意して実際に触ってみることではないでしょうか?

最後にちょっと宣伝ですが、ニフクラのマネージドKubernetes環境であるHatoba(β)も、ぜひ検証環境としてご活用ください。