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

Kubernetes 触ってみた

Kubernetes 触ってみた

Container EngineでKubernetesを触ってみた記録です。

Shinichirow KAMITO

July 17, 2015
Tweet

More Decks by Shinichirow KAMITO

Other Decks in Technology

Transcript

  1. Kubernetes
    Shinichirow KAMITO
    Groovenauts, Inc.
    1 / 23

    View Slide

  2. Me
    Name: Shinichirow KAMITO
    Company: Groovenauts, Inc.
    Languages: Ruby, Erlang, JavaScript (Python, Golang)
    2 / 23

    View Slide

  3. kubernetes
    3 / 23

    View Slide

  4. kubernets
    kubernetesはGoogleがGoogleが公開したオープンソースのDockerコンテナオーケストレー
    ションツール。
    via http://kubernetes.io/
    4 / 23

    View Slide

  5. 最近のDockerブームによりアプリケーションをDockerコンテナで動かす機会が増えた。
    docker runすれば起動するけど、何十台、何百台とコンテナを起動する度にdocker runす
    んの?
    稼動してるコンテナはどうやって管理すんの?
    コンテナ死んだらどうすんの?
    という問題が出てくるので、これらを解決するために生まれた。
    5 / 23

    View Slide

  6. Google Container Engine
    6 / 23

    View Slide

  7. Google Container Engine
    Dockerコンテナのを展開し、Kubenetesで管理されるGoogleが提供しているサービス。 (現
    在はアルファリリース)
    今日はKubernetesそのものというよりも、こちらの紹介になります。
    7 / 23

    View Slide

  8. Container Engine
    Google Developer Consoleのメニューから「Container Engine > コンテナ クラスタ」を選
    択して、「無料試用に登録」をクリックしてコンテナクラスタを有効にします。
    8 / 23

    View Slide

  9. 「新しいコンテナ クラスタ」をクリックして新しいコンテナクラスタを作成します。 名前や
    マシンタイプ、クラスタ数を入力して作成します。
    9 / 23

    View Slide

  10. Container Engineではgcloudコマンドツールで提供されているツールを利用して、
    Kubernetesの管理を行ないます。
    10 / 23

    View Slide

  11. 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_ID
    11 / 23

    View Slide

  12. kubectl
    kubectlコマンドをインストールします。
    $ gcloud components update kubectl
    インストールできたらversionが確認できます。
    $ kubectl version
    Client Version: version.Info{Major:"0", Minor:"20.1", GitVersion:"v0.20.1", GitCommit:"", GitTreeSt
    ate:"not a git tree"}
    Server Version: version.Info{Major:"0", Minor:"21", GitVersion:"v0.21.2", GitCommit:"4e89f2e6670b16
    62021a86ac42b99c5c50c37d05", GitTreeState:"clean"}
    kubectl helpするとなんかいっぱい出ます。
    12 / 23

    View Slide

  13. gcloud config
    kubectlで使用するプロジェクトやゾーン、クラスタの設定をします。
    $ 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 = False
    project = PROJECT_ID
    13 / 23

    View Slide

  14. コンテナクラスタをDeveloper Consoleから作成したり、別のマシンで作成した場合は、以下
    のコマンドを実行して、 kubectlがクラスタAPIにアクセスするために認証情報(Credentials)
    を作成する必要があります。
    $ gcloud beta container get-credentials
    必要に応じて、--zoneや--clusterを指定できます。
    via: https://cloud.google.com/container‒engine/docs/before‒you‒begin
    14 / 23

    View Slide

  15. Cluster
    15 / 23

    View Slide

  16. VM
    「Compute Engine > VM インスタンス」でインスタンス一覧を確認すると、名前に先ほど入
    力したクラスタ名が含まれているインスタンスがクラスタ入力数分作成されています。
    Kubernetesはここで作成されて登録されているクラスタインスタンスに対してDockerコンテ
    ナの展開を行ないます。 これらインスタンスのことをノード(Node)といいます。
    ノードの一覧を確認するには、
    $ kubectl get nodes
    で確認できます。
    16 / 23

    View Slide

  17. (Pod)
    ポッド(Pod)とは、ノードの中で起動するコンテナのグループみたいなもの。 JSONまたは
    YAMLで記述することができ、名前やラベルをつけることもできます。
    クラスタ内のコンテナはこのポッド単位で管理を行ないます。
    17 / 23

    View Slide

  18. Pod
    ReplicationController
    Service
    18 / 23

    View Slide

  19. ポッドの起動を行なうには、kubectl createコマンドを利用します。
    $ kubectl create -f /path/to/your-directory/locust-master-controller.yml
    replicationcontrollers/locust-master
    起動したポッドの一覧を確認するにはkubectl getコマンドを利用します。
    $ kubectl get pods
    kubectl getコマンドはその他の各種リソースも取得することができます。
    19 / 23

    View Slide

  20. createしたときのポッド数はPodファイルの
    replicas
    で指定した個数分しか起動していませ
    ん。 例えば負荷が増大してより夛くのポッド数を必要としたときには、
    kubectl scale
    コマン
    ドを利用して、 ポッド数を増減させることができます。
    $ kubectl scale --replicas=10 replicationcontroller locust-worker
    scaled
    もう一度
    kubectl get pods
    してみます。
    $ kubectl get pods
    TODO: Pending
    20 / 23

    View Slide

  21. KubernetesはDockerコンテナを管理するためのオーケストレーションツール。
    Kubernetesを動かすためのサービスとしてGoogle Container Engine(alpha)がある。
    まずはノードを準備する。
    次に構成をポッドとして作成する。
    起動も、スケールも超簡単
    21 / 23

    View Slide

  22. ¿Questions?
    22 / 23

    View Slide

  23. Thank You
    23 / 23

    View Slide