友人や知人から、Kubernetesの学習をどこでどのように開始できるかについて質問が寄せられることがよくあります。これらのリクエストは、VMやモノリスアプリケーションなどのレガシーシステムを引き続き使用しているOpsとDevsの両方の人々の混合バッグからのものです。 CI / CDやDevOpsのような用語は、日常の職務要件の一部として維持しているレガシーシステムに水をまき、供給することにまだ忙しいため、流行語にすぎません。
VMからコンテナに移行するワークロードがますます増えていることに気付いた今、彼らは関心を示しています。モノリスアプリケーションは、イノベーションを簡単に処理し、急速な市場の需要に対応するためにマイクロサービスに再構築されています。今こそ、Kubernetesへの大規模な移行を引き起こすツール、プラットフォーム、ソリューションを学ぶときです。
これにより、この記事を書くようになり、Kubernetesの学習を始めたいと思っていた友人や他の人たちが、コンテナーとクラウドネイティブアプリケーションの世界に向けて自分たちの旅を推し進めることができるようになりました。
免責事項:Kubernetesを学ぶことは、でこぼこ道になります。アプリケーションをクラウドネイティブな方法で管理およびデプロイするためのいくつかの新しい用語と新しい方法を学習します。
では、とにかくKubernetesとは何ですか?
Kubernetesを学習するときに最初に行うことは、Kubernetesが何であるかを明確に説明することです。最も基本的な説明を得るのに使用できる本やYouTubeの参考資料はたくさんあります。このYouTube動画、 The Illustrated Children’s Guide to Kubernetesを見つけました。 Kubernetesが何であるかを最もよく説明していると思いました。読む前に見てください。
Kubernetesコンポーネント
Kubernetesは単一のマシンではなく、プラットフォームです。 Kubernetesをデプロイすると、クラスターが取得されます。クラスターは、コンテナー化されたアプリケーションを実行する、ノードと呼ばれるマスターマシンとワーカーマシンのセットで構成されます。すべてのクラスターには、少なくとも1つのワーカーノードがあります。これらはKubernetesコンポーネントです。
以下は、すべてのコンポーネントが結合されたKubernetesの外観です。
Kubernetesを学習するときは、クラスターをデプロイする必要があります。しかし、それは、追加のハードウェアを手に入れて、必要なネットワークおよびコンピューティングリソースと一緒にセットアップする時間を見つけることができない人々にとっては課題になります。この要件により、Kubernetesの旅が始まる前に脱線することがよくあります。では、始めるための最良の方法は何ですか?
幸い、ラップトップからKubernetesクラスターをデプロイできるオープンソースプロジェクトが複数あります。 Kubernetesを学習し、最初のクラウドネイティブアプリケーションをデプロイするための最良の方法について私自身の意見を述べる前に、これらのプロジェクトを見てみましょう。
これらは、Kubernetesを探索するために使用できるローカルプロジェクトです。これらのプロジェクトはエンタープライズ対応ではなく、学習目的でのみ使用されることになっていることに注意してください。
注:Kubernetesの探索を開始する前に、ラップトップに十分なリソースがあることを確認してください。
- Linux:Red Hat Enterprise Linux、Fedora、CentOS
- マシンあたり16GiB以上のRAM(それ以下の場合、アプリ用のスペースはほとんどありません)。
- コントロールプレーンノードとして使用するマシン上の2つのCPU。
- クラスター内のすべてのマシン間の完全なネットワーク接続。
ミニクベ
Minikubeは、これらのオプションの中で最も簡単にインストールできるものの1つです。 VirtualBoxまたはKVMのいずれかで実行されるシングルノードクラスターを提供します。
リソース要件:
- CPU:2
- メモリ:2 GB
- ディスク容量:20 GB
実行中のクラスター(シングルノード)ができたら、kubectlコマンドラインを使用してローカルのKubernetesクラスターと対話するための単純なアプリケーションをデプロイすることで、慣れることができます。 minikubeの使用中に気付いた唯一の問題は、クラスターエクスペリエンスを完了するためのワーカーノードの追加の制限です。
種類
Kindでは、DockerコンテナでKubernetesを実行する必要があります。親切なインストール手順はここにあります。
種類はインストールが簡単ですが、このプロジェクトを使用する際に私が目にする問題は、クラスターにアクセスするための複雑なネットワーク構成です。 Kubernetesを学び始めたばかりの人にとって、それは法外なことかもしれません。
リソース要件:
- CPU:2
- メモリ:8GB
- ストレージ:20GB
kubeadm
kubeadmを使用したクラスターのスピンアップを使用して、クラウドネイティブアプリケーションをデプロイできます。まず、単一のマスターノードとワーカーノードがあります。
ラップトップにkubeadmをインストールすることは、本番環境グレードのKubernetesクラスターのデプロイに最も近いエクスペリエンスです。このため、kubeadmはおそらくKubernetesを学ぶのに最も難しい方法です。
リソース要件:
- CPU:2
- メモリ:8GB(アプリケーションの展開には追加のメモリが必要です)。
- ストレージ:20GB
ミニシフト
Minishiftは、OpenShiftの背後にあるアップストリームであるOKDに基づくプロジェクトです。 Minishiftをインストールすると、VirtualBoxまたはKVMのいずれかで実行されるシングルノードのOpenShiftクラスターが提供されます。
リソース要件:
- CPU:2
- メモリ:4 GB
- ストレージ:20 GB
Minishiftはインストールが簡単で、Linux、Windows、macOSにインストールできるため、他のプロジェクトに比べて柔軟性があります。
MinishiftはOKDに基づいているため、Kubernetesの基本だけでなく、OpenshiftおよびMinishiftで使用可能ないくつかのコンポーネントについても学ぶことができます。
Minishiftの欠点は、OKD 3.11のみをサポートするため、新しいバージョンのOKD 4を完全に体験できないことです。ここで説明するように、MinishiftはCodeReady Containersに置き換えられ、OKD4を完全に体験できます。
CodeReady Containers(CRC)
CRCはOKD4.1に基づいており、ラップトップで単一ノード構成を提供します。 Minishiftやminikubeとほぼ同じように動作します。インストールも簡単です。ドキュメントはここにあります。
リソース要件:
- CPU:4
- メモリ:8 GB
- ストレージ:30 GB
[この無料の電子書籍を入手する:ダミーのKubernetesクラスターを管理する。 ]
現在のIT革命の中心にある重要なスキルを習得するための独自の旅を始めるために、Kubernetesをローカルにデプロイする方法はたくさんあります。
始めたばかりの場合は、minikubeを使用してKubernetesを学習することをお勧めします。これは、初心者にとって最も簡単であることがわかったためです。 Kubernetesの概念に慣れたら、次のステップはCRCに進むことです。これにより、Kubernetesのスキルが次のレベルに上がり、ほとんどの高度なアダプターがすでに使用しているエンタープライズ対応のコンポーネントを学ぶことができます。
前述のように、Kubernetesを学ぶことは、Linuxオペレーティングシステムをもう一度学ぶことに似ています。障害にぶつかっても落胆しないでください。このテクノロジーをしっかりと把握することは、将来に投資するようなものであり、ある意味で、将来を保証するのに役立ちます。