ConoHaでKubernetes環境を構築できなかった話

スポンサーリンク

概要

VPSサービスのひとつであるConoHaでKubernetes環境を構築しようとして失敗したので、なぜ失敗したのかを私なりに考察して説明します。

インストール方法

まず、どのようにインストールしたのかというと、最終的に2つの方法でインストールに挑戦しました。

ひとつめは手動でKubernetesの環境をを構築しようとしました。この方法ではそれっぽく動いていたのですが、あるときうまく動かないことに気づきました。どのようなときに動かなかったのかは後述します。

うまく動かないので、インストールの仕方が悪いと思い、kubeadmというものを使ってインストールしました。しかしこれも、手動でKubernetesの環境を構築した時と同じ状況である操作がうまく動作しませんでした。

不具合

そもそも、どのような不具合があったのかを説明します。

まず、2つのノードがあるときに、片方でサービスを起動してnodeサーバのポートを開きます。通常、Kubernetesではサービスでポートを開いたときに、全てのnodeで同じポートが開かれ、どのnodeのポートにアクセスしてもPodに接続できます。

しかし今回の場合では、Podが起動しているnodeに接続した場合はうまく動作したのですが、Podが起動していない方のnodeにアクセスした場合に、別のnodeで起動されているPodに接続できませんでした。

これが動作しない部分になります。

原因

色々と調べてみると、nodeのPodから別のnodeのPodにも接続できないようになっていました。

このことから、node間で通信がうまくおこなえていないと思い、ネットワーク周りを調べてみると、ファイアウォールでパケットが捨てられていることに気づきました。

なぜこのようなことが起きたのか考察してみます。

Kubernetesで作られるコンテナは独自のネットワークを構築して通信しています。

このとき、別のnodeのコンテナと通信するときには、そのnodeあてのパケットとして、元のパケットを元に加工して、送信します。

おそらくこのときにファイアウォールでは、パケットの中身を解析して、不正なパケットとしてこのパケットを捨てているのだと思います。

実際にネットで検索してみると、ConoHaではネットワークの送信元がConoHaで割り当てられたIPアドレスでない場合に通信ができないという情報を見つけました。

このことからも、Kubernetes独自のネットワークで割り当てられたIPアドレスからパケットを送信しているのでうまく通信できないということが分かります。

対応

これに気づいてから、色々と考えて実行してみましたが対応策はないように思います。

まとめ

もし、ConoHaでKubernetes環境を作りたいという場合はやめたほうがいいでしょう。

ちなみに、私は現在DigitalOceanを使ってKubernetes環境を構築して使っていますが、こんなことにはなっていません。

スポンサーリンク

シェアする

フォローする