go-app-foo

module
v0.0.0-...-28edeb0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 6, 2018 License: Apache-2.0

README

はじめに

これは、 Kubernetes 入門 #1 で scale1のデモを行った際のアプリケーション、 およびkubernetesのマニフェストファイルを含んでいます。

デモ内容

スケールアウト、そしてローリングアップデートをデモしました。

アプリケーションの起動

git clone→applyして起動する。

$ git clone https://github.com/h-r-k-matsumoto/go-app-foo.git
Cloning into 'go-app-foo'...
remote: Enumerating objects: 84, done.
remote: Counting objects: 100% (84/84), done.
remote: Compressing objects: 100% (62/62), done.
remote: Total 84 (delta 31), reused 58 (delta 20), pack-reused 0
Unpacking objects: 100% (84/84), done.
$ kubectl apply -f go-app-foo/kubernetes
configmap "go-app-config" created
service "go-app-foo" created
deployment.apps "go-app-foo" created
$

スケールしてスループットをあげてみる

まずpodが2つ起動している状態。

$ kubectl get pod
NAME                          READY     STATUS    RESTARTS   AGE
go-app-foo-79f989c65c-cq96b   1/1       Running   0          3m
go-app-foo-79f989c65c-d2k9f   1/1       Running   0          3m
$

abにて、スループット確認、秒間17.59リクエストを処理できる。

$ ab -n 500 -c 50 http://localhost:30000/hello
...
Requests per second:    17.59 [#/sec] (mean)
...

podを10こにスケールアウトする。

$ kubectl scale deploy go-app-foo --replicas=10
$ kubectl get po
NAME                          READY     STATUS    RESTARTS   AGE
go-app-foo-79f989c65c-4664z   1/1       Running   0          21s
go-app-foo-79f989c65c-6mrnd   1/1       Running   0          21s
go-app-foo-79f989c65c-cq96b   1/1       Running   0          7m
go-app-foo-79f989c65c-d2k9f   1/1       Running   0          7m
go-app-foo-79f989c65c-drp6b   1/1       Running   0          21s
go-app-foo-79f989c65c-dt9ls   1/1       Running   0          21s
go-app-foo-79f989c65c-qndvz   1/1       Running   0          21s
go-app-foo-79f989c65c-shxcp   1/1       Running   0          21s
go-app-foo-79f989c65c-tmc8l   1/1       Running   0          21s
go-app-foo-79f989c65c-wlb2q   1/1       Running   0          21s
$

abにて、スループット確認、秒間63.02リクエストを処理できる。

$ ab -n 500 -c 50 http://localhost:30000/hello
...
Requests per second:    63.02 [#/sec] (mean)
...

ローリングアップデートしてみる。

一旦pod数を2に戻す

$ kubectl scale deploy go-app-foo --replicas=2
deployment.extensions "go-app-foo" scaled
$

podの状態監視用のterminalを起動して下記にて監視。

$ watch -n 1 "kubectl get pod"

このREADMEでは、下記で監視した結果を書いておきます。(watchだと画像が無いとわからないので)

$ kubect get pod -w

podの定義を変更します。

$ vi go-app-foo/kubernetes/030-deployments.yaml
          limits:
            cpu: 300m
            memory: 200Mi
上記を下記のように変更 
          limits:
            cpu: 100m
            memory: 100Mi

そして反映。

$ kubectl apply -f go-app-foo/kubernetes
configmap "go-app-config" unchanged
service "go-app-foo" unchanged
deployment.apps "go-app-foo" configured
$

下記のように、1つ起動→1つ停止とローリングしながら更新されていきます。

~ $ kubectl get pod -w
NAME                          READY     STATUS    RESTARTS   AGE
go-app-foo-79f989c65c-cq96b   1/1       Running   0          17m
go-app-foo-79f989c65c-d2k9f   1/1       Running   0          17m
go-app-foo-6d56f798f5-jcgpc   0/1       Pending   0         0s
go-app-foo-6d56f798f5-jcgpc   0/1       Pending   0         0s
go-app-foo-6d56f798f5-jcgpc   0/1       ContainerCreating   0         0s
go-app-foo-6d56f798f5-jcgpc   0/1       Running   0         3s
go-app-foo-6d56f798f5-jcgpc   1/1       Running   0         7s
go-app-foo-79f989c65c-cq96b   1/1       Terminating   0         20m
go-app-foo-6d56f798f5-nb8xp   0/1       Pending   0         0s
go-app-foo-6d56f798f5-nb8xp   0/1       Pending   0         0s
go-app-foo-6d56f798f5-nb8xp   0/1       ContainerCreating   0         0s
go-app-foo-79f989c65c-cq96b   0/1       Terminating   0         20m
go-app-foo-79f989c65c-cq96b   0/1       Terminating   0         20m
go-app-foo-79f989c65c-cq96b   0/1       Terminating   0         20m
go-app-foo-6d56f798f5-nb8xp   0/1       Running   0         3s
go-app-foo-6d56f798f5-nb8xp   1/1       Running   0         10s
go-app-foo-79f989c65c-d2k9f   1/1       Terminating   0         20m
go-app-foo-79f989c65c-d2k9f   0/1       Terminating   0         20m
go-app-foo-79f989c65c-d2k9f   0/1       Terminating   0         20m
go-app-foo-79f989c65c-d2k9f   0/1       Terminating   0         20m

最後に

下記コマンドで全て削除できます。

$ kubectl delete -f go-app-foo/kubernetes
configmap "go-app-config" deleted
service "go-app-foo" deleted
deployment.apps "go-app-foo" deleted
$

$ kubectl apply -f go-app-foo/kubernete $ kubectl apply -f go-app-foo/kubernetes

Directories

Path Synopsis
src

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL