スキップしてメイン コンテンツに移動

【勉強会】2019年1月31日『Mix Leap Study #32 - めっちゃわかるAIとKubernetes(GCPUG共催)』に参加した勝手な備忘録

日時:2019年1月31日 18:50~
内容:Mix Leap Study #32 - めっちゃわかるAIとKubernetes(GCPUG共催)

Kubernetes と Yahoo! JAPAN の取り組み

  • 資料
  • kubernetes クバネテス
  • kubernetes 3ヶ月に一度のマイナーバージョンアップ
  • yahoo 200+ kubernetesクラスタを運用
  • kubernetes as a Service をZラボが提供
  • Linuxコンテナ システムの他の部分から分離されたプロセス。プロセスがシステムの他の部分に影響しないように隔離し、制限。
  • Docker コンテナの実行と管理を行うソフトウェア。ソフトウェアの開発を変えた。
  • イミュータブルでポータブルな性質だから、自動化・スケジューリングがしやすい。
  • kubernetesはポータブルである。⇒どの環境で動く
  • kubernetesは成長している。⇒他のマネージドよりも利用者数が多い。
  • なぜkubernetesか?機能面
    • 頻繁なデプロイに耐えられる非常に優れた機能を持つ
    • 時間のかかるデプロイは問題があったときにの修正も遅れる。
    • 頻繁なデプロイは問題もすぐ修正でき、リスク低
    • 宣言的設定→以前は順番に変更(インストール・デプロイ)をしないといけなかったが、「のぞましい状態」を記述した設定ファイルを反映する。宣言的設定によるロールバック。
    • 自己回復機能「セルフヒーリング」→障害時(ノードが死んでも)に自動回復する。
    • コンテナ中心のインフラ
    • サーバリソースの隙間問題の解決
    • vmの抽象化に加えて、itインフラも抽象化(ロードバランサーや永続ストレージ)
  • kubernetesオブジェクト ワークロードやITインフラをアプリケーション指向に抽象化したもの
    • Pod 複数コンテナと、ボリューム。デプロイの最小単位
    • ReplicaSet コンテナの数を管理
    • Deployment デプロイを管理。内部的にはReplicaSetを使用。
    • Service 仮想IPとポートを持ち、ラベルセレクタによるPodのグルーピングを行う。Service名によるサービスディスカバリ。
  • minikube ローカル開発用クラスタ開発
アプリケーションを Kubernetes 上で動作させるまでの道のり

  • 資料
  • Podは一時的なオブジェクトとして扱えるようにすべき
  • 特定のノードに依存しない
  • The Twelve Factor App https://12factor.net/ja/
  • kubernetes 絵本がある。
  • Dockerfileのベストプラクティス
    • エフェメラルであるべき
    • コンテナごとに1つのプロセスを実行
    • 不要なパッケージのインストールは避ける multi-stage build
  • デプロイ 命令的なコマンド、命令的なオブジェクト操作、宣言的なオブジェクト操作
  • 長期的には宣言的アプローチで管理すべき。
  • セルフヒーリング、自立制御、更新、再現性、可逆性、監査、変更管理、レビュー、コンフリクト
  • yamlにkubernetesの考えが詰まっている。
  • kubectl .... dry-run -o yamlでyamlファイルのひな型を作る。
  • kubectl explainでパラメータの意味を表示。
  • kubectl apply -f 差分を検知して変更を反映する。
  • Pod 最低限利用するリソース量を設定しないとゼロになる。
  • livenessProbe コンテナの状態を監視。ダウンしたら再起動。
  • ダウンタイムゼロで更新するオブジェクト
    • GracefulShutdown アプリ自体をグレースフルシャットダウンできるように実装する必要がある。
      • preStopフックで終了処理を実装
    • ReadinessProbe アプリがリクエスト受けれるかを監視。起動が遅いアプリには設定したほうがよい。
    • Service ロードバランス先の更新。
      • Podの終了、Serviceのロードバランス先の更新は並列に実施される為、考慮が必要。
  • クラスタのメンテナンスに対応する。
    • kubectl draain node Podを退去する。
    • Podが偏っている場合は一気に終了される為、障害となる。PodDisruptionBudgetを使うと防ぐことが可能。

KubernetesでWebサービスをリリースをするまでに必要なものは

  • 資料
  • Ecosystemは多い。Cloud Native Landscape (CNCF)
  • Loggin Podからノードにログを吐いて、それをFulentがtailしてlogginへ送る
  • Monitoring Agent型とPull型。kubernetesはPrometheus用のI/Fがある。
  • Alerting metrics base/log base それぞれで監視
  • CI/CD 色々ありすぎて戦国時代。
  • Workflow Engine Scope
「じゃんけんマシン」で学ぶ機械学習とスマートIoT

  • デベロッパーアドボケイト
  • littleBitsの曲げセンサーモジュール
  • littleBitsのArduinoとサーボモジュール
  • Google Cloud Datalab → jupiter notebookで動いている
  • 1Dから1Dへの線形変換:線形モデル
    • ある空間から他の空間へ変換してくれる。
    • 式の重みを機械学習で算出する。
  • TensorFlow 機械学習開発のためのオープンソース
  • ソフトマックス どれぐらいの確率か。
  • クロスエントロピー どれだけ間違っているか。
  • BQML bigqueryの中で同じ機械学習ができる。
  • TensorFlow Object API 物体検知
  • Google Cloud IoT Core
  • TensorFlow で集合知でなにかできなか。
  • Edge TPU
    • TensorFlow用のCPU Googleから年内に発表!

https://app2.sli.do/event/76lvrzhz/questions P588

コメント

このブログの人気の投稿

サイクリング ~ 桂川サイクリングロード ~

 平日に休みが取れたので、前々から試してみたかった 桂川サイクリングロード 制覇にチャレンジしてみた。 ■ 基本情報  ・名称: 桂川サイクリングロード  ・路線名/府道京都八幡木津自転車道線  ・起点/京都市西京区嵐山河原町(渡月橋右岸)  ・終点/木津川市木津雲村(泉大橋左岸)  ・道路延長/約45キロメートル 幅員/3メートル  ・URL: http://www.pref.kyoto.jp/doroke/bic-kidu.html  往復で90キロといい感じのコース、ただし本日は強風。川沿いは風を遮るものが何もないのでダイレクトに風を受けてしまいます。 スタート地点の嵐山 途中に現れる流れ橋(上津屋橋)   ゴール地点の木津 無事にゴール。しかし帰り道、50キロを過ぎると右膝の後ろが痛くなる。 フォームが悪いのか、研究が必要だな。

sendmailでの転送設定

某システムにてメールを配信する機能を開発へ依頼。 受け取った後、PHPの mb_send_mail はsendmailが無いと動かない事実を伝えられる。 うちのメールサーバはPostfixですよ。。。 Σ(|||▽||| ) 仕方が無いので、WEBサーバにsendmailを立て DMZ 内のpostfixへリレーするようする。 意外と内部のメールサーバに転送する文献がなかったので、備忘録として残すことにした。 ■sendmail-cf-8.13.8-8.el5.i386.rpmのインストール 設定ファイルをコンパイルするm4コマンドを使う為に必要。     ・モジュールの確認           # rpm -qa | grep sendmail         sendmail-8.13.8-8.el5         sendmail-cf-8.13.8-8.el5         「sendmail-cf-8.13.8-8.el5」がインストールされていなければ以下を実施     ・パッケージのインストール           # rpm -ivh sendmail-cf-8.13.8-8.el5.i386.rpm     ・再度モジュールの確認           # rpm -qa | grep sendmail         sendmail-8.13.8-8.el5         sendmail-cf-8.13.8-8.el5 ■hostsファイルの確認           ・hostnameの確認           # hostname        ...