KlusterKit: Kubernetes のデプロイメントを簡素化し、物理的に分離されたオンプレミス環境で実行するためのオープンソース ツールキット
本日、Platform9 が 2.0 つのツールのスイートである Klusterkit を GitHub 上の Apache vXNUMX ライセンスに基づいてオープンソース化したことを発表できることを嬉しく思います。
当社のクライアントは、多くの場合 (セキュリティまたはその他の理由で) インターネットに接続されていないプライベート データ センターでソフトウェアを展開しています。 これらの大企業は、Kubernetes を活用してアプリケーションを最新化すると同時に、外部の世界に接続されていないことが多いさまざまなデータセンターにアプリケーションを展開したいと考えています。 ここで Klusterkit が登場し、物理的に分離された環境での K8s クラスターのプロビジョニングと管理が容易になります。
Klusterkit には、Kubernetes 運用クラスターのライフサイクルを管理するために一緒にまたは個別に使用できる XNUMX つの独立したツールが含まれています。
etcdadm , etcd クラスター管理を簡素化するための CLI。ノード管理 、kubeadm を拡張し、kubeadm に必要な依存関係をデプロイするノード管理用の CLI。CCTL は、Kubernetes コミュニティのクラスター API を採用し、nodeadm と etcdadm を使用して、オンプレミス環境や物理的に分離された環境でも可用性の高い Kubernetes クラスターをシームレスに配信および維持するクラスター ライフサイクル管理ツールです。
これら XNUMX つのツールを組み合わせて、次のタスクを実行します。
- クラスター API を使用して、物理的に分離されたオンプレミス環境で高可用性 etcd クラスターと Kubernetes ダッシュボードを簡単にプロビジョニングおよび管理します。
- etcd バックアップを使用した障害後のクラスター コントロール パネルの復元。
- Kubernetes を物理的に隔離された環境に配信するために必要なすべてのアーティファクトをパッケージ化します。
クラスターキットの機能
- マルチマスターのサポート (HA クラスター K8)。
- 安全な etcd クラスターの配信と管理。
- 物理的に隔離された環境で作業する。
- ローリング アップグレードとロールバックをサポートします。
- バックエンドの CNI としての Flannel (vxlan)。 他の CNI もサポートする計画があります。
- クォーラム喪失後の etcd クラスターのバックアップと復元。
- コントロール パネルをメモリと CPU 時間の不足から保護します。
Klusterkit ソリューションのアーキテクチャ
耐障害性と簡素化のため、Klusterkit は単一の cctl-state.yaml ファイルを使用して Kubernetes クラスターのメタデータを保存します。 cctl CLI を使用すると、この状態ファイルがあるマシン上の Kubernetes クラスターのライフサイクルを管理できます。 これは、オペレーターのラップトップでも、Kubernetes クラスターの一部である他のコンピューターでもかまいません。
Cctl は、クラスターでの CRUD 操作のライブラリとしてクラスター API インターフェイスを実装し、アップストリームから呼び出します。 彼は使う
Klusterkit とそのコンポーネントの使用方法:
1 – XNUMX つのツールはいずれも、 go get コマンドを使用して簡単に収集できます。
go get -u github.com/platform9/cctl
go get -u github.com/platform9/nodeadm
go get -u github.com/kubernetes-sigs/etcdadm
2 – これらの実行可能ファイルをパッケージ化し、高可用性 Kubernetes クラスターが実行されるターゲット マシンにコピーできます。 nodeadm および etcdadm ファイルをバージョン ディレクトリに配置します。
cp $GOPATH/bin/nodeadm /var/cache/ssh-provider/nodeadm//
cp $GOPATH/bin/etcdadm /var/cache/ssh-provider/etcdadm//
3 – 物理的に隔離された環境で Kubernetes クラスターをローカルに調整する必要がある場合は、nodeadm および etcdadm download コマンドを使用して、インターネットにアクセスできるコンピューターに必要な依存関係を事前に簡単にダウンロードできます。 その後、ダウンロードしたアイテム (つまり、systemd の kubelet および kubelet ユニット ファイル、CNI 実行可能ファイル、kubeadm ファイル、Kubernetes を含むすべてのコンテナ イメージ、keepalived イメージと systemd ファイル、etcd コンテナ イメージ、および対応する構成ファイル) を物理的に分離されたホストに簡単にコピーできます。 cctl、nodeadm、etcdadm を使用します。 (詳細については、
4 – すべての準備が整ったら、いくつかのコマンドを使用して最初の Kubernetes クラスターを作成できます。
– まず、クラスターの認証情報を作成します。
$GOPATH/bin/cctl create credential --user root --private-key ~/.ssh/id_rsa
– 次に、クラスター オブジェクトを作成します。 –help を指定すると、サポートされているオプションのリストが表示されます。
$GOPATH/bin/cctl create cluster --pod-network 192.168.0.0/16 --service-network 192.169.0.0/24
– 最後に、クラスター内に最初のマシンを作成します。
$GOPATH/bin/cctl create machine --ip $MACHINE_IP --role master
詳細については、次のドキュメントを参照してください。
出所: habr.com