コンテナオーケストレーションツールとして知られる「Kubernetes」とHashiCorpが提供する「Nomad」を比較検証する本連載。第2回はKubernetesを用いたクラスタ構築の手順やKubernetesの構成要素についてネットワーク、シークレット管理を中心に解説します。
この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。
コンテナ実行基盤である「Nomad」の仕組みや構造を解説する前に、コンテナ実行基盤のスタンダードとして注目されているKubernetesの仕組みや内部構造を解説します。なお今回はAWS(Amazon Web Services)でkubeadmを利用してKubernetesクラスタを構築するのにどれくらいのステップと時間が必要かを確認しました。
AWS EC2でUbuntu 20.04 LTS AMIから作成したVM(仮想マシン)にKubernetesクラスタを構築しました。2021年6月時点の内容になります。
クラスタ構築の手順は以下の通りです。
公式ドキュメントに記載されている順番で、1〜9までのステップで5分かかることなく構築できました。実行したコマンドラインの内容は弊社ブログに投稿していますので、参考にしてください。
Kubernetesのネットワークは幾つかある概念により構成されています。登場するネットワークとコンポーネントが複数存在するうえに、CNI(Container Network Interface)によるカスタマイズの幅が広いため、やや複雑に感じられるかもしれません。
Kubernetesをホストするマシンが属しているネットワークです。
Pod同士が通信するためのネットワークです。
クラスタ内仮想ネットワークです。Service(※)を作成すると、このネットワークのセグメントに仮想IPが割り当てられます。
※ネットワークにおける「Service」とはKubernetesのServiceリリースのことを指します。
さまざまな実装が存在しておりkubeletのプラグインとして動作します。主にPodのIP管理とクラスタネットワークにPodを参加させる役割を担います。
kube-proxyがServiceの変更をウォッチしておりiptablesなどをServiceの要件に合うよう設定します。それによりServiceからPodへの通信、ロードバランシングなどを実現しています。
CNIがPodにIPを割り当てます。著者が知る限り、ほとんどの場合Node NetworkとCluster Networkは異なるので、ネットワークパケットのカプセル化やルーティングなどの方法を使い、Cluster Network内のPod同士が通信できるようにCNIを設定します。
Copyright © ITmedia, Inc. All Rights Reserved.