日本語ブログ
私の日本語の投稿。技術、プログラミング、コンテナ、Kubernetesなどについて書いています。
-
posts
-
Preemptible InstanceでGKEクラスターのオートスケーリング
このポストは Kubernetes Advent Calendar Day 25の記事です。 Google Compute Engine (GCE)ではPreemptible Instanceを作ることができます。Preemptible Instanceを使うと変動するようなワークロードにかなりコストを削減できます。 Google Kubernetes Engine (GKE)は標準にクラスターオートスケーラーがついています。クラスターオートスケーラーを有効にするとクラスターの要求されているワークロードに対してクラスターを自動的にスケールできます。GKEクラスターのノードはGCEのVMになっているのでpreemptible instanceのノードプールの作成にサポートしています。 この記事ではこの2つの機能を組み合わせて安くて自動的にスケールするリソースの作成をやってみたい。一緒にやってみたい方はGCPの$300無料トライアルを使うといいと思います。 Preemptible Instances Preemptible instanceはGCEの単価が安く一時的... -
Kubernetesを拡張しよう
この記事は Kubernetes Advent Calendar 2016の第17日目の記事。 第16目はyuanyingさんの 「OpenStack で Kubernetes を使う」 でした。 KubernetesはDeployment, Secret, ConfigMap, Ingressなど、いろいろ機能があります。それぞれの機能はあることを自動化しているようなものです。 例えば、Deploymentはアプリケーションのデプロイ・更新を自動化するもの。Ingressはロードバランサーの作成・管理を自動化しているようなもの。その機能は便利ですが、ある程度Kubernetesに取り込んだら、自分で拡張したくなる場合がが多くなる。例えば、証明書の更新・管理の自動化だとか、etcdクラスターの管理の自動化だとか。 Kubernetesアーキテクチャ Kubernetesをどうやって拡張するかを説明する前に、そもそもKubernetesのアーキテクチャを説明しなくちゃいけない。KubernetesのマスターにAPIサーバーはもちろんあるんですが、APIサーバーは基本的... -
Kubernetes Python クライアントを使ってみる
この記事は pyspa Advent Calendar 2016 の第2日目の記事。第1目はakisuteさんの「今年の話」だった。 「斧さんの記事凄かった。pyspa の二日目の人まじかわいそう」というかわいそうなイアンです。よろしくです。 私はGoogleに入ってもうすぐ2年が経つのですが、今年はコンテナオーケストレーションシステムのKubernetesをだいぶ触るようになった。と同時にPythonを使うシーンが結構減ってしまったんですけど、今回は両方使うことにした。 Kubernetesはなんっすか みんなDocker触ったことあるけど、Kubernetesなんで触ったことない人がまだ結構いると思うけど、ちょっと説明してみる。Kubernetesは今までやっていたことを自分なりに自動化したものだと考えるといい。今まで、ChefやAnsibleでウェブアプリをサーバーにダウンロードして起動してsupervisordか何かの方法で監視して、その前にロードバランサを作って外からアクセスすることができるようにしたと思う。sshを使わないし、内部でやっていることがだい... -
Kubernetesヘルスチェックの使い方
最近、Kubernetesのヘルスチェックについての質問をよく見ています。ここでヘルスチェックの種類の違いや、どう使うか説明してみます。 Liveness Probe Kubernetesのヘルスチェックは2種類があって、一つ目はlivenessProbeと、2つ目はreadinessProbeというやつです。livenessProbeの役目はアプリケーションが生きてるかどうかをチェックすること。普段、エラーが起きた時に、アプリがクラッシュで終了して、Kubernetesがそれを見て、再起動してくれるんですけど、livenessProbeはアプリが終了せずに動かなくなったり、デッドロックしたりする場合にもアプリを再起動して直すために存在する。アプリがちゃんと動いているだけをチェックしているので、単純にHTTPレスポンスを返せばいいはず。 簡単な例として、以下はGoアプリのlivenessProbeの実装。 http.HandleFunc("/healthz", func(w http.ResponseWriter, r *http.Request) { w.Write... -
PyCon JP 2016に参加してきました
今年のPyCon JP で Tensorflowについて発表させていただきました。私は台北の出張があって今年のPyCon JPで2日目しか参加できなくて残念でしたが、今年は過去最高のPyCon JPだと感じていました。PyCon JPのスタッフの皆さん、本当にお疲れ様でした! 私は数年間イベントの企画や準備にあまり関わらないようになってきていますが、コミュニティメンバーとして、PyCon JPの素晴らしさ、本当に誇りに思っています。 Tensorflowトーク 最近、機械学習が話題になっているから、Tensorflowについて発表させていただきました。英語で発表しましたし、30分で発表するのが非常に足りないと感じるし、ここで少しTensorflowについて追記しようかなと思います。 Tensorflowは2015年11月にリリースした機械学習用のPythonライブラリ。Googleが以前にリリースしたオープンソースだと、以前に使っていたけど、今は次世代のものを使っているっていうのが多かったが、TensorflowはGoogle社内でも現在使っているGoogle最新技術で... -
小さいDockerイメージを作ろう Part #2
この記事は小さいDockerイメージの作成について第2版目の記事。前回の記事で小さいDockerイメージの作り方について書きましたが、その方法を使った場合、どのくらい小さくできるかは限られている。イメージに追加するレイヤーを小さくする方法を使ったんですが、その方法が使えない場合がある。Dockerfileを実行するコマンドを特定な順番で実行しなければならない場合はどうすることもできない。例えば、ある中間ステップでファイルを追加しなければならない場合: RUN ... ADD some_file / RUN ... 最初のRUNコマンドで何かの処理をしてから、ファイルを追加して、2番目のRUNコマンドでまた処理が必要な場合は、Dockerは一行一行にイメージのレイヤーを作ってしまう。 大きいイメージを継承する場合も、イメージを小さくすることができない。イメージを継承しているので、この場合でもその大きいイメージレイヤーはもう作らてしまっているので、Dockerではイメージを小さくすることができない。 FROM large-image RUN ... Docker Sq... -
Googleのほとんどのサービスを支えるBigtableの誰でも使える版 Cloud Bigtable
これは Google Cloud Platform Advent Calendar 2015の19日目の記事です。 そろそろ僕がGoogleに入って1年になります。ほんとにあっという間に2015年が終わった感じです。「Developer Advocate」という肩書のエバンジェリストのような、エバンジェリストじゃないような仕事をしています。 僕の仕事の一つが、今年の5月にbetaとして公開した「Cloud Bigtable」のリリース支援です。Cloud Bigtable というのは、Googleの有名な大規模分散データベースの「Bigtable」をGoogleの開発者以外でも使えるようにしたサービス。このBigtableはGoogleのサービス、検索、Maps、Gmailなど、ほとんどのサービスを支えています。 Bigtableは分散データベースでスケーラービリティが高い…というところまではわかりやすいのですが、実際にどれだけスケールできるのかはGoogleの外ではあまり知られていないと思います。 Googleの検索インデクスは 100,000,000 Gb ... -
(より)小さいDockerイメージを作ろう
最近、コンテナ技術が流行っていていろなツールを興味深く触っている。その中の一番人気のはみんな大好きなDocker。Dockerはdocker runでコンテナの実行環境を簡単に作ってくれる上、docker buildでコンテナのイメージの構築も簡単にできる。Dockerのイメージ構築はDockerfileというMakefileのようなファイルを元にその中のコマンドを順番に実行して構築していくもの。 例えば、 FROM debian:jessie RUN apt-get update RUN apt-get install -y python RUN mkdir -p /data VOLUME ["/data"] WORKDIR /data EXPOSE 8000 CMD [ "python", "-m", "SimpleHTTPServer", "8000" ] これは非常にシンプルなDockerイメージなんですが、実際にビルドして、イメージのサイズを見てみると: VIRTUAL SIZE 167.4 MB シンプルなアプリだったのに、結構大きいんだね。 ... -
Django Girls Workshop Tokyoのコーチをやりました
先週末に Django Girls Workshop のコーチとして参加しました。Django Girls は Django ウェブフェレームワークの女性のための国際的なコミュニティ。東京のPyLadies と PyCon JP との協力で開催されました。私は実はコーチとしても、PyCon JPの代表としても、スポンサーの3つの役割で参加しました。 今回のワークショップでは Python 初めての方や、プログラミング初めての方もいたし、仕事でウェブアプリを作っている女性もいて、レベルがそれぞれだったんですが、グループで別れてみんなそれぞれのペースで進められたので、とても良かったと思います。ワークショップで使った 資料 は Django のブログを作るような内容でとてもわかりやすかったし、多くのチームが最後まで進められて、とても有効な時間だったと思います。 大抵のIT勉強会は技術マニアが多くて、女性には参加しづらい。男性エンジニアは残念ながら、女性を無意識に排除する偏見を持っています。そして、これは私自身の偏見かもしれませんが、女性はもしかして男性と精神的なニーズが違ってい... -
App EngineのMaster-Slaveデータストアを廃止する件
App Engineの一部のユーザーに最近は以下のようなメールが何件届いていると思います。こういうようなメールは英語で書かれいて、「英語を読むの面倒くせぇー、スルーしよう」ってメールを消す方が多いんじゃないかなと思うんだが、実は重要なお知らせです。 このお知らせは、 「Master-Slave Datastoreが廃止され、High Replication Datastoreに移行しなければ、あなたのアプリは7月6日(月)に無効になるよ」 というお知らせ。(正確に言えば、6日PSTなので、日本からいうと7日の朝頃) 背景 App Engineが最初にリリースされた時(2008年頃の夏頃)に、データストアというデータベースシステムが組んでいて、同期マスタースレーブレプリケーションをするデータベースでした。これはいわゆる Master-Slave Datastore. リリースした約2年半後(2011年1月頃)、High Replication Datastoreという次世代データストアをリリースした。このデータストアは Master-Slaveの動きの異なっていて、自動的...