Kubernetes オンプレミス セットアップ?

Kubernetes オンプレミス セットアップ?

Ubuntu 20 DPS で Kubernetes クラスターを設定する方法を知りたいです。つまり、docker と kubeadm をインストールしました。デプロイメント、サービス、およびイングレスの作成方法は知っています。すでに構成されている Kubernetes クラスター (aks) を使用しました。

いくつかの Web アプリ (Web サイト、API、CDN など) を公開するために DPS を設定する必要があります。Kubernetes を構成するにはどのような手順が必要ですか? 特定のサブ DNS (たとえば、第 3 レベル ドメイン: trd.mysite.com) で特定の Web サイトを公開するにはどうすればよいですか?

nginx-controller、metallb、flannel などのアドオンをインストールする必要がありますか? これらのネットワーク関連のことはわかりません。コースやチュートリアルにも興味があります。助けてください。よろしくお願いします!

編集: これらは私の yaml です。今のところ、メイン ドメイン (xxxx.com) で Web アプリを公開したいだけです。その後、内部 REST API と、REST API を使用して第 3 レベル ドメイン (yyy.xxxxx.com) で公開される別の Web アプリを追加します。 http://www.mediafire.com/file/c7qwouqri441wek/Kube.zip/ファイル

答え1

はい、それでは見てみましょう。サーバーを正常に実行するには、次のものが必要です。

1. ドッカー

2.インストールする場合はkubeadm- 以下の Kubernetes パッケージが必要です。この回答では kubeadm の方法についてのみ説明します。他のツールについては、内部ドキュメントを参照してください。

それ以外の場合は、例えばミニキューブキューブスプレー親切。私はminikubeとkindが好きです。

  • kind は、Docker コンテナの「ノード」を使用してローカル Kubernetes クラスターを実行するためのツールです。kind は主に Kubernetes 自体のテスト用に設計されていますが、ローカル開発や CI にも使用できます。
  • MiniKube は、通常、Kubernetes を始めたいときに最初に見つかるテクノロジーです (Kubernetes の公式ドキュメントには、miniKube を使用して最初のクラスターをデプロイするためのチュートリアルが用意されています)。これは、ラップトップにインストールする非常にシンプルなソリューションであり、学習とテスト用に設計されています。起動すると、単一ノード クラスター (最小サイズ) がデプロイされます。

すべてのツールについては、こちらでご覧いただけます:

3. インド国立情報学研究所- クラスター内の適切なネットワークのため。

CNI プラグインは数十個あるので、何かを選択する必要があります。

最も人気のあるのはフランネルとカリコです。場合によっては(必要に応じて)、運河つまり、Calicoを同時にインストールすることになりますネットワークポリシー+ ネットワーキング用の通常の CNI としての Flannel。

--pod-network-cidr=重要なヒントです。CNI を正しくインストールするには、クラスターを作成する前に事前に選択する必要があります。適切なフラグを使用してクラスターを初期化する必要があるためです。

  • kubeadm init --pod-network-cidr=10.244.0.0/16フランネル用
  • kubeadm init --pod-network-cidr=192.168.0.0/16カリコ用
  1. イングレスそしてイングレス コントローラ

クラスター内のサービスへの外部アクセス (通常は HTTP) を管理する API オブジェクト。

Ingress は、負荷分散、SSL 終了、名前ベースの仮想ホスティングを提供する場合があります。

Ingressリソースが機能するには、クラスタにイングレスコントローラランニング。

さまざまなイングレス コントローラの完全なリスト:イングレス コントローラ比較マトリックスはここ

最も人気のあるもの:Nginx イングレス コントローラ、Kubernetes イングレス コントローラ (OOB、nginx ベース。ただしこれらは異なるもの)、Traefik


クラスターを作成する手順:

マスター上でポッドを実行できるようにするには、マスターの汚染を解除する必要があります。これを行わないと、マスター上でポッドを実行できません。

kubectl taint nodes --all node-role.kubernetes.io/master-

答え2

これをすべて読む前に、ansbile を使用してクラスターを作成する kubespray を調べてください。ただし、Kubernetes が内部でどのように動作するかを知りたい場合は、回答の残りの部分に従ってください。

Kubernetes クラスターをセットアップするための最初のステップは、コンポーネントとその動作を理解することです。
単に kubeadm をインストールするだけではクラスターは起動しません。yaml ファイルをデプロイする前に、ニーズに必要なすべてのコンポーネントをインストールする必要があります。

ここに github ページのリンクがあります。これは、kubeadm を使用して、3 つのマスター ノードと必要な数のワーカー ノードを含む Kubernetes クラスター全体を起動します。
注: 古いバージョンを使用していますが、Kubernetes コンポーネントを学習するための優れたリファレンスです。重要なクラスター コンポーネントの yaml 作成に関するスクリプトを必ず調べ、クラスター コンポーネントの詳細を読んで、その機能を確認してください。
https://github.com/cookeem/kubeadm-ha/blob/master/v1.11/README.md
ドメイン上のクラスタでウェブアプリを公開したい場合は、Ingressリソースを作成できるIngressコントローラマネージャをインストールする必要があります。
こちらはKubernetesドキュメントからのIngress yamlの例です。
https://kubernetes.io/docs/concepts/services-networking/ingress/
有効な証明書を使用して https を実行する場合は、Kubernetes シークレットを使用するか、クラスターで証明書マネージャーを構成して、Let's Encrypt の自動取得と更新を行うことができます。
これらのオプションは両方とも十分に文書化されており、Google 検索を実行して、イングレス リソースでこれらの証明書を使用する方法を見つけるだけで済みます。
ドメインが 1 つのクラスター ノード (ワーカーまたはマスター) のパブリック IP アドレスを指していることを確認します。

metallbはオンプレミスのクラスタで使用され、クラウドプロバイダが組み込んでいるロードバランササービスタイプを提供します。

flannel は、クラスターのネットワークを提供するネットワーク プラグインです。
ポッドが互いに通信できるようにするには、flannel、calico、またはその他のサポートされているプラ​​グインなどのネットワーク プラグイン cni が必要です。flannel は、
クラスターのネットワーク スイッチと考えてください。

関連情報