この記事の公開時点で、Kubernetes は登場して約 6 年が経過しており、過去 2 年間で人気が高まり、最も人気のあるプラットフォームの 1 つになりました。今年は3番目に人気のあるプラットフォームになりました。 Kubernetes について聞いたことがない方のために説明すると、Kubernetes はコンテナ ワークロードを実行およびオーケストレーションできるプラットフォームです。 コンテナは、2007 年の cgroups、2002 年の名前空間など、Linux カーネル プロセス分離構造として始まりました。2008 年に LXC が導入されて以来、コンテナの重要性は増し、Google は Borg と呼ばれる独自の内部「すべてをコンテナ内で実行する」メカニズムを開発しました。 2013 年に Docker がリリースされ、コンテナに革命が起こりました。当時、コンテナをオーケストレーションするための主なツールは Mesos でしたが、広く採用されていませんでした。 Kubernetes は 2015 年にリリースされ、すぐにコンテナ オーケストレーションの事実上の標準になりました。 Kubernetes の人気を理解するために、いくつかの質問について考えてみましょう。開発者が本番アプリケーションの展開方法について最後に合意したのはいつですか?ツールをそのままの状態で実行できる開発者を何人知っていますか?現在、アプリケーションの仕組みを理解していないクラウド運用エンジニアはどれくらいいるでしょうか?この記事ではその答えを探ります。 YAMLとしてのインフラストラクチャ Puppet と Chef の世界から見ると、Kubernetes にとっての大きな変化は、コードとしてのインフラストラクチャから YAML としてのインフラストラクチャへの移行です。 Pod、構成、デプロイメント、データ ボリュームなど、Kubernetes 内のすべてのリソースは、YAML ファイルで簡単に表現できます。例えば:
この表現により、DevOps や SRE は、Python、Ruby、JavaScript などのプログラミング言語でコードを記述することなく、ワークロードをより簡単に、より完全に表現できるようになります。 インフラストラクチャをデータとして活用するその他の利点は次のとおりです。 GitOps または Git Operations バージョン コントロール。この方法では、すべての Kubernetes YAML ファイルを Git リポジトリに保存できるため、変更がいつ行われたか、誰が変更したか、何が変更されたかを正確に把握できます。これにより、組織全体の透明性が高まり、メンバーが必要なものを探すためにどこに行く必要があるかについての曖昧さがなくなり、効率が向上します。同時に、プル リクエストをマージするだけで、Kubernetes リソースに自動的に変更を加えることが簡単になります。 スケーラビリティ。リソースを YAML として定義すると、クラスター オペレーターは Kubernetes リソース内の 1 つまたは 2 つの数値を変更してスケーリング動作を変更することが非常に簡単になります。 Kubernetes には、トラフィックが少ないときと多いときの両方を処理できるように、特定のデプロイメントに必要なポッドの最小数と最大数を決定するのに役立つ、水平ポッド自動スケーリング コントローラーがあります。たとえば、トラフィックの急増により、より多くの容量が必要になる可能性があるデプロイメントを実行している場合は、maxReplicas を 10 から 20 に増やすことができます。
セキュリティと制御。 YAML は、Kubernetes に何がどのようにデプロイされているかを確認するのに最適な方法です。たとえば、セキュリティの観点から、ワークロードが非ルート ユーザーとして実行されているかどうかが主な懸念事項の 1 つです。 YAML/JSON バリデーターの conftest や、ポリシー バリデーターの Open Policy Agent などのツールを活用して、ワークロードの SecurityContext でコンテナが root として実行できることを確認できます。これを行うには、ユーザーは次のような単純な OPA rego ポリシー式を使用できます。
クラウド プロバイダーの統合。テクノロジー業界における大きなトレンドの 1 つは、パブリック クラウド プロバイダーでワークロードを実行することです。 Kubernetes では、クラウド プロバイダー コンポーネントの助けを借りて、各クラスターが、そのクラスターが実行されているクラウド プロバイダーと統合できるようになります。たとえば、AWS の Kubernetes でアプリケーションを実行し、サービスを通じてアプリケーションにアクセスできるようにする場合、クラウドプロバイダーは LoadBalancer サービスを自動的に作成し、Amazon Elastic Load Balancer を自動的に構成してトラフィックをアプリケーション Pod に転送するのに役立ちます。 拡張機能 Kubernetes はスケーラビリティが非常に高く、開発者に好評です。既存のリソースには、Pod、Deployment、StatefulSet、Secret、ConfigMap などが含まれます。ただし、ユーザーと開発者は、カスタム リソース定義の形式でさらにリソースを追加できます。たとえば、CronTab リソースを定義する場合は、次のようにします。
次に、同様の方法で CronTab リソースを作成します。
Kubernetes の拡張性のもう 1 つの形態は、開発者が独自の Operator を作成できるようにすることです。Operator は、Kubernetes クラスターで実行され、制御ループ パターンに従う特殊なプロセスです。オペレーターを使用すると、ユーザーは Kubernetes API と通信して CRD (カスタム リソース定義) を自動的に管理できます。 コミュニティには、開発者が独自のオペレーターを作成できるツールがいくつかあります。これらのツールの 1 つは、Operator Framework とその Operator SDK です。 SDK は、開発者がオペレーターの作成をすぐに開始するためのフレームワークを提供します。たとえば、次のようなコマンドラインを使用して開始できます。
これにより、YAML ファイルと Golang コードを含む Operator のテンプレート全体が作成されます。
次に、次のように API とコントローラーを追加できます。
最後に、Operator イメージをビルドしてコンテナ レジストリにプッシュします。
開発者がさらに制御する必要がある場合は、Golang ファイル内のテンプレート コードを変更できます。たとえば、コントローラーの特定の詳細を変更するには、controller.go ファイルを変更できます。 別のプロジェクトである KUDO を使用すると、宣言型 YAML ファイルのみを使用してオペレーターを作成できます。たとえば、Apache Kafka Operator は次のように定義され、ユーザーはわずか数個のコマンドで Kubernetes 上に Kafka クラスターをインストールできるようになります。
別のコマンドを使用して調整することもできます。
革新 過去数年間、Kubernetes は 3 ~ 4 か月ごとにメジャー バージョンがリリースされており、毎年 3 ~ 4 つのメジャー バージョンがリリースされていることになります。前回のリリースでは 30 を超える追加機能と変更があったことからもわかるように、展開される新機能の数は減っていません。さらに、Kubernetes プロジェクトの GitHub アクティビティが示すように、このような困難な時期であっても、貢献は減速する兆候を見せていません。 新しい機能により、クラスター オペレーターはさまざまなワークロードを実行する際の柔軟性が向上します。ソフトウェア エンジニアは、より多くの制御権を持ち、アプリケーションを直接本番環境にデプロイできることも好みます。 コミュニティ Kubernetes の人気のもう一つの大きな側面は、その強力なコミュニティです。まず、Kubernetes が 2015 年にバージョン 1.0 をリリースしたとき、それはベンダー中立の組織である Cloud Native Computing Foundation に寄贈されました。 プロジェクトが進むにつれて、Kubernetes のさまざまな領域をターゲットにした多数のコミュニティ SIG (Special Interest Groups) も登場し、常に新しい機能を追加して、Kubernetes をよりユーザーフレンドリーなものにしています。 Cloud Native Foundation は、現時点では世界最大のオープンソース イベントである CloudNativeCon/KubeCon も主催しています。通常、年に最大 3 回開催されるこのイベントには、Kubernetes とそのエコシステムを改善し、3 か月ごとにリリースされる新機能の一部を活用したいと考えている何千人もの技術専門家やプロフェッショナルが集まります。 さらに、Cloud Native Foundation には技術監視委員会があり、SIG と連携してクラウド ネイティブ エコシステムにおける Foundation の新規および既存のプロジェクトを検討しています。ほとんどのプロジェクトは Kubernetes の価値提案に貢献しています。 最後に、コミュニティが互いにサポートし合い、新しい参加者を歓迎するという意識的な努力がなければ、Kubernetes がこれほどの成功を収めることはなかったと私は信じています。 未来 将来、開発者が直面する主な課題の 1 つは、コードが実行されるインフラストラクチャではなく、コードの詳細に重点を置く方法です。このため、サーバーレスは、この課題に対処するための主要なアーキテクチャパラダイムの 1 つとして浮上しています。 Knative や OpenFaas など、Kubernetes を使用して開発者からインフラストラクチャを抽象化する非常に高度なフレームワークがすでにいくつか存在します。 この記事では Kubernetes について簡単に紹介しましたが、これは氷山の一角にすぎません。ユーザーが活用できるリソース、機能、構成は他にもたくさんあります。今後も新しいオープンソース プロジェクトやテクノロジーによって Kubernetes が強化され、進化していくでしょう。前述したように、貢献とコミュニティが大きな役割を果たします。 |
<<: クラウドネイティブ革命によってもたらされたログ管理の課題にどう対処すればよいでしょうか?
>>: 最新のネットワーク境界管理: VPN から SDP に移行する 4 つの理由
[[420872]]過去 2 年間で、Kubernetes は Swarm と Mesos を打ち負...
「クラウド開発のおかげで、Chaoban Technologyは平均サーバーコストを月1,000元未...
みなさんこんにちは。私は次男です。前回の記事「Underlay でのマルチネットワーク ns の...
「SEO はテクノロジーであり、芸術でもある」と言う人もいます。私の意見では、SEO はむしろサービ...
サーバーの安定性はウェブサイトのランキングに直接影響します。これはSEOの重要な部分であり、SEOに...
ユーザー エクスペリエンスという言葉は、数え切れないほど多くのウェブマスターの頭の中にありますが、数...
ウェブサイトの成功がコンテンツの質に左右されるのであれば、良いタイトルが最後の仕上げとなります。一般...
業界に入ったばかりのSEO担当者の場合、ほとんどの人が会社の公式サイトの最適化を担当していますが、あ...
一般的に、当社のサーバーまたは VPS のトラフィックは制限されています。当社の Web サイト上の...
私は武漢で7~8か月間ウェブサイトの最適化に携わってきました。現在の仕事には非常に満足しており、興味...
Woothosting は、公式発表によると 2007 年に設立されましたが、明らかにこの声明はでた...
マーケティングについての基本的な理解についてお話しいただけますか。あるいは、マーケティングのような一...
医療ウェブサイトのプロモーションに携わったことのある方なら、こうしたウェブサイトの最適化が比較的難し...
10 年以上の歴史を持つアメリカの老舗企業である turnkeyinternet.net は、仮想ホ...
SEO をしばらくやってきた SEO 担当者は、自分の実践を経て、Baidu に不正ポイント システ...