背景紹介
ビジネスのアップグレードやソフトウェア製品プロジェクトの増加に伴い、従来の物理マシンと仮想マシンの方法では、次のようないくつかの問題が徐々に明らかになりました。
- 多数のサービスが仮想マシンにデプロイされ、リソースの見積もりとハードウェアの無駄が大きくなります。
- 多数のサービスが仮想マシンにデプロイされ、デプロイにかかる時間と難易度は比較的高く、自動化の程度は低いです。
- 開発者と運用保守担当者は、開発および展開のサービス環境が異なるため、不安定なサービスによるエラーを報告することが多く、その結果多くの障壁が発生し、効率が低下します。
- 問題の原因をトラブルシューティングするのは不便です。開発者には運用環境にアクセスする権限がなく、サービス ログとサービスの監視ステータスを見つけることができません。
競争が激化し、常に変化する市場環境において、企業はビジネス ニーズを満たす製品を継続的に反復開発し、変化に迅速に対応する必要があるため、上記の問題を解決することがますます緊急になっています。
選択手順
私たちは 2 つのオープンソース製品を調査しました。総合的な評価と比較の結果、最終的に KubeSphere を選択しました。KubeSphereは、シンプルで使いやすい操作インターフェースを提供するアプリケーション中心のコンテナプラットフォームとして位置付けられており、学習コストをある程度削減するとともに、ネイティブIstioなどの機能を統合し、より整合性の高いものとしています。開発の習慣を持っています。
練習のプロセス
アプリケーション要件への開発対応を加速し、価値を迅速に提供し、変更に迅速に対応します。アジャイル開発は、短い反復サイクルでより速い変化に適応し、段階的な継続的改善を維持するプロセスです。Kubernetes + Docker は、Dev と Ops の統合のためのブリッジです。逆に、アジャイル開発と自動化された運用と保守は、企業を促進します。DevOps の実装需要分析から導入監視までのプロセス全体において、開発、運用、保守のエンドツーエンドの統合を提供します。
インフラストラクチャと導入アーキテクチャ
KubeSphereの構築も非常に簡単で、KubeAdminからKubernetesをインストールした後、KubeSphere公式サイトの推奨する方法でKubeSphereをインストールします。Kubernetes と KubeSphere を構築するためのプライベート社内クラウド プラットフォーム環境。基本サーバーは Linux Centos 7 を使用し、カーネル バージョンは 5.6 です。
Kubernetes クラスターを構築するとき、Keepalived と HAproxy を使用して、ロード バランシング エントリを含む高可用性 Kubernetes クラスター マスターを作成することを選択しました。
導入参考図:
ストレージとネットワーク
現在、私たちは主に Ceph の分散ストレージに接続しており、さまざまな永続的なサービスを提供しています。たとえば、Harbor のミラーイメージ (主に Rabbitmq、Redis、MySQL など) を作成します。本番環境は主にステートレスな開発サービスです。たとえば、Springboot、SpringCloud、Python サービスによって開発されたマイクロサービスです。Python サービスは主に AI モデルの単純な分析に使用されます。
同時に、NFS ストレージは、一部のステートフル データ バックアップとログ バックアップ ファイルの保存にも使用されます。
ネットワークは、純粋な 3 層 BGP ネットワークである Calico を選択します。
プラットフォームとアプリケーションのログ、モニタリング、APM
ELKを利用して、各種基本サービスや業務サービスのログを収集し、ログアラーム監視を行っています。
Prometheus+grafana を使用して、OS、K8s システム コンポーネント、および Pod サービスを収集および監視します。
同時に、SkyWalking を使用して、サービスの API フルリンク パフォーマンスを監視します。
CI/CD
当社が使用する KubeSphere の DevOps モジュールは、Jenkins とパイプラインの構築を統合し、コードのプル、品質検査、プロジェクトのデプロイまでのプロジェクトのプロセスをワンクリックで実現します。DevOps モジュールでは、カスタム GitLab ウェアハウスが使用されます。
参考図は以下の通りです。
ステートフルサービス管理
現在、Redis、RabbitMQ、および Elasticsearch のクラスターを管理しています。
- 一意性 - N 個のレプリカを持つ StatefulSet の場合、各ポッドには
[0,N)
範囲内の一意のシーケンス番号が割り当てられます。 - 順序性 - StatefulSet 内のポッドの起動、更新、および破棄は、デフォルトで順番に実行されます。
- 安定したネットワーク ID - ポッドが再スケジュールされても、ポッドのホスト名と DNS アドレスは変わりません。
- 安定した永続ストレージ - ポッドが再スケジュールされても、元の Persistent Volume は引き続きマウントでき、データの整合性と一貫性が保証されます。
効果
KubeSphere は、ユーザーがコンテナ化されたアプリケーションを管理およびデプロイするのに役立つ、非常に人気のあるコンテナ オーケストレーション ツールです。KubeSphere を使用すると、アプリケーションの信頼性、スケーラビリティ、セキュリティが向上します。
- 開発者はソフトウェアの導入と監視にほとんど時間を費やさず、基本的な導入の詳細をあまり気にする必要がないため、時間が約 30% 節約され、製品のイテレーション速度が速くなります。
- 権限はロールごとに管理されるため、開発者はサービス エラーのトラブルシューティングが容易になり、プラットフォーム上でログ、インジケーター データ、監視レポートを直接表示することが非常に高速になり、時間を約 20% 節約できます。
- リソース使用率が最適化され、コストが削減されます。以前は VM 上にデプロイしていました。サーバー リソースの無駄が多く、リソース使用率が頻繁に見直されました。KubeSphere 以降、リソース使用率は 30% 以上増加しました。
これからの計画
将来的には、自動テストプロセスを含むインフラストラクチャ環境とDevOpsの全プロセス効率をさらに開発および改善する予定です。当社は今後も新しいテクノロジーのトレンド (サービス メッシュ、サービス ガバナンスなど) とベスト プラクティスに注意を払い、ビジネス ニーズに基づいて対応するアップグレードと最適化を行っていきます。また、会社の事業開発をより良くサポートするために、チームのトレーニングと技術的能力を強化し続けます。
マスク氏はTwitterの名前をXに変更し、ロゴを置き換えると 発表した Reactコア開発者のダン・アブラモフ氏がメタ社からの辞任を発表 MyBatis-FlexのMyBatis-Plus盗用に関する明確化 OpenAIがChatGPTのAndroid版を正式に開始 Android版ChatGPTは来週開始される、事前登録開始 Arc ブラウザ正式リリース 1.0、Chrome Musk の代替品と称して 「ゼロ元で購入」、@x Twitter アカウントを強奪 VS Code で名前難読化圧縮を最適化し、組み込み JS を 20% 削減! 新しい高速 JavaScript ランタイム Bun 0.7 が正式にリリースされ ましたこの記事は、ブログ用のマルチポスト プラットフォームであるOpenWriteによって公開されています。