Kubernetesについて思うこと、、難しい!

前回の記事でも書きましたが、そろそろKubernetesも自分の範囲内に入れる必要が出てきました。

スポンサーリンク
レクタングル大

Kubernetesって・・・難しい!

これがKubernetesに触れたときの第一印象です。

これまで様々なインフラオーケストレーション製品に触れてきましたが、個人的にはその中でもかなり難易度が高い方だと思います。

これからKubernetesを学ぶ人を脅したい訳ではなく、これが事実として感じたことです。

今では自宅ラボにボタン一つでKubernetes環境を5分で構築できるシステムを作りましたが、ここまで来るまでかなり苦労しました。

今回は、「Kubernetesって難しい!」と思った理由を紹介します。

色んなインフラコンポーネントの事前知識が必要

これが大きい。

例えば「Docker」の知識がないと

そもそもKubernetesで「何ができるか」と「どんな課題を解決するために生み出された製品か」がわかりません。

Dockerなどのコンテナーソリューションの知識を持っている人は、(私の感覚だと)まだまだ多いとは思えません。少なくともVMによるサーバー仮想化よりはエンジニア人口が圧倒的に少ないはず。

なので、Kubernetesを学ぶ際は、まずはDockerを学ぶことになるのですが、そうすると今度は「Linux」の知識がほぼ必須になります。

この複数の知識の積み重ねが面倒で、勉強の途中で投げ出してしまう人が多いのではないでしょうか。

(他にもHTTP,スクリプティングの基本知識も必要ですし)

Kubernetesのネットワークはややこしい

Kubernetesの環境では「ContainerにIP付与するだけで相互接続が可能になる」ような簡単なものではありません。

  • Pod内通信
  • Pod間通信(同一ノード)
  • Pod間通信(異なるノード)
  • さらに、Pod間通信でのClusterIPを経由したケース
  • 外部との通信

などなど、色んな通信パターンが存在し、初期構築時にそれなりに理解しておく必要があります。

ネットワークエンジニアにとっては「現行のオンプレが仮想的に包含された」イメージとして捉えられるかもしれませんが、、ネットワークの知識が浅い方は「なんのこっちゃ」と戸惑ってしまうかと。

これはDockerについても同様なことが言えるのですが、Kubernetesの場合は「異なるノードにPodば分散できる」事がキモなので、上記の通り通信が複雑になる。

Kubernetsのネットワークは本当に難しい。

新バージョンのリリースが早い

正確には「Kubernetesと連携するコンポーネントのリリース時期が異なる」のが初心者にとって混乱を招く。

例えば、現在の最新のDockerバージョンだと最新のKubernetesだと連携できない問題とかが普通に出てくる。

私がこの記事を執筆している時は、Dockerの最新バージョンは「18.03」でした。Kubernetesの最新は「1.12.3」だったのですが、この組み合わせでkubeadm initを実行すると「このDockerのバージョンは対応してない」と怒られる。

これ、初心者にとっては大問題。

何故かと言うと、初心者は「Googleで検索して、引っかかった手順を基に練習環境を構築する」ことが多いからです(私含め)。で、記事執筆時と読者が参照した時点でパッケージのLatestが違うので、初期構築で失敗する事がある。

「手順通りにしたつもりなのに、、、なんで?」

ってなる。

インフラ製品の学習には「自分でイチから構築する」のが最短だと思うのですが、初回構築の難易度が上がってしまう。

初心者向けの記事を書こうか悩み中

幸いにもDocker/Kubernetesの全体像が把握できたので、初心者向けの記事を書こうか悩み中です。

特にネットワークの範囲は、日本語の解説記事が本当に少ない。にもかかわらず、難易度が高い。

勉強を再会する方へ
スポンサーリンク
レクタングル大
  • このエントリーをはてなブックマークに追加

コメントをどうぞ

メールアドレスが公開されることはありません。

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">