Kubernetesのラボ、初期構築(後編)

babyFTHG7303_TP_V

この記事は「Kubernetesのラボ、初期構築(前編)」の続きとなります。

Kubernetesのラボ、初期構築(前編)
あくまでも試みレベルですが、「Kubernetes勉強記事」の連載を始めてみようと思います。 はじめに ラボの構築について、以下...
スポンサーリンク
レクタングル大

これまでやったこと

前編が終わった段階のKubernetes環境構築はこんな感じ。

  • Masterノード(LoadBalancer以外)
  • Workerノード(1と2)

残ってる作業は以下となります。

  • LBノード(LoadBalancer)
  • MasterノードからLoadBalancerの初期設定

終わったら簡単な稼働確認を行います。

LB Nodeの設定

LB Nodeの設定です。

topology4

手順はMasterNodeと殆ど同じです。最後が違うだけ。

Kubenetes Repositoryの設定

/etc/yum.repos.d/kubernetes.repoを「作成」してください。

KubeadmとDockerの導入

以下をコピペしてください。

docker-ceとkubeadmのインストールにバージョンを指定しているのがミソです。現時点でバージョンを指定しなければ、Dockerのバージョンが新しくて、以降のKubernetes init時にエラーが発生します。

とりあえずコピペしてください。

Serviceの初期設定

インストールしたDockerとKubeadmをsystemctlに登録&起動します。firewalldは停止します。ついでにswapをoffします。

結果はこんな感じ。

以下を実行してiptablesを修正します。これをやらないと後述のjoinでエラーが発生します。

Masterのinit時に取得したコマンドを実行します(環境によってstringが違います)。このコマンドでMasterに参加します。つまり、初めてMasterと通信してます。

うまくいけば、こんな感じになります。

失敗したかもしれません。大丈夫です。

もし前回の記事から少し時間を置いて構築している場合、以下のメッセージがLBノード側で表示されてたかもしれません。

実は、このメッセージを表示させるために記事を分けたという意図があったのでした。

初回にMasterノードをinitした時に以下のコマンドをコピーしましたね。

このtokenは24時間しか有効じゃないんです。以下のコマンドをMasterノードで実行してみてください。

「EXPIRES」が、initコマンドを実行した際のトークンの有効期限です。この有効期限以降にjoinコマンドで同じトークンを使用しても、unauthorizedになります。

なので、このトークンは使えないので、もう一つトークンを作ります。

Masterノードで以下を実行してください。

後は出力された結果のコマンドをLBノードで実行するだけです。(ちなみに–ttl=0とは有効期限なしという意味なので、本番で使用してはいけません)

今度はLBNode側で違うエラーが表示されました。これは初回のjoin時にファイルが作られていて、ゴミが残ってるからです。

以下のコマンドで、一度LBNode側をリセットします。(MasterNodeじゃなくてLBNodeでやること)

これでリセットされたはずなので、再度joinコマンドを実行します。

今回は正常に登録できたようですね。

MasterでLBNodeの登録を確認

Workerノードのときと同じです。

以下のコマンドでNodeの登録を確認します。

結果は以下の出力になるはずです。

重要なのは「master/node1/node2/nodelb」の全てが「Ready」になってることです。

繰り返しになりますが、ここまではWorkerノードをMasterに参加させる手順と同じでした。

ここからKubernetesのLoadBalancerとして使える「MetalLB」を導入していきます。

MetalLBの導入

前回の記事でも説明しましたが、MetalLBの導入については以下の記事を参考にさせていただきました。

>>Kubernetes on CentOS7

今回のラボでも上記の「MetalLBのデプロイ」のL2モードを参考に構築しています。

IPアドレスレンジは「192.168.1.85-192.168.1.89」としました。

上記の記事ではtaint/tolerationの設定が紹介されていますが、node affinityで対応することも可能です。Flannel初期設定のセクションでtaint/tolerationはやったので、今回はnode affinityの設定を行ってみます。

既に上記の記事のapplyを行った方は、まずcontrollerを削除します。

次に、nodelbにnode affinityに認識させるラベルを付与します。

ラベルが付与されたかの確認は「kubectl describe node nodelb」で確認します。

ちなみに、以下のコマンドでもラベルだけを確認できます。

metallb.yamlにnode affinityの設定を追加します。

再度適用します。

これでnodelbにcontrollerのPODが起動しました。

簡単な動作確認

これでKubernetesラボ環境は終了です。

ざっくりと動作確認をしてみましょう。

この時点では「deploymentとは?」とか「podとは?」とかの説明を一切していない状態なので、とりあえず「ほぉ〜」と思っていただければ結構です。

この時点の学習レベルだと「環境を汚さないか?削除できないか怖い!」という不安があると思いますので、作成したオブジェクトの削除まで全部やるのでご安心ください。

全てMasterノード(192.168.1.80)で行います。

まず、Kubernetesのオフィシャルサイトでも使われている「kubernetes-bootcamp」イメージをデプロイします。このイメージを使う理由は以下の通り。

  • 初めからweb-serverが入ってるので確認しやすい
  • トップページにpod名を表示する機能があるので、LBの確認がしやすい
  • execでcontainerそのものに入った後にip -aができる。iproutingが予め入ってる。ネットワークの確認がしやすい
これだけで、WebServerが動きました!地味に嬉しい!
上の「Node」列を見ると「node2」との記載があります。つまり、「たまたま」node2上で動きました。

次に外部(192.168.1.0/24のどのホストからでも)アクセスできるように設定します。

以下のファイルをbootcamp.yamlとして保存してください。

適用します。

これでMetalLB設定時のIPレンジからIPが一つ払い出されてLBのVIPとしての役割を担ってるはずです。

確認します。

「EXTERNAL-IP」の列が、払い出されたIPです。

つまり、今回は「192.168.1.185」が払い出されました。

192.168.1.0/24のパソコンから「http://192.168.1.185」にアクセスします。(http://192.168.1.185:32070じゃないです)

bootcamp1

上記のメッセージがでたらOKです。kubernetes-bootcamp-XXの部分は文字列的に違うかもしれませんが、この画面が表示されたということは、Webサーバーの確認ができたということです。

では、後処理をします。

まずServiceを削除します。

次にDeploymentを削除します。

これで検証用に作ったオブジェクトが全て削除されました。

当然、再度同じオブジェクトを作ることもできます。

この時点のスナップショットを取ってください

これでラボ環境が出来上がりました!

嬉しくないですか?私だけでしょうか・・・

喜び勇んで色々試す前に、全4VMのスナップショットを取っておいてください。これで最悪色々試して壊したときにも元に戻れます。

ここまで色々やりました。多分90%くらいの作業は「自分が何をやってるかわからない」状態だったと思います。

次回から色々内容を解説する予定です。

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

コメントをどうぞ

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

次の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="">