Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.

Alibaba Cloudが1万個のKubernetesクラスタを管理する方法

2020/12/11 AliEaters Tokyo #16の発表資料。
「Kubernetes as a serviceの謎を解く。Alibaba Cloudが1万個のKubernetesクラスタを管理する方法」

  • Als Erste(r) kommentieren

  • Gehören Sie zu den Ersten, denen das gefällt!

Alibaba Cloudが1万個のKubernetesクラスタを管理する方法

  1. 1. Kubernetes as a serviceの謎を解く。 Alibaba Cloudが1万個のKubernetesクラスタを 管理する方法 マネージドサービスの裏側の努力を知る。 1 @mosuke5 AliEaters Tokyo #16 (2020/12/11)
  2. 2. 自己紹介 2 名前 もーすけ (@mosuke5) 仕事 Red HatでKubernetesに関するお仕事とか それまで Alibaba Cloudの日本リージョンの立ち上げ・運営 (いちおう初代MVP。失効寸前ww) モバイルネットワークの監視システムの開発・運用 Webアプリケーションエンジニア(学生時) 最近のこと 珈琲、自作家系ラーメン、 ブログ https://blog.mosuke.tech
  3. 3. Alibaba Cloudの最近のプロダクト動向につい てはよくわかりません。 コンテナ界隈からみたAlibabaの存在感という 観点で。 中の人をやっていたときには理解できなかった ことがつながってきた。
  4. 4. 少し前だけれど 4 執筆者は2年前の12月のAliEaters に来てくれたZhimin。許可をとって ブログを翻訳させてもらいました。 https://blog.mosuke.tech/entry/2020/ 11/17/how-to-manage-lots-of-k8s/
  5. 5. なにが難しいか 1. Alibaba Cloud Container Service for Kubernetes(以下、ACK)は、世界で 10,000以上のクラスタが利用されている。 2. ひとつのクラスタが大きいのではなく、クラスタ数が多い。 a. 消したり作ったりされる b. 大規模も小規模もある c. 種類もたくさん i. managed, serverless, gpu cluster, edge cluster, windows... d. Kubernetesのバージョン違い e. 20のリージョンで展開
  6. 6. ① Kube-on-kube and cell-based architecture ACKは、KubernetesクラスタをKubernetes自体を使って管理している。 つまり、顧客のKubernetesクラスタのコントロールプレーンを管理するためにメタ Kubernetesクラスタを用いて 管理している。 セルA セルB セルC meta cluster meta cluster meta cluster Customer clusters Customer clusters Customer clusters
  7. 7. そもそもKubernetes Clusterとは
  8. 8. 宣言的な構成管理 Kubernetesの強力なポイントに、マニ フェストによるアプリケーションのワーク ロードの「宣言的な構成管理」がある。ア プリケーションが実行される環境はマニ フェストに記述し、Git管理の対象とする ことをおすすめする。可能な限り、 Kubernetesへの変更はマニフェストを軸 とし、実際のワークロードと管理している マニフェストの乖離をなくすことをめざす。
  9. 9. Operatorとはなにか? カスタムリソース kind: MyDeployment apiVersion: mosuke5.com/v1 metadata: name: my-application spec: readReplicas: 3 image: my-image configs: - config-1 - config-2 - config-3 Kubernetes 利用者 Deployments StatefulSets Autoscalers Secrets ConfigMaps PersistentVolume K8s API Operator / Custom Controller (Podとして起動) イベント監視 Reconciliation (調整ループ) 別名カスタムコントローラ。ユーザ独自のコントローラを作成す ることで、ネイティブの Kubernetesでできなかった動きを実現 することができる。Go言語等での開発が必要。 独自のロジックで Kubernetesリソースを 作成・削除・調整 9
  10. 10. Kubernetes管理用のOperator Ant Financial でも同様のKubernetesクラス タ管理用方法を用いており、記事の内容から 推測するに、Kubernetesを生成するための Operator(Kubernetesの拡張)を作って対応 していると思われる。 中国語参考記事: 万级规模 K8s 如何管理?蚂蚁双11核心技术公开 https://developer.aliyun.com/article/726802 カスタムリソース(下記はイメージです) kind: AckCluster apiVersion: aliyun.com/v1 metadata: name: user-a-cluster-01 spec: version: 1.18.0 cluster-type: managed cluster-name: hoge-cluster nodes: - instance-type: ecs.t3.xlarge disk: 50GB ssh-key: hogekey - instance-type: ecs.t3.xlarge disk: 50GB ssh-key: hogekey cni-plugin: terway
  11. 11. ② Capacity planning for meta cluster API Server etcd controller manager scheduler control plane for userA API Server etcd controller manager scheduler control plane for userB meta kubernetes cluster customer kubernetes cluster ENI kubelet kube-proxy kubelet kube-proxy User work loads meta clusterのリソース使用量や、利 用しているVPCのネットワークリソース などを見て、新しいセルを作るかどう か検討する。 API Server向けSLB (Control Planeはマネージド) ENIでAlibaba Cloud管理側の VPCとコネクト
  12. 12. ③ Scaling the master components of customer clusters API Server etcd controller manager scheduler control plane for userA API Server etcd controller manager scheduler control plane for userB meta kubernetes cluster customer kubernetes cluster ENI kubelet kube-proxy kubelet kube-proxy User work loads control planeのスケールし なければいけないタイミング がある。ある計算ロジックに 合わせて、3段階でスケー ルする。 API Server向けSLB (Control Planeはマネージド) ENIでAlibaba Cloud管理側の VPCとコネクト
  13. 13. ACK: professional managed cluster 最近ACKにSLAの高いクラスタモード(Professional Clustere)が追加された。その機 能の内容に下記がある。この機能の内容が、おそらくいま説明したものである。(おそ らくと書いたのは明確にドキュメントに書かれていないので) API Server - Provides the automatic scaling feature. - Monitors availability.
  14. 14. ④ Evolving customer clusters at scale Kubernetesは3ヶ月に1つマイナーバージョンがあがる。サポート期間は1年間とかなり 速いペースで進化する。また、Kubernetes本体だけでなくその上で動く各種ソフトウェ アもバージョンアップが行われる。 とにかくバージョンアップ追随が大変!!! CSI CNI Device Plugin Scheduler Plugin Cloud Controller Manager alicloud-monitor-controller alicloud-application-controller kube-flannel-ds Nginx Ingress Controller metrics-server ・・・
  15. 15. 大量クラスタのバージョンアップに追随するために 1. プラグイン可能なコンポーネントをすべて登録・管理するための一元化されたシス テムの開発 2. 移行前のアップグレードが成功しているかどうかを確認するために、プラグインコ ンポーネントのヘルスチェックシステムを開発。 アップグレードごとのチェックとアップグレード後のチェックを実施。 3. 運用効率化のためのカスタムコントローラ開発 a. Kubernetesの拡張のコントローラを独自開発し、OSS化 → OpenKruise
  16. 16. ⑤ Global Observability Across Datacenters Edge Prometheus Customer cluster Customer cluster Customer cluster Edge Prometheus Customer cluster Customer cluster Customer cluster Edge Prometheus Customer cluster Customer cluster Customer cluster Cascading Prometheus Cascading Prometheus Central Prometheus China Regions Europe rigions Asia Regions Alert Manager SRE モニタリングは、典型的な多層 アグリゲーションモデルを用い て設計。 DingTalk, etc
  17. 17. まとめ 1. Alibaba Cloudのサービスを支える側の努力がわかると安心して使えてくる 2. 裏側を知るとサービスの仕様も理解できてくる 3. 中国語や英語で結構いい記事たくさんでているのでチェックすべし 4. アリババは、クラウドネイティブコミュニティへの貢献度もそこそこ高い気がする! References 1. 【翻訳】Kubernetes as a serviceの謎を解く。Alibaba Cloudが1万個のKubernetesクラスタを管理する 方法 2. 万级规模 K8s 如何管理?蚂蚁双11核心技术公开 3. OpenKruise

×