129 Views
November 05, 18
スライド概要
「2018/11/02 コンテナに乗り遅れた人たちへ」で発表した資料になります。
https://askul.connpass.com/event/104621/
2023年10月からSpeaker Deckに移行しました。最新情報はこちらをご覧ください。 https://speakerdeck.com/lycorptech_jp
Kubernetes Cluster Admin やってました 2018年11月5日 ヤフー株式会社 アスクル 内田 聡史 Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved.
ターゲット これからコンテナをProductionで 動かそうという方 どっちかっていうとk8sの話…。 k8s用語が出るのはご了承ください。 Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 2
自己紹介 内田 聡史 2008 – ヤフー株式会社 ヤフオク システム統括本部PF開発本部 2018年10月より アスクル株式会社に出向 LOHACO 担当 Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. #水曜どうでしょう #WWE #バンド活動 #vivabeers #4弦 #bass #二郎 #golang #k8s #docker 3
私のミッション Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved.
私のミッション Kubernetes Cluster Admin としてホスティング環境を提供する Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 5
Why エンジニアがアプリケーションの 開発に注力できる環境を作るため Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 6
Kubernetes導入前 アプリケーションの開発・運用 デプロイ・ロールバック ランタイム管理 VIPなどのネットワーク設定 Kernelなどのバージョン管理・脆弱性対応 Dev/Ops チームA Use End Users Use チームB Dev/Ops VM or BareMetal(IaaS) Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 7
Kubernetes導入後 Docker Imageの管理 アプリケーションの開発 デプロイ管理 Kubernetes Cluster Admin Kubernetes自体の管理 Kernelのバージョン管理・脆弱性対応 VIPなどネットワーク設定 deploy/publish チームA Use End Users Docker Image Use deploy/publish チームB Docker Image Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. Kubernetes Cluster 8
戦いの日々 Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved.
OS問題 CentOS 7.xでIssue踏みまくり。 Container Linux化を目指してます。 Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 10
Update時間かかる問題 OSSを使おうとした • kubeadm → Production非推奨 • kubespray → Updateに4時間! 独自にIaC化。それでも40分くらい。 Container Linux化でおそらく変わる。 Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 11
Updateの安全性問題 安全にKubernetes Updateしたい。 • 利用者の使い方にもよってしまう • サービスの瞬断が発生しうる状況 Service Discoveryが必要? Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 12
権限管理問題 マルチテナントで提供 • 他のチームのアプリは操作不可能に • Clusterの権限は利用者に付与しない KubernetesのRBACで権限管理。 Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 13
Fat Image問題 Docker Imageが大きすぎ • Pullに時間がかかる • デプロイやスケールが遅い ネットワークの調整(10G)で対応。 利用者には小さくしてもらうことを呼びかけ。 Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 14
セキュリティ問題 役割と責任範囲の分離のため • NodeにSSHさせない。 • ホストOSのdocker.sockは使用禁止。 • マルチテナントなのでPod間通信を抑制。 Pod Security Policy/Pod Network Policy サーバのアカウント設定で対応。 Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 15
Kubernetesのリリースサイクル問題 バージョンアップが早い • 3ヶ月に1回マイナーバージョンが上がる • 2017/09 v1.8 → 2018/09 v1.12 • キャッチアップが追いつかない ひたすら追いかける Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 16
more and more and more … • Multiple Zone/Federation • Stateless or Stateful(Storage) • キャパシティプランニング • モニタリング(Prometheus) • コンテナのログは消えますよね … Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 17
得た学び Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved.
得た学び コンテナをProductionで動かす時は 1. 管理者/利用者を分けましょう 2. マルチテナント or シングルテナント を決めましょう Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 19
管理者/利用者を分ける Container Orchestration アプリを作る人。 Containerの動作環境を 管理する人。 Node Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 20
管理者/利用者を分ける アプリ開発者が アプリの開発に注力するため。 Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 21
マルチテナント or シングルテナント マルチテナント • クラスタ数が少なくて済む • サーバリソース(CPU/Memory) の有効活用 Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 22
マルチテナント or シングルテナント シングルテナント • 権限管理が比較的楽 • コンテナ間通信の防止が不要 • Statefulを実現しやすい • スケールを担保しやすい Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 23
マルチテナント or シングルテナント 正解はありません。 状況によってどちらが適切かの 判断が必要。 Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 24
心がけていたこと Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved.
心がけていたこと • とにかくTry & Errorをしよう • 早く失敗しよう • ミニマムにシンプルに始めよう Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 26