Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Kubernetes と オープンソース

Kubernetes と オープンソース

KubeFest Tokyo 2020のサイボウズのスポンサーセッションで発表した内容です。

binoue

June 13, 2020
Tweet

Other Decks in Technology

Transcript

  1. 具体例: TopoLVM ▌Kubernetes上で LVM を活⽤するストレージドライバ l 元々、需要があった l 徐々に社外ユーザが増加 l

    Bug報告・修正に伴うさらなる品質強化 l 外部からのパッチで機能強化も l 外部からのノウハウの蓄積 10
  2. OSSのメンテナンス ▌毎⽇OSSの状況をチェック l GitHubのrelease page などリリース情報が配信されるものをsubscribe l TwitterでSecurity関係のアカウントをフォローしておき、随時対応 ▌アップデート契機 l

    セキュリティ的に必要であれば、即時対応 l 3ヶ⽉に1回の定期更新でOSSを最新に保つ ▌改修を容易に l イメージの⾃前ビルド(パッチをすぐに利⽤できる様に) 12
  3. インフラ部分の試験 ▌インフラ部分の試験は、⾃作ツールを使って、仮想データセンタを構築 ▌仮想データセンタ上で、下記試験を実施 l 標準試験 l 機能試験 l 再起動試験 l

    障害試験 l (前のバージョンからの)アップグレード試験 ▌GitHubでmerge前にCIで上の試験を全て実⾏ ▌毎⽇で夜間にCI試験 16
  4. アップストリームのバージョンアップをバックポート ▌アップストリームのバージョンアップをバックポートする場合も、下記のようにバージョン アップを重ねることで、独⾃パッチが肥⼤化する 1. アップストリーム vNに対して独⾃パッチを作成 2. アップストリーム vN+1に対して、vNとvN+1の差分に対応するように独⾃パッチを修正してバックポート 3.

    アップストリーム vN+2に対応して、vNとvN+2の差分に対応するように独⾃パッチを修正してバックポート 26 アップストリーム vN アップストリーム vN+1 アップストリーム vN+2 独⾃パッチ vN+1 独⾃パッチ アップストリーム vN 独⾃パッチ vN+1 独⾃パッチ vN+2
  5. コミュニティ全体にプラスになるケースの例 ▌Argo CD の windows binary提供 l Argo CDとは︓ l

    CNCF管理下のCIツール l Git repositoryを監視して、変更があった場合は、変更をデプロイ l リッチなWeb UI l 問題︓ l Argo CDをCLIから操作するbinaryがwindowsには提供されていない l サイボウズでは Windowsの Argo CD CLIが必要だったためPRを作成 l サイボウズがサポートすることで、 Windowsの Argo CD CLIがアップストリームから 提供される様になった。 https://github.com/argoproj/argo-cd/pull/3015 32
  6. 再現⼿順の作成などを⾏うことで、⼯数が嵩む ▌kube-proxyによるipvs更新バグ l kube-proxyとは︓ l Kubernetesを構成するコンポーネントの⼀部 l ipvsモードの場合、nodeのipvsの操作も⾏う l 問題︓

    l コンテナがUnhealthyになったとき、kube-proxyがipvsを変更し、Gracefulにルー ティングを停⽌ l Gracefulにルーティング停⽌中に kube-proxyが停⽌し、 コンテナがHealthyに復 帰した場合、 kube-proxyが起動後、コンテナにルーティングがされないままになる l 再現状況がかなり特殊なため、再現⼿順の作成に時間がかかった 35 https://github.com/kubernetes/kubernetes/issues/92019
  7. 業務内で使⽤していないツールを使う ▌Rook の multi-cluster⽤ manifest⽣成 l Rookとは︓ l Storage ソフトウェアのCeph⽤のOperator

    l Ceph クラスターを複数⾃動管理してくれる l 問題︓ l Rookはmulti-cluster⽤のmanifestを⽤意しておらず、複数クラスタを運⽤する際には バージョンアップごとにmanifestの⼤幅な修正が必要 l アップストリームはmanifest管理ツールのHelmを使⽤して対応したい l サイボウズではHelmを使⽤していないが、multi-cluster⽤のmanifestを簡単に⽣成でき る様にHelmの仕様を把握しながらPR作成 36 https://github.com/rook/rook/pull/5573