この記事はWeChatの公開アカウント「Hacker Afternoon Tea」から転載したもので、著者はShaoです。この記事を転載する場合は、Hacker Afternoon Tea公式アカウントまでご連絡ください。 シリーズ
インストールLonghorn は、さまざまな方法で Kubernetes クラスターにインストールできます。
インストール要件Longhorn がインストールされている Kubernetes クラスター内の各ノードは、次の要件を満たしている必要があります。
Longhorn を適切に導入および操作するには、Longhorn ワークロードを root として実行できる必要があります。 OS/ディストリビューション固有の構成
環境チェックスクリプトの使用これらの要因に関する十分な情報を収集するのに役立つスクリプトを作成しました。 env check スクリプトを実行する前に、jq をローカルにインストールする必要がある場合があることに注意してください。 スクリプトを実行します:
結果の例:
ポッドセキュリティポリシーv1.0.2 以降、Longhorn にはデフォルトの Pod セキュリティ ポリシーが付属しており、Longhorn が適切に機能するために必要な権限が提供されます。 Longhorn では、Pod セキュリティ ポリシーが有効になっているクラスターで適切に動作するために特別な構成は必要ありません。 ノートマウントの伝播Kubernetes クラスターが Rancher v2.0.7+ 以降でプロビジョニングされている場合、MountPropagation 機能はデフォルトで有効になっています。 MountPropagation が無効になっている場合、ベース イメージ機能は無効になります。 open-iscsiをインストールするopen-iscsi をインストールするためのコマンドは、Linux ディストリビューションによって異なります。 GKE の場合、open-iscsi がすでに含まれているため、Ubuntu をゲスト OS イメージとして使用することをお勧めします。 SSH アクセスを許可するには、クラスター セキュリティ グループを編集する必要がある場合があります。 SUSE および openSUSE の場合は、次のコマンドを使用します。
Debian および Ubuntu の場合は、次のコマンドを使用します。
AmazonLinux2 イメージを使用した EKS Kubernetes Worker AMI を使用する RHEL、CentOS、EKS の場合は、次のコマンドを使用します。
また、ユーザーが open-iscsi を自動的にインストールしやすくするために、iscsi インストーラーも提供しています。
デプロイが完了したら、次のコマンドを実行してインストーラーのポッドのステータスを確認します。
次のコマンドを使用して、ログとインストール結果を表示することもできます。
NFSv4クライアントのインストールNFSv4 クライアントをインストールするためのコマンドは、Linux ディストリビューションによって異なります。 Debian および Ubuntu の場合は、次のコマンドを使用します。
AmazonLinux2 イメージを使用した EKS Kubernetes Worker AMI を使用する RHEL、CentOS、EKS の場合は、次のコマンドを使用します。
また、ユーザーが nfs-client を自動的にインストールしやすくするために、nfs インストーラーも提供しています。
デプロイが完了したら、次のコマンドを実行してインストーラーのポッドのステータスを確認します。
次のコマンドを使用して、ログとインストール結果を表示することもできます。
Kubernetesのバージョンを確認する次のコマンドを使用してKubernetesサーバーのバージョンを確認します。
結果:
サーバーバージョンは v1.16 以上である必要があります。 RancherカタログアプリとしてインストールRancher カタログを通じて Longhorn をインストールする利点の 1 つは、Rancher が Longhorn UI の認証を提供することです。 Longhorn の新しいバージョンが利用可能な場合は、カタログ アプリ画面に「アップグレード可能」というサインが表示されます。 [アップグレード] ボタンをクリックすると、Longhorn マネージャーをアップグレードできます。 インストール オプション: Storage など、Longhorn 用の新しいプロジェクトを作成することをお勧めします。 Longhorn をインストールするクラスターとプロジェクトに移動します。 3. カタログ アプリ画面に移動します。 4. カタログで Longhorn 項目を見つけてクリックします。 5. オプション: デフォルト設定をカスタマイズします。 6. 「起動」をクリックします。 Longhorn は longhorn-system 名前空間にインストールされます。 これでLonghornがインストールされました。 7. index.html リンクをクリックして、Longhorn ダッシュボードに移動します。 Longhorn を正常にインストールしたら、カタログ アプリ画面に移動して Longhorn UI にアクセスできます。 Kubectlを使用してインストールするLonghornのインストール 次のコマンドを使用して、任意の Kubernetes クラスターに Longhorn をインストールします。
インストールの進行状況を監視する 1 つの方法は、longhorn-system 名前空間で作成されるポッドを監視することです。
デプロイメントが成功したかどうかを確認します。
Longhorn UI へのアクセスを有効にするには、Ingress コントローラーを設定する必要があります。 Longhorn UI への認証はデフォルトでは有効になっていません。 展開されたリソースのリスト 次のプロジェクトが Kubernetes にデプロイされます。
すべての Longhorn ビットがこの名前空間に適用されます。
サービス アカウントは longhorn-system 名前空間に作成されます。
この役割には次のアクセス権があります:
ClusterRoleBinding: longhorn-bind これにより、longhorn-role が longhorn-system 名前空間の longhorn-service-account に接続されます。 カスタムリソース定義 次のCustomResourceDefinitionsがインストールされます
Kubernetes API オブジェクト
Helmを使用してインストールするHelmのインストールに関する注意事項 Helm のインストールに関するヘルプについては、公式ドキュメントを参照してください。 Helm 3.0 より前のバージョンを使用している場合は、ロールベースのアクセス制御 (RBAC) を使用して Kubernetes クラスターに Tiller をインストールする必要があります。 LonghornのインストールLonghorn Helm リポジトリを追加します。
リポジトリから最新のチャートを取得します。
Longhorn を longhorn-system 名前空間にインストールします。 Helm 2 を使用して Longhorn をインストールするには、次のコマンドを使用します。
Helm 3 を使用して Longhorn をインストールするには、次のコマンドを使用します。
デプロイメントが成功したことを確認するには、次のコマンドを実行します。
結果は次のようになります。
Longhorn UI へのアクセスを有効にするには、Ingress コントローラーを設定する必要があります。 Longhorn UI への認証はデフォルトでは有効になっていません。 UI へのアクセスアクセスと認証の前提条件 これらの手順では、Longhorn がすでにインストールされていることを前提としています。 Longhorn YAML マニフェストをインストールした場合は、クラスターへの外部トラフィックを許可するように Ingress コントローラーを設定する必要があります。認証はデフォルトでは有効になっていません。これは、Helm と kubectl の両方のインストールに適用されます。 Longhorn が Rancher カタログ アプリとしてインストールされている場合、Rancher はアクセス制御 (rancher-proxy) を備えた Ingress コントローラーを自動的に作成します。 Longhorn UI へのアクセスKubernetes クラスターに Longhorn をインストールすると、UI ダッシュボードにアクセスできるようになります。 1. Longhorn の外部サービス IP を取得します。
Longhorn v0.8.0 の場合、出力は次のようになり、longhorn UI には longhorn-frontend の CLUSTER-IP を使用してアクセスします。
上記の例では、IP は 10.20.245.110 です。 Longhorn v0.8.0+ では、UI サービス タイプが LoadBalancer から ClusterIP に変更されました。 2. ブラウザで longhorn-frontend の IP に移動します。 Longhorn UI は次のようになります。 基本認証を使用した Ingress の作成 (nginx) kubectl または Helm を使用して Kubernetes クラスターに Longhorn をインストールした場合は、外部トラフィックが Longhorn UI に到達できるように Ingress を作成する必要があります。 デフォルトでは、kubectl および Helm インストールでは認証が有効になっていません。これらの手順では、nginx Ingress コントローラーでアノテーションを使用して、基本認証を備えた Ingress を作成する方法を学習します。 基本認証ファイル auth を作成します。生成されたファイルの名前が auth であることが重要です (実際には、シークレットにはキー data.auth があります)。そうでない場合、Ingress は 503 を返します。
シークレットを作成します:
Ingress マニフェスト longhorn-ingress.yml を作成します。
Ingress を作成する:
例えば:
AWS EKS Kubernetes クラスターの追加手順 nginx Ingress コントローラーをインターネットに公開するには、ELB (Elastic Load Balancer) を作成する必要があります。追加料金が発生する場合があります。 nginx ingress コントローラーのドキュメントに従って、必要なリソースを作成します。 ELB を作成するには、ingress-nginx/deploy/#aws の手順に従います。 参考文献 https://kubernetes.github.io/ingress-nginx/ アップグレードここでは、以前のすべてのバージョンから最新の Longhorn にアップグレードする方法について説明します。 Longhorn のアップグレード アップグレード プロセスは通常、2 段階のプロセスです。最初に Longhorn マネージャーを最新バージョンにアップグレードし、次に最新の Longhorn マネージャーを使用して Longhorn エンジンを手動で最新バージョンにアップグレードします。 1. Longhornマネージャをアップグレードする v1.1.x からアップグレードするには、longhorn-manager を参照してください。 2. Longhorn Engineを手動でアップグレードする Longhorn Manager をアップグレードした後、Longhorn UI を使用して Longhorn Engine もアップグレードする必要があります。 3. Longhorn Engineを自動的にアップグレードする Longhorn v1.1.1 以降では、エンジンを自動的にアップグレードするためのオプションが提供されます。 注意: Longhorn v1.1.0 および v1.1.1 で提供されるインスタンス マネージャー イメージ v1_20201216 には、数百のボリュームを持つ大規模なクラスターでデッドロックを引き起こす可能性があるバグが含まれています。詳細については、longhorn/issues/2697 を参照してください。 Longhorn v1.1.2 には、デッドロックを修正する新しいインスタンス マネージャー イメージ v1_20210621 が付属していますが、ボリュームのエンジン/レプリカ プロセスは、次にボリュームがデタッチ/アタッチされるまで、古いインスタンス マネージャーから新しいインスタンス マネージャーに移行されません。 Longhorn では、ボリュームのデータ プレーンを中断したくないためにこれを行います。 古いインスタンス マネージャーでデッドロックが発生した場合は、issues/2697#issuecomment-879374809 の回復手順に従ってください。 Longhorn Manager のアップグレードv1.1.x からのアップグレード v1.1.x から v1.1.2 へのアップグレードのみサポートされます。その他のバージョンの場合は、まず v1.1.x にアップグレードしてください。 Engine の v1.1.x から v1.1.2 へのライブ アップグレードをサポートします。 Longhorn が Rancher アプリとしてインストールされている場合のエアギャップ アップグレードでは、イメージ名を変更し、レジストリ URL 部分を削除する必要があります。 たとえば、Longhorn イメージ セクションのイメージ registry.example.com/longhorn/longhorn-manager:v1.1.2 は longhorn/longhorn-manager:v1.1.2 に変更されます。 アップグレードの準備 Longhorn が Helm Chart を使用してインストールされた場合、または Rancher カタログ アプリの一部としてインストールされた場合は、デフォルトの StorageClass のパラメーターが変更されていないことを確認してください。デフォルトの StorageClass パラメータを変更すると、チャートのアップグレードが失敗する可能性があります。 StorageClass のパラメータを再構成する場合は、デフォルトの StorageClass の構成をコピーして別の StorageClass を作成できます。
アップグレード 前提条件: アップグレードする前に必ずボリュームをバックアップしてください。何か問題が発生した場合は、バックアップを使用してボリュームを復元できます。 kubectl を使用してアップグレードするには、次のコマンドを実行します。
Helm を使用してアップグレードするには、次のコマンドを実行します。
Rancher 2.1 以降で管理される Kubernetes クラスターでは、カタログ アプリ longhorn-system をアップグレードする手順はインストール手順と同様です。 次に、すべてのポッドが実行を開始し、Longhorn UI が動作するまで待ちます。例えば:
アップグレード後既存のボリュームの破損を回避し、非推奨の設定である Guaranteed Engine CPU から新しいインスタンス マネージャーの CPU 予約メカニズムに切り替えるために、Longhorn はアップグレード中に非推奨の設定値に従って各ノードからの Engine Manager CPU Request と Replica Manager CPU Request を自動的に設定します。そうすると、新しいグローバル インスタンス マネージャーの CPU 設定である「保証されたエンジン マネージャー CPU」と「保証されたレプリカ マネージャー CPU」は有効になりません。新しいメカニズムとセットアップ手順をチェックして、調整が必要かどうかを確認することをお勧めします。 トラブルシューティング エラー: 「longhorn」は無効です: プロビジョナー: 禁止: プロビジョナーへの更新は禁止されています。 これは、デフォルトの storageClass にいくつかの変更が加えられたことを意味し、アップグレードする前に古いものをクリーンアップする必要があります。 非推奨の StorageClass をクリーンアップするには、次のコマンドを実行します。
Longhorn Engineを手動でアップグレードする このセクションでは、Longhorn UI から Longhorn Engine を手動でアップグレードする方法を学習します。 前提条件 Longhorn エンジン イメージをアップグレードする前に、必ずバックアップしてください。 Longhorn エンジンをアップグレードする前に、Longhorn マネージャーをアップグレードしてください。 注意: Longhorn v1.1.0 および v1.1.1 で提供されるインスタンス マネージャー イメージ v1_20201216 には、数百のボリュームを持つ大規模なクラスターでデッドロックを引き起こす可能性があるバグが含まれています。詳細については、longhorn/issues/2697 を参照してください。 Longhorn v1.1.2 には、デッドロックを修正する新しいインスタンス マネージャー イメージ v1_20210621 が付属していますが、ボリュームのエンジン/レプリカ プロセスは、次にボリュームがデタッチ/アタッチされるまで、古いインスタンス マネージャーから新しいインスタンス マネージャーに移行されません。 Longhorn では、ボリュームのデータ プレーンを中断したくないためにこれを行います。 エンジン/レプリカ プロセスが古いインスタンス マネージャー上に残っている間にデッドロックが発生する可能性を減らすには、ボリュームのエンジンを小さなバッチ (一度に 2 つまたは 3 つのボリュームなど) でアップグレードする必要があります。 オフラインアップグレード ライブ アップグレードが不可能な場合、またはボリュームが劣化状態にある場合は、次の手順を実行します。
ライブアップグレード v1.1.x から v1.1.2 へのアップグレードではライブ アップグレードがサポートされます。 iSCSI フロントエンドは Live Upgrade をサポートしていません。 ライブ アップグレードは正常なボリュームに対してのみ実行する必要があります。
[OK]をクリックします。 ライブ アップグレード中、ユーザーにはレプリカの数が一時的に 2 倍表示されます。アップグレードが完了すると、ユーザーには以前と同じ数のレプリカが表示され、ボリュームのエンジン イメージ フィールドが更新されます。 ライブ アップグレード後も、Rancher または Kubernetes では、エンジン イメージの古いバージョンとレプリカの新しいバージョンが引き続き表示されることに注意してください。これは予想通りです。ボリューム詳細ページにボリューム イメージとして新しいバージョンのイメージが表示されている場合は、アップグレードは成功しています。 古い画像をクリーンアップするすべてのイメージがアップグレードされたら、Longhorn UI から [設定]/[エンジン イメージ] を選択します。これで、デフォルト以外のミラーを削除できるはずです。 Longhorn Engine を自動的にアップグレードするLonghorn v1.1.1 以降では、Longhorn マネージャーをアップグレードした後、Longhorn ボリュームを新しいデフォルトのエンジン バージョンに自動的にアップグレードするオプションが提供されます。この機能により、Longhorn をアップグレードするときに必要な手作業の量が削減されます。この機能に関連する概念は次のとおりです。 1. ノードあたりの同時自動エンジンアップグレード制限設定 これは、Longhorn マネージャーをアップグレードした後、Longhorn がボリュームのエンジンを新しいデフォルトのエンジン イメージに自動的にアップグレードする方法を制御する設定です。この設定の値は、ノードごとに同時にデフォルトのエンジン イメージにアップグレードできるエンジンの最大数を指定します。値が 0 の場合、Longhorn はボリュームのエンジンをデフォルト バージョンに自動的にアップグレードしません。値が大きいほど、エンジンのアップグレード プロセスがより速く完了します。 ただし、この設定に大きな値を指定すると、エンジンのアップグレード プロセス中にノードの CPU とメモリがより多く消費されます。エラーに多少の余地を残しつつ、アップグレードの失敗が多すぎてシステムに負担がかからないように、この値を 3 に設定することをお勧めします。 2. さまざまなボリューム条件下での Longhorn の動作。 以下の場合、ノードあたりの同時自動エンジン アップグレード制限が 0 より大きく設定されていると想定されます。
ボリュームが接続されていて正常な場合、Longhorn はボリュームのエンジンを新しいデフォルトのエンジン イメージに自動的にライブ アップグレードします。
Longhorn は、分離されたボリューム上でオフライン アップグレードを自動的に実行します。
Longhorn は、災害復旧ボリュームの完全な復元をトリガーするため、災害復旧ボリュームを新しいデフォルトのエンジン イメージに自動的にアップグレードしません。完全な復元は、システム上で実行されている他の Longhorn ボリュームのパフォーマンスに影響を与える可能性があります。したがって、Longhorn では、災害復旧ボリューム エンジンを手動でアップグレードする適切なタイミング (たとえば、システムがアイドル状態のときやメンテナンス中など) をユーザーが決定できます。 ただし、DR ボリュームをアクティブ化すると、アクティブ化されてから切断されます。この時点で、Longhorn はボリュームを切断したときと同様に、ボリュームのオフライン アップグレードを自動的に実行します。 3. アップグレードが失敗した場合はどうなりますか? ボリュームのアップグレードが失敗した場合、ボリューム仕様のエンジン イメージはボリューム状態のエンジン イメージとは異なるままになります。 Longhorn は、アップグレードが成功するまで再試行し続けます。 ノードごとにアップグレードできないボリュームが多すぎる場合 (つまり、ノードごとの同時自動エンジン アップグレード制限設定を超えた場合)、Longhorn はそのノード上のボリュームのアップグレードを停止します。 Longhorn のアンインストールこのセクションでは、Longhorn をアンインストールする方法について説明します。
前提条件 Kubernetes クラスターの損傷を防ぐために、Longhorn ボリューム (PersistentVolume、PersistentVolumeClaim、StorageClass、Deployment、StatefulSet、DaemonSet など) を使用するすべての Kubernetes ワークロードを削除することをお勧めします。 Rancher UI から Longhorn をアンインストールする Rancher UI から、[カタログ アプリ] タブに移動し、Longhorn アプリを削除します。 Helm を使用して Longhorn をアンインストールする 次のコマンドを実行します:
kubectl を使用して Longhorn をアンインストールする システムから CRD をクリーンアップするアンインストール ジョブを作成し、成功を待ちます。
サンプル出力:
残りのコンポーネントを削除します。
ヒント: 最初に kubectl delete -f https://raw.githubusercontent.com/longhorn/longhorn/v{{< current-version >}}/deploy/longhorn.yaml を試してそこで行き詰まった場合は、Ctrl + C を押してから kubectl create -f https://raw.githubusercontent.com/longhorn/longhorn/v{{< current-version >}}/uninstall/uninstall.yaml を実行してください。これも Longhorn の削除に役立ちます。最後に、残りのコンポーネントをクリーンアップすることを忘れないでください。 トラブルシューティング アンインストール手順に従わずに、Rancher UIからLonghornアプリケーションを削除しました (同じバージョンの) Longhorn アプリを再デプロイします。上記のアンインストール手順に従ってください。 CRD の問題点 何らかの理由で CRD インスタンスまたは CRD 自体を削除できない場合は、次のコマンドを実行してクリーンアップします。注意: これにより、Longhorn のすべての状態がクリアされます。
ボリュームはUIから接続/切断できますが、Kubernetes Pods/StatefulSetsなどでは使用できません。 ボリューム プラグイン ディレクトリが正しく設定されていることを確認します。ユーザーが明示的に設定しない限り、自動的に検出されます。注意: FlexVolume プラグインは Longhorn v0.8.0 以降では非推奨になっており、使用しないでください。 デフォルトでは、Kubernetes は公式ドキュメントに記載されているように /usr/libexec/kubernetes/kubelet-plugins/volume/exec/ を使用します。 ベンダーによっては、さまざまな理由からカタログを変更することを選択する場合があります。たとえば、GKE は代わりに /home/kubernetes/flexvolume を使用します。 ユーザーは、ホスト上で ps aux|grep kubelet を実行し、--volume-plugin-dir パラメータを確認することで、正しいディレクトリを見つけることができます。 None の場合は、デフォルトの /usr/libexec/kubernetes/kubelet-plugins/volume/exec/ が使用されます。 |
<<: ハイブリッドクラウドエッジ戦略が IoT の成功に与える影響
>>: オラクル、調達を強化して顧客のコスト削減と業務効率の向上を支援
Shumai Technology は 5 月に、香港の自社データセンターにある香港サーバーを超低価...
最近、私は Pulsar と Kafka の比較を調べています。ちょっと検索してみると、これら 2 ...
モルドバのホスティング プロバイダーであり、RIPE NCC のメンバーでもある mivocloud...
みなさんこんにちは。私は梁磊です。最近、クライアントからの相談を通じて、クライアントが 360 Se...
6月10日、国内のSaaS企業、投資機関、メディアからのゲスト5名( Salesfunnel創業者...
最近、Baidu は登録に関していくつかの調整を行ったようです。私の個人的な経験では、3 月 12 ...
この記事は、自分の記事がどれだけ優れているかを自慢するために書いているわけではありません。ただ、提出...
新しいサイトでは、このタイプの顧客に対応する過程で、顧客が常にお金を稼ぐ方法、お金を早く稼ぐ方法、そ...
ある先輩は、SEO 実践者は 2 年以内に必ずさまざまなボトルネックに遭遇するだろう、とかつて言って...
生成型人工知能の波に後押しされ、あらゆる企業は時代の潮流に遅れずについていき、ビジネスモデルを革新す...
時間が経つにつれて、誰もが徐々に中級プログラマーのレベルに入ります。同時に、学習しないことは立ち止ま...
最近、 Google リッチ スニペット テスト ツールを使っていたところ、デフォルトの WordP...
1. 「 WeChatの運用方法」 WeChatの運営方法は、ビジネスの方法であり、インターネットの...
シリコンバレーでのテクノロジー業界の大規模なレイオフに関する最近のニュースは憂慮すべきものだが、問題...
Dapr[1]はDistributed Application Runtimeの略語です。マルチラ...