はてなの金次郎

Pythonエンジニアの技術系ブログ

入門Kubernetesに参加してきました

はじめに

supporterzcolab.com

サポーターズCoLabの『入門Kubernetes』に参加してきました。

GKEのチュートリアルをやったことがあるのと、GKE入門の勉強会に参加したことがあるくらいで、k8sはまだまだ理解不足だったので今回の勉強会に参加しました。

とてもわかりやすかったです! Dockerの前提知識があれば誰でも聞ける内容だったと思います。

「こういう課題があったからこういうサービスや概念が生まれた」

のようにサービスや概念の紹介だけではなく、「どういった課題を解決するため」という技術が生まれた背景やデファクトスタンダードになった理由とともにストリー仕立てに構成されていたため非常に飲み込みやすかったです。

また、プレゼンの仕方も勉強させいただきました。ライブコーディングはたまに見ますが、ホワイトボードを使う講義は初めてだったので新鮮でした。

要所要所で笑いを誘うテクニックも含め、聴講者を集中させる技術を自分も磨きたいです。

ホワイトボードとQAの部分のみですが以下メモ書きです。

bit.ly

自己紹介

  • 片岡航平さん(@p__oka)
  • 株式会社ワクテカCTO
  • FITRA, FITRA Workout (DMM英会話のFitness版)

Dockerとは

  • コンテナ型仮想化環境
  • プロセスを隔離させる

Kubernetes

Case Study

  • Railsアプリケーション
  • Railsのプロセスを常に4つ起動することを保証したい
    • deployment
      • imageとプロセス数を定義する
      • オートスケールも可能(4~10)
      • RollingUpdateStrategy
  • ロードバランシングを適切に設定することが難しい
    • Service
    • Service間での通信(マイクロサービス)
    • 外部からのアクセスがない場合は必要ない
  • どうやって外部に公開するか
    • ingress
      • Service との連携する
      • 一つのドメインで異なる Service に通信できる
      • できるが推奨されていない
  • 環境変数の管理
    • ConfigMap
    • ハードコードしかできない?大きな問題
    • imageを置換する
    • CIでsedしまくる
    • Kubernetes Helm

コンテナランタイマー

  • gVisor
  • Dockerは影響力を失いつつある
    • 抽象レイヤーがないという脆弱性がある

クラスタ

Dockerコンテナを実行するために用意された実行環境

ノード

物理(仮想)マシン

ロギング

  • GCPの場合は意識せずstackdriverにたまる
    • stackdriverは監視もできる
  • アプリケーションのログは全て標準出力にだす
  • DataDogはKubernetes完全対応
  • サイドカー(requestヘッダにrequestIDを入れる)

Istio(イスティオ)

  • Envoy を入れるなら Istio ごと入れるとよい

speakerdeck.com

Red Hat Openshift

  • 本番環境適用に向けた多様な機能