Container EngineでKubernetesを触ってみた記録です。
KubernetesShinichirow KAMITOGroovenauts, Inc.1 / 23
View Slide
MeName: Shinichirow KAMITOCompany: Groovenauts, Inc.Languages: Ruby, Erlang, JavaScript (Python, Golang)2 / 23
kubernetes3 / 23
kubernetskubernetesはGoogleがGoogleが公開したオープンソースのDockerコンテナオーケストレーションツール。via http://kubernetes.io/4 / 23
最近のDockerブームによりアプリケーションをDockerコンテナで動かす機会が増えた。docker runすれば起動するけど、何十台、何百台とコンテナを起動する度にdocker runすんの?稼動してるコンテナはどうやって管理すんの?コンテナ死んだらどうすんの?という問題が出てくるので、これらを解決するために生まれた。5 / 23
Google Container Engine6 / 23
Google Container EngineDockerコンテナのを展開し、Kubenetesで管理されるGoogleが提供しているサービス。 (現在はアルファリリース)今日はKubernetesそのものというよりも、こちらの紹介になります。7 / 23
Container EngineGoogle Developer Consoleのメニューから「Container Engine > コンテナ クラスタ」を選択して、「無料試用に登録」をクリックしてコンテナクラスタを有効にします。8 / 23
「新しいコンテナ クラスタ」をクリックして新しいコンテナクラスタを作成します。 名前やマシンタイプ、クラスタ数を入力して作成します。9 / 23
Container Engineではgcloudコマンドツールで提供されているツールを利用して、Kubernetesの管理を行ないます。10 / 23
gcloudコンテナエンジンのクラスタを操作するには、gcloudコマンドのkubectlコマンドを利用します。$ gcloud components list--------------------------------------------------------------------------------------------------| Components ||------------------------------------------------------------------------------------------------|| Status | Name | ID | Size ||------------------+-----------------------------------------------+-------------------+---------|| Update Available | BigQuery Command Line Tool | bq | < 1 MB || Update Available | Cloud SDK Core Libraries | core | 2.0 MB || Update Available | Default set of gcloud commands | gcloud | < 1 MB || Update Available | Developer Preview gcloud Commands | preview | < 1 MB || Deprecated | Compute Engine Command Line Tool (deprecated) | gcutil | < 1 MB || Not Installed | App Engine Command Line Interface (Preview) | app | < 1 MB || Not Installed | Compute Engine Command Line Tool Checker | gcutil-msg | < 1 MB || Not Installed | gcloud app Java Extensions | app-engine-java | 95.2 MB || Not Installed | gcloud app Python Extensions | app-engine-python | 6.9 MB || Installed | Cloud Storage Command Line Tool | gsutil | 2.7 MB || Installed | gcloud Alpha Commands | alpha | < 1 MB || Installed | gcloud Beta Commands | beta | < 1 MB || Installed | kubectl | kubectl | |--------------------------------------------------------------------------------------------------To install new components or update existing ones, run:$ gcloud components update COMPONENT_ID11 / 23
kubectlkubectlコマンドをインストールします。$ gcloud components update kubectlインストールできたらversionが確認できます。$ kubectl versionClient Version: version.Info{Major:"0", Minor:"20.1", GitVersion:"v0.20.1", GitCommit:"", GitTreeState:"not a git tree"}Server Version: version.Info{Major:"0", Minor:"21", GitVersion:"v0.21.2", GitCommit:"4e89f2e6670b1662021a86ac42b99c5c50c37d05", GitTreeState:"clean"}kubectl helpするとなんかいっぱい出ます。12 / 23
gcloud configkubectlで使用するプロジェクトやゾーン、クラスタの設定をします。$ gcloud config set project PROJECT_ID$ gcloud config set compute/zone asia-east1-c$ gcloud config set container/clouster CLUSTER_NAME$ gcloud config list[compute]zone = asia-east1-c[container]cluster = CLUSTER_NAME[core]account = [email protected]disable_usage_reporting = Falseproject = PROJECT_ID13 / 23
コンテナクラスタをDeveloper Consoleから作成したり、別のマシンで作成した場合は、以下のコマンドを実行して、 kubectlがクラスタAPIにアクセスするために認証情報(Credentials)を作成する必要があります。$ gcloud beta container get-credentials必要に応じて、--zoneや--clusterを指定できます。via: https://cloud.google.com/container‒engine/docs/before‒you‒begin14 / 23
Cluster15 / 23
VM「Compute Engine > VM インスタンス」でインスタンス一覧を確認すると、名前に先ほど入力したクラスタ名が含まれているインスタンスがクラスタ入力数分作成されています。Kubernetesはここで作成されて登録されているクラスタインスタンスに対してDockerコンテナの展開を行ないます。 これらインスタンスのことをノード(Node)といいます。ノードの一覧を確認するには、$ kubectl get nodesで確認できます。16 / 23
(Pod)ポッド(Pod)とは、ノードの中で起動するコンテナのグループみたいなもの。 JSONまたはYAMLで記述することができ、名前やラベルをつけることもできます。クラスタ内のコンテナはこのポッド単位で管理を行ないます。17 / 23
PodReplicationControllerService18 / 23
ポッドの起動を行なうには、kubectl createコマンドを利用します。$ kubectl create -f /path/to/your-directory/locust-master-controller.ymlreplicationcontrollers/locust-master起動したポッドの一覧を確認するにはkubectl getコマンドを利用します。$ kubectl get podskubectl getコマンドはその他の各種リソースも取得することができます。19 / 23
createしたときのポッド数はPodファイルのreplicasで指定した個数分しか起動していません。 例えば負荷が増大してより夛くのポッド数を必要としたときには、kubectl scaleコマンドを利用して、 ポッド数を増減させることができます。$ kubectl scale --replicas=10 replicationcontroller locust-workerscaledもう一度kubectl get podsしてみます。$ kubectl get podsTODO: Pending20 / 23
KubernetesはDockerコンテナを管理するためのオーケストレーションツール。Kubernetesを動かすためのサービスとしてGoogle Container Engine(alpha)がある。まずはノードを準備する。次に構成をポッドとして作成する。起動も、スケールも超簡単21 / 23
¿Questions?22 / 23
Thank You23 / 23