kubesprayを使ったKubernetesのインストール
このクイックスタートは、Kubesprayを使用して、GCE、Azure、OpenStack、AWS、vSphere、Equinix Metal(以前のPacket)、Oracle Cloud Infrastructure(実験的)またはベアメタルにホストされたKubernetesクラスターをインストールするためのものです。
Kubesprayは、汎用的なOSやKubernetesクラスターの構成管理タスクのためのAnsibleプレイブック、インベントリー、プロビジョニングツール、ドメインナレッジをまとめたものです。
Kubesprayは次を提供します:
- 高可用性クラスター。
- 構成可能(例えばネットワークプラグインの選択)。
- 最もポピュラーなLinuxディストリビューションのサポート:
- Flatcar Container Linux by Kinvolk
- Debian Bullseye, Buster, Jessie, Stretch
- Ubuntu 16.04, 18.04, 20.04, 22.04
- CentOS/RHEL 7, 8, 9
- Fedora 35, 36
- Fedora CoreOS
- openSUSE Leap 15.x/Tumbleweed
- Oracle Linux 7, 8, 9
- Alma Linux 8, 9
- Rocky Linux 8, 9
- Kylin Linux Advanced Server V10
- Amazon Linux 2
- 継続的インテグレーションテスト。
あなたのユースケースに最適なツールの選択には、kubeadmやkopsと比較したドキュメントを参照してください。
クラスターの作成
(1/5) 下地の要件の確認
次の要件に従ってサーバーをプロビジョニングします:
- Kubernetesの最低必要バージョンはv1.22
- Ansibleのコマンドを実行するマシン上にAnsible v2.11+、Jinja 2.11+とpython-netaddrがインストールされていること
- ターゲットサーバーはdockerイメージをpullするためにインターネットにアクセスできる必要があります。そうでは無い場合は追加の構成が必要です(オフライン環境を参照)
- ターゲットのサーバーはIPv4フォワーディングができるように構成されていること。
- PodとServiceにIPv6を使用している場合は、ターゲットサーバーはIPv6フォワーディングができるように構成されていること。
- ファイアウォールは管理されないため、従来のように独自のルールを実装しなければなりません。デプロイ中の問題を避けるためには、ファイアウォールを無効にすべきです
- root以外のユーザーアカウントでkubesprayを実行する場合は、ターゲットサーバー上で特権昇格の方法を正しく構成されている必要があります。そして、
ansible_become
フラグ、またはコマンドパラメーター--become
、-b
を指定する必要があります
Kubesprayは環境のプロビジョニングを支援するために次のユーティリティを提供します:
- 下記のクラウドプロバイダー用のTerraformスクリプト:
(2/5) インベントリーファイルの用意
サーバーをプロビジョニングした後、Ansibleのインベントリーファイルを作成します。これは手動またはダイナミックインベントリースクリプトによって行うことができます。詳細については、"独自のインベントリーを構築する"を参照してください。
(3/5) クラスター作成の計画
Kubesprayは多くの点でデプロイメントをカスタマイズする機能を提供します:
- デプロイメントモードの選択: kubeadmまたはnon-kubeadm
- CNI(ネットワーク)プラグイン
- DNS設定
- コントロールプレーンの選択: ネイティブ/バイナリまたはコンテナ化
- コンポーネントバージョン
- Calicoルートリフレクター
- コンポーネントランタイムオプション
- 証明書の生成方法
Kubesprayはvariableファイルによってカスタマイズできます。Kubesprayを使い始めたばかりであれば、Kubesprayのデフォルト設定を使用してクラスターをデプロイし、Kubernetesを探索することを検討してください。
(4/5) クラスターのデプロイ
次にクラスターをデプロイします:
クラスターのデプロイメントにはansible-playbookを使用します。
ansible-playbook -i your/inventory/inventory.ini cluster.yml -b -v \
--private-key=~/.ssh/private_key
大規模なデプロイメント(100以上のノード)では、最適な結果を得るために個別の調整が必要な場合があります。
(5/5) デプロイの確認
Kubesprayは、NetcheckerによるPod間の接続とDNSの解決の検証を行う機能を提供します。Netcheckerは、netchecker-agents Podがdefault名前空間内でDNSリクエストを解決し、互いにpingを送信できることを確かめます。これらのPodは他のワークロードと同様の動作を再現し、クラスターの健全性を示す指標として機能します。
クラスターの操作
Kubesprayはクラスターを管理する追加のプレイブックを提供します: scale と upgrade。
クラスターのスケール
scaleプレイブックを実行することで、クラスターにワーカーノードを追加することができます。詳細については、"ノードの追加"を参照してください。 remove-nodeプレイブックを実行することで、クラスターからワーカーノードを削除することができます。詳細については、"ノードの削除"を参照してください。
クラスターのアップグレード
upgrade-clusterプレイブックを実行することで、クラスターのアップグレードができます。詳細については、"アップグレード"を参照してください。
クリーンアップ
resetプレイブックを使用して、ノードをリセットし、Kubesprayでインストールした全てのコンポーネントを消すことができます。
フィードバック
- Slackチャンネル: #kubespray (ここから招待をもらうことができます)。
- GitHub Issues。