Movatterモバイル変換


[0]ホーム

URL:


Toru Makabe, profile picture
Uploaded byToru Makabe
PDF, PPTX9,706 views

ダイ・ハード in the Kubernetes world

Container Xmas party 発表資料

Embed presentation

Download as PDF, PPTX
ダイ・ハードin the Kubernetes world真壁 徹クラウドソリューションアーキテクト日本マイクロソフト株式会社2018/12/18Container Xmas PartyしぶといKubernetes使いになろう
自己紹介{“名前” : “真壁 徹(まかべ とおる)”,“所属” : “日本マイクロソフト株式会社”,“役割” : “クラウド ソリューションアーキテクト”,“経歴” : “大和総研 → HP Enterprise”,“特技” : “クラウド & オープンソース”,“資格” : “CNCF Certified Kubernetes Admin.”,“Twitter” : “@tmak_tw”}https://phippy.io/好きなキャラクター:Captain Kube
しぶといヤツ“ダイ・ハード”
お品書きOpenStackとKubernetesの類似点と現状Kubernetesの壊れ方しぶといKubernetes使いになるための ご参考戦略・実装# 実装例としてAzure Kubernetes Serviceを取り上げますが、基本的にKubernetes共通の話をします# 「Kubernetesを少しでも触ったことがある」技術者を参加者像として想定しています
最近のKubernetesを取り巻く環境はちょっと前のOpenStackと似ている最近SNSなどで話題になっていましたが
お断りわたしとOpenStack前職で深く関わっていましたが、知識は3年前で止まっていますすでに解決していることもあると思いますわたしはいまだにOpenStackが目指した世界に共感していますOpenStackコミュニティの仲間はズッ友です
OpenStackとKubernetes 似ているところレイヤーは異なれど、さまざまなアプリを動かす”基盤”である扱う技術が幅広い (OSカーネル、ネットワーク、ストレージ、etc)ソフトウェアで構成要素を制御する、いわゆるSoftware Defined世界中のユーザーやベンダーが多様なアイデアやニーズを持ち込むコミュニティが短期間で巨大化し、ブームに挑戦的なオープンソースプロジェクト
わたしが苦労したこと何かあったときの影響範囲が大きいSoftware Definedな基盤のBlast Radius(問題発生時の影響範囲)は、クラスター全体バグ、オペレーションミス、アップデーターの不具合/考慮漏れ、etcアイデアやニーズ、コードが常に受け入れられるわけではない目の前で困っているユーザーのニーズ、改善案や作ったパッチが、コミュニティで受け入れられる保証はない独自に手を入れるとアップストリームから乖離し、エコシステムから離れていくアップデートが頻繁OpenStackは6か月ごとにバージョンアップしていたイノベーティブな新機能は、たいてい破壊的くまなく理解し、知識を維持し続けるのは困難多様なインフラ技術が融合しており、かつそれぞれが先進的で、頻繁に変わるそしていまKubernetesで(以下略
[至った お気持ち]仕様や実装はコントロールできない。あくまで貢献の結果である。変化は利点のトレードオフとして受け入れる。リスクの回避と緩和は戦略的に。
[至った お気持ち]仕様や実装はコントロールできない。あくまで貢献の結果である。変化は利点のトレードオフとして受け入れる。リスクの回避と緩和は戦略的に。
マネージドサービスや商用ディストリビューション・サポートで、負担は大きく軽減できますですが、使い始めてしまうと小手先、後付けでは対応できないこともありますどんなことが起こりうるかを把握し、事前に戦略を立てておきましょう
Kubernetesの壊れ方 (故障・災害編)しぶといKubernetes使いの基礎知識
Master VM/Server(主にコントロールプレーン系機能が動く)Node VM/Server(主にユーザーコンテナーが動く)Cluster statestore(etcd)SchedulerKubeletContainerRuntimeAPI ServerAPIsController ManagerControllersPod(Container)Client(kubectlなど)Kubernetes アーキテクチャー主要コンポーネントの関係
Failure Mode (壊れ方)公式ドキュメントよりTroubleshoot Clusters - A general overview of cluster failure modes網羅性や詳細度はそれほど高くありませんが、ざっと把握したり、考えるきっかけに良いです以降、誤解をおそれずに意訳していきます
Root causes (根本原因)公式ドキュメントよりVMのクラッシュネットワーク分断 (クラスター内、クラスター/ユーザー間)Kubernetesソフトウェアのクラッシュデータ消失、ストレージが使えないオペレーションミス (Kubernetesソフトウェアや関連アプリケーションの構成誤り)
Specific scenarios (ちょい具体的に)公式ドキュメントより壊れ方 影響API Serverやそれが動くVMがクラッシュ コントロールプレーン系機能は操作不能にKubernetes APIに依存しないPodやServiceは動き続けるAPI Serverのデータストア(etcd)が消失 上記と同じだが、データの回復が必要他コントロールプレーン機能やそれが動くVMがクラッシュ該当&依存する機能は操作不能に依存しないPodやServiceは動き続けるノードVMのクラッシュ 該当VMで動くPodは利用不能にMaster/Node間ネットワーク分断 コントロールプレーンはNodeが利用不能と判断Node(Kubelet)はAPI Serverを利用不能と判断該当NodeのPodは動き続けるKubeletのクラッシュ 上記と同じクラスター操作者のミス すべてを壊しうる
[補足]ネットワーク分断/kubeletクラッシュ対策は後ほどMasterNodekubeletPodNICや経路上でなんらかの問題 Kubeletのクラッシュだが動くMasterNode AkubeletPodNode BkubeletPodだが動くNode A ダウンNode BでPod再作成誰かVolumeをつかんでない?
Mitigations (緩和策)公式ドキュメントより緩和策 何に効くIaaSの持つVMのリスタート機能を使う 予期せぬVMのクラッシュIaaSの持つ信頼性の高いストレージを使う/バックアップするetcdおよびユーザーボリュームの予期せぬ消失ReplicaSetsやServiceを使う 予期せぬノードVM/KubeletのクラッシュPod再作成の可能性を加味してアプリを作る 予期せぬノードVM/Kubeletのクラッシュ独立した複数のクラスターで構成する 上記すべてこれだけだとちょっと物足りないですね、まとめるとこういうことです• Kubernetesの土台にあるインフラを活かす/意識して設計する• Kubernetesらしいアプリの作りにする• Blast Radiusを限定/分離する
MasterAPI ServeretcdロードバランサーControllerManager(A)Scheduler(A)MasterAPI ServeretcdControllerManager(S)Scheduler(S)MasterAPI ServeretcdControllerManager(S)Scheduler(S)NodeNodeNodeClient(kubectlなど)基本戦略VM/Serverを冗長化してロードバランサーで散らすロードバランサーアプリケーショントラフィック
その他のポイント同じ役割を「離す」せっかく冗長化したVMを同じ物理サーバーに置かない (同じ役割のVMは別の物理サーバーへ)耐えたいレベルに応じてVMを離す度合いを上げていく (物理サーバー/ラック/データセンター)離す時は遅延に注意 (特にetcdは遅延に敏感)etcd間の遅延を2~3ms以内に抑えるとすると、広域で1つのクラスターは難しい (Azureの専用バックボーンでも東西リージョンで10msくらい)現状、広域災害はマルチクラスターで保護する (Cosmos DB etcd API for k8sなど限界突破の取り組みはある)アプリは躊躇なくRe-Runできる作りに、また、処理を小さくPodが孤立しても、新たに作られたPodでやりなおせるようにステートはPodの中に持たない、バッチなら処理単位を小さく刻む、etcStatefulSetsを検討する孤立PodのVolumeつかみっぱ問題を回避する基本戦略に加えて
Kubernetesの壊れ方 (不具合編)しぶとい技術者の基礎知識
どこかがおかしくなりましたインフラは壊れてなさそうだけど突然kube-dnsが黙るIngressが404しか返さなくなるバージョンを上げたらHPAが動かない (heapster -> Metrics Server)認証方法を変更したらCluster Autoscalerがクラッシュなどなど
基本戦略Kubernetesは進化の真っただ中で 自由度も高いから、手は打っておく常にバージョンは上げられるようにGitHubのIssueを探す→だいたい見つかるバージョンアップで解決することが多いリソース不足、奪い合いを防ぐ大事なコンポーネントはPriorityを高くNamespaceを分けてLimitRangeやQuotaでコントロールするマニフェストのレビュー (RequestsとLimitsを定義しているか、その値は妥当か、Node増設が必要か)とにかくテストと観測バージョンアップや方式変更前には必ずテストするすべてを机上で把握するのは 無理だからメトリックとログはとりましょう (そしてどこかにためておく Podが消えたあとでも見られるように)
バージョンアップ戦略 (インプレース)動いているクラスターをバージョンアップする期待ツールやサービスによってはボタンを押すだけクラスターを作り直さなくていいアプリを再導入しなくていい周辺機能を再作成・再連携しなくていい余剰設備が要らない (バッファは考える)考慮点テストできない 一発勝負(ツールの作り手は、あなたの構成&あなたのアプリをのせてのテストはしていない)バージョンアップ中は縮退するじわじわアップデートするMaster Master MasterNode Node Node
バージョンアップ戦略 (ブルーグリーン)本番の裏に新クラスターを作りテスト、切り替える期待本番の裏で新バージョンをテストできるテスト済みのクラスターを本番化できる失敗したときの戻しが楽バージョンアップ中に縮退しない考慮点新クラスターと周辺環境を作るのが面倒(構成管理ツールがないと つらすぎる)バージョンアップ期間は設備が倍に別途トラフィック制御の仕組みが要る裏でテストしスパっと切り替えるMaster Master MasterNode Node NodeMaster Master MasterNode Node NodeTrafficController
バージョンアップ戦略の比較どちらがいいかは ひとそれぞれインプレース ブルーグリーン作業量 小 構成管理によるリスク 大 小事前テスト可否と手段 現用クラスターでは不可テスト用の別クラスターで実施テスト済みクラスターを本番化リソースコスト (※) 一定(同等環境でテストするなら一時的に倍)一時的に倍縮退 有(程度はツールによる)無(※)リソースが従量課金のサービスか購入資産かで事情は異なる
Kubernetesの壊れ方 (操作ミス編)しぶとい技術者の基礎知識
$ kubeerctl config get-contextsCURRENT NAME CLUSTER AUTHINFO NAMESPACEAle-dev-context1 Ale-Cluster-dev Ale-adminAle-stage-context1 Ale-Cluster-stage Ale-adminAle-prod-context1 Ale-Cluster-prod Ale-admin* IPA-dev-context1 IPA-Cluster-dev IPA-userIPA-dev-context2 IPA-Cluster-dev IPA-adminIPA-prod-context1 IPA-Cluster-prod IPA-adminIPA-stage-context1 IPA-Cluster-stage IPA-adminStout-dev-context1 Stout-Cluster-dev Stout-adminStout-dev-context2 Stout-Cluster-dev Stout-userStout-prod-context1 Stout-Cluster-prod Stout-admin
Failure Mode 再掲公式ドキュメントより壊れ方 影響API Serverやそれが動くVMがクラッシュ コントロールプレーン系機能は操作不能にKubernetes APIに依存しないPodやServiceは動き続けるAPI Serverのデータストア(etcd)が消失 上記と同じだが、データの回復が必要他コントロールプレーン機能やそれが動くVMがクラッシュ該当&依存する機能は操作不能に依存しないPodやServiceは動き続けるノードVMのクラッシュ 該当VMで動くPodは利用不能にMaster/Node間ネットワーク分断 コントロールプレーンはNodeが利用不能と判断Node(Kubelet)はAPI Serverを利用不能と判断該当NodeのPodは動き続けるKubeletのクラッシュ 上記と同じクラスター操作者のミス すべてを壊しうる
基本戦略Adminは選ばれし人のみにみんなにkubectlが必要かを考えるアプリ開発者にはCI/CDパイプラインからのデプロイを強制する、などGitOpsは考えたいテーマクラスターやNamespaceを分離するかつRBAC、LimitRange/Quotaを拾ってきたマニフェストを試すクラスターは分けるいつでも作り直せるように構成管理ツールは、あなたを守ります
ご参考実装しぶといKubernetes使いになるための
Replicationご参考実装AKS & Terraformを活用したブルーグリーンバージョンアップ & マルチジオ災害対策AKSCosmosDBTrafficManagerAKSAKS(※)CosmosDBAKS (※)User Traffic他(※※) 他(※※)アプリCI/CDRegion ARegion BTerraformGreen GroupTerraformBlue GroupTerraformShared GrouptfstateDeploy& TestPriorityControl(※) 有事にゼロから作ればいいというアイデアもある RTO次第(※※) ユーザーRole定義、Monitor設定など
ご参考実装のポイントクラスターもImmutableにしてしまうTerraformで、まるっと環境を作成するクラスターだけでなく周辺要素も (Cosmos DB、Traffic Manager、ユーザーRole定義、Monitor設定など)リソース間で構成情報を共有する (Cosmos DBの接続文字列、Traffic Managerのエンドポイントなど)ライフサイクル、リスクプロファイルの異なるグループで分割する (ひとつにまとめてしまうと変化に弱い)ライフサイクルが異なれば、あえてDRY/Module化しない (バージョンが変われば書き方も変わる)データストアをKubernetesクラスター外部に持つクラスターのバージョンアップ切り替え時にデータ移行しなくてよいマネージドサービスで楽をする (構築維持の負担軽減、複製機能の活用など)要らなくなったらまるっと破棄するバージョンアップや方式変更が落ち着いたらブルー/グリーンのどちらかは廃棄なにかあったらTerraformで再現
Demo
従来とりにくかった戦略いまのKubernetesとエコシステムだと できるアプリがコンテナー前提なのでデプロイが楽アプリはレジストリで、あなたのPullを待っているアプリの実行条件をコード(マニフェスト)にできるアプリを楽に再デプロイできる → クラスターをImmutableにしやすいオンデマンドで使えるサービスの存在ブルーグリーンバージョンアップ戦略のコストを最適化する「使った分だけ課金」なサービスKubernetesのマネージドサービスは複数の選択肢があるKubernetesディストリビューション + 従量制 IaaS という手も (ディストリのコストを動的にできるかは要考慮)試して/壊して経験を積みやすい環境が整ってきたシステムを支えるのは人であり、人の思考と判断を支えるのは経験オンデマンドで使えるサービスなどを活用し、どんどん試して/壊して経験を積もう
もっと詳しく?
「しくみがわかる Kubernetes」翔泳社より 2019/1/23発売• 広範なKubernetesの機能から大事なところをピックアップ• 「なぜこの機能が必要か」「どのようなしくみで動いているのか」を大事に• 実践編では運用も考慮した解説を (わたしが書きました)
進化とエコシステムが魅力のKubernetes変化への追従はそのトレードオフリスクは戦略的に回避・緩和しよう
Q&Aいかがでしたか?
© Copyright Microsoft Corporation. All rights reserved.

Recommended

PDF
インフラ野郎 Azureチーム at クラウド boost
PDF
Essentials of container
PDF
俺とHashiCorp
PDF
Resilience Engineering on Kubernetes
PDF
半日でわかる コンテナー技術 (入門編)
PDF
ミッション : メガクラウドを安全にアップデートせよ!
PDF
帰ってきた インフラ野郎 Azureチーム ~Azure データセンターテクノロジー解体新書2018春~ - de:code2018
PDF
半日でわかる コンテナー技術 (応用編)
PDF
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
PDF
インフラCICDの勘所
PDF
インフラ野郎AzureチームProX
PDF
今改めて学ぶ Microsoft Azure 基礎知識
PDF
de:code 2019 Cloud トラック 総まとめ! 完全版
PDF
コマンド1発でAzureにDC/OS環境を作る方法
PDF
Azure Infrastructure as Code 体験入隊
PDF
ぼうけんにでかけよう Kubernetes KEDA
PDF
Azure Network Security Group(NSG) はじめてのDeep Dive
PDF
Terraform Bootcamp - Azure Infrastructure as Code隊
PDF
Demystifying Identities for Azure Kubernetes Service
PPTX
ワタシハ Azure Functions チョットデキル
PDF
一歩先行く Azure Computing シリーズ(全3回) 第2回 Azure VM どれを選ぶの? Azure VM 集中講座
PDF
Ingress on Azure Kubernetes Service
PDF
俺の Kubernetes Workflow with HashiStack
PDF
Real World Azure RBAC
PDF
俺的 Ignite update 萌えポイント portal&arm, compute, network -
PDF
インフラ廻戦 品川事変 前夜編
PDF
Azure update flash
PDF
クラウドネイティブガバナンスの実現
PDF
Kubernetesの良さを活かして開発・運用!Cloud Native入門 / An introductory Cloud Native #osc19tk
PDF
[Japan Tech summit 2017] DEP 005

More Related Content

PDF
インフラ野郎 Azureチーム at クラウド boost
PDF
Essentials of container
PDF
俺とHashiCorp
PDF
Resilience Engineering on Kubernetes
PDF
半日でわかる コンテナー技術 (入門編)
PDF
ミッション : メガクラウドを安全にアップデートせよ!
PDF
帰ってきた インフラ野郎 Azureチーム ~Azure データセンターテクノロジー解体新書2018春~ - de:code2018
PDF
半日でわかる コンテナー技術 (応用編)
インフラ野郎 Azureチーム at クラウド boost
Essentials of container
俺とHashiCorp
Resilience Engineering on Kubernetes
半日でわかる コンテナー技術 (入門編)
ミッション : メガクラウドを安全にアップデートせよ!
帰ってきた インフラ野郎 Azureチーム ~Azure データセンターテクノロジー解体新書2018春~ - de:code2018
半日でわかる コンテナー技術 (応用編)

What's hot

PDF
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
PDF
インフラCICDの勘所
PDF
インフラ野郎AzureチームProX
PDF
今改めて学ぶ Microsoft Azure 基礎知識
PDF
de:code 2019 Cloud トラック 総まとめ! 完全版
PDF
コマンド1発でAzureにDC/OS環境を作る方法
PDF
Azure Infrastructure as Code 体験入隊
PDF
ぼうけんにでかけよう Kubernetes KEDA
PDF
Azure Network Security Group(NSG) はじめてのDeep Dive
PDF
Terraform Bootcamp - Azure Infrastructure as Code隊
PDF
Demystifying Identities for Azure Kubernetes Service
PPTX
ワタシハ Azure Functions チョットデキル
PDF
一歩先行く Azure Computing シリーズ(全3回) 第2回 Azure VM どれを選ぶの? Azure VM 集中講座
PDF
Ingress on Azure Kubernetes Service
PDF
俺の Kubernetes Workflow with HashiStack
PDF
Real World Azure RBAC
PDF
俺的 Ignite update 萌えポイント portal&arm, compute, network -
PDF
インフラ廻戦 品川事変 前夜編
PDF
Azure update flash
PDF
クラウドネイティブガバナンスの実現
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
インフラCICDの勘所
インフラ野郎AzureチームProX
今改めて学ぶ Microsoft Azure 基礎知識
de:code 2019 Cloud トラック 総まとめ! 完全版
コマンド1発でAzureにDC/OS環境を作る方法
Azure Infrastructure as Code 体験入隊
ぼうけんにでかけよう Kubernetes KEDA
Azure Network Security Group(NSG) はじめてのDeep Dive
Terraform Bootcamp - Azure Infrastructure as Code隊
Demystifying Identities for Azure Kubernetes Service
ワタシハ Azure Functions チョットデキル
一歩先行く Azure Computing シリーズ(全3回) 第2回 Azure VM どれを選ぶの? Azure VM 集中講座
Ingress on Azure Kubernetes Service
俺の Kubernetes Workflow with HashiStack
Real World Azure RBAC
俺的 Ignite update 萌えポイント portal&arm, compute, network -
インフラ廻戦 品川事変 前夜編
Azure update flash
クラウドネイティブガバナンスの実現

Similar to ダイ・ハード in the Kubernetes world

PDF
Kubernetesの良さを活かして開発・運用!Cloud Native入門 / An introductory Cloud Native #osc19tk
PDF
[Japan Tech summit 2017] DEP 005
PPTX
Java on Kubernetes on Azure
PPTX
サイバーエージェントにおけるプライベートコンテナ基盤AKEを支える技術
PDF
最近良く聞く Kubernetes を体験してみた イントロ + 活用編
PPTX
今さら聞けない人のためのKubernetes超入門
PDF
Kubernetes 導入から始める DevOps について
PDF
Kubernetesのワーカーノードを自動修復するために必要だったこと
PDF
VMware が考えるコンテナと Kubernetes の世界
PDF
Azure Kubernetes Service Overview
PDF
20210415 amazonelastickubernetesservice devops_game_development
PPTX
Why Red Hat (comparing with Vmware).pptx
PPTX
Why Red Hat (comparing with Vmware).pptx
PDF
Infra: Kubernetes and GKE, Network
PPTX
Container x azure x kubernetes
PDF
DOO-005_裏 Inside Azure ~OSS 視点で理解する、Azure のテクノロジ & アーキテクチャ~
PDF
Azure Kubernetes ServiceとコンテナのCI/CD
PDF
Acm2.1 short public
PPTX
IoTのEgeにもコンテナがやってきた
PPTX
Containers and Virtual Machines: Friends or Enemies?
Kubernetesの良さを活かして開発・運用!Cloud Native入門 / An introductory Cloud Native #osc19tk
[Japan Tech summit 2017] DEP 005
Java on Kubernetes on Azure
サイバーエージェントにおけるプライベートコンテナ基盤AKEを支える技術
最近良く聞く Kubernetes を体験してみた イントロ + 活用編
今さら聞けない人のためのKubernetes超入門
Kubernetes 導入から始める DevOps について
Kubernetesのワーカーノードを自動修復するために必要だったこと
VMware が考えるコンテナと Kubernetes の世界
Azure Kubernetes Service Overview
20210415 amazonelastickubernetesservice devops_game_development
Why Red Hat (comparing with Vmware).pptx
Why Red Hat (comparing with Vmware).pptx
Infra: Kubernetes and GKE, Network
Container x azure x kubernetes
DOO-005_裏 Inside Azure ~OSS 視点で理解する、Azure のテクノロジ & アーキテクチャ~
Azure Kubernetes ServiceとコンテナのCI/CD
Acm2.1 short public
IoTのEgeにもコンテナがやってきた
Containers and Virtual Machines: Friends or Enemies?

More from Toru Makabe

PDF
インフラ野郎 Azureチーム 博多夏祭り
PDF
細かすぎて伝わらないかもしれない Azure Container Networking Deep Dive
PDF
NoOps?よろしいならば戦争だ
PDF
Azure Kubernetes Service 2019 ふりかえり
PDF
インフラエンジニア エボリューション ~激変する IT インフラ技術者像、キャリアとスキルを考える~ at Tech Summit 2018
PDF
Azure Blueprints - 企業で期待される背景と特徴、活用方法
PDF
ZOZOTOWNのCloud Native Journey
PDF
Azure Design Review Checklist Availabilityの巻
PDF
インフラ野郎 Azureチーム v18.11 at Tech Summit 2018
PDF
Ops meets NoOps
PDF
Azure Virtual Data Centerで学ぶ 企業向けAzureネットワーク設計
PDF
NoOps Japan Community 1st Anniversary 祝辞
インフラ野郎 Azureチーム 博多夏祭り
細かすぎて伝わらないかもしれない Azure Container Networking Deep Dive
NoOps?よろしいならば戦争だ
Azure Kubernetes Service 2019 ふりかえり
インフラエンジニア エボリューション ~激変する IT インフラ技術者像、キャリアとスキルを考える~ at Tech Summit 2018
Azure Blueprints - 企業で期待される背景と特徴、活用方法
ZOZOTOWNのCloud Native Journey
Azure Design Review Checklist Availabilityの巻
インフラ野郎 Azureチーム v18.11 at Tech Summit 2018
Ops meets NoOps
Azure Virtual Data Centerで学ぶ 企業向けAzureネットワーク設計
NoOps Japan Community 1st Anniversary 祝辞

ダイ・ハード in the Kubernetes world


[8]ページ先頭

©2009-2025 Movatter.jp