kubernetesでサーバーを立てられるか試してみる

まずは、こちらを有効にします。


https://console.cloud.google.com/apis/api/container.googleapis.com/overview?project=<user名>

<img width="1138" alt="スクリーンショット 2019-05-08 11.17.27.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/87607/57028fc8-110b-ce8c-1886-6550dca5ea8b.png">
↓結果
<img width="1024" alt="スクリーンショット 2019-05-08 11.19.21.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/87607/1f516464-a7ef-c849-15c7-e908b320f906.png">

3ノードのインスタンスをまず作る
※今回は```aura``` という名前でクラスタを作ってます。ところどころログ等に出るので、そちらは置き換えてください

```
$gcloud container clusters create <クラスタ名> --zone us-west1-a --machine-type=f1-micro --num-nodes=3 --disk-size=10
```

ん、怒られたので、

```
ERROR: (gcloud.container.clusters.create) ResponseError: code=403
...
Updates are available for some Cloud SDK components.  To install them,
please run:
  $ gcloud components update

```

アップデートしてみる (結構時間かかる

```
$ gcloud components update
```

もう一回、createしてみるとエラーがでた

```
ERROR: (gcloud.container.clusters.create) ResponseError: code=409, message=Already exists: projects/linesnova/zones/us-west1-a/clusters/aura.
```

が、クラスタがーできているか確認すると、できているようだ

```
$ gcloud container clusters list
NAME  LOCATION    MASTER_VERSION  MASTER_IP       MACHINE_TYPE  NODE_VERSION  NUM_NODES  STATUS
aura  us-west1-a  1.11.8-gke.6    35.233.190.180  f1-micro      1.11.8-gke.6  3          RUNNING
```

コスト対策で、node-pool(インスタンスグループ)を作り、ノードを1とします

```
$ gcloud container node-pools create <node-pool名> --cluster aura --zone us-west1-a --machine-type=f1-micro --num-nodes=1 --disk-size=10
```

当初に作ったノードは`default-pool`という名称らしいので、それを消します

```
gcloud container node-pools delete default-pool --zone us-west1-a --cluster <クラスタ名>
```

gcloud container clusters listをするとこんな感じ

```
$ gcloud container clusters list
NAME  LOCATION    MASTER_VERSION  MASTER_IP       MACHINE_TYPE  NODE_VERSION  NUM_NODES  STATUS
aura  us-west1-a  1.11.8-gke.6    35.233.190.180  f1-micro      1.11.8-gke.6  1          RUNNING
```

よし、nodeが一つになった

kubectlコマンドが使えるようにするため、以下のコマンドを実行します。

```
$ gcloud container clusters get-credentials <クラスタ名> --zone us-west1-a
Fetching cluster endpoint and auth data.
kubeconfig entry generated for aura.
```

こちらのコマンドで存在確認できます。

```
$~/.kube/config
xxxxx

```

起動したPodを試してみる
Podとは、起動したインスタンス内のdockerみたいなコンテナらしい
どのノードでどのpodを動かすかは自動でやってくれるらしい

どのぐらいPod数があるか調べてみる

```
$ kubectl get pod --all-namespaces
NAMESPACE     NAME                                      READY     STATUS              RESTARTS   AGE
kube-system   event-exporter-v0.2.3-85644fcdf-7p88w     2/2       Running             0          16m
kube-system   fluentd-gcp-scaler-8b674f786-whcc6        1/1       Running             0          16m
kube-system   fluentd-gcp-v3.2.0-gd5px                  2/2       Running             0          22m
kube-system   heapster-v1.6.0-beta.1-64986d8cdf-hklpm   0/3       Pending             0          16m
kube-system   kube-dns-76dbb796c5-5ckjr                 1/4       ContainerCreating   0          16m
kube-system   kube-dns-autoscaler-67c97c87fb-tfjlx      1/1       Running             0          16m
kube-system   kube-proxy-gke-aura-blue-58df44f8-ssbm    1/1       Running             0          21m
kube-system   l7-default-backend-7ff48cffd7-9pd8t       1/1       Running             1          16m
kube-system   metrics-server-v0.2.1-fd596d746-gd2v7     2/2       Running             0          16m
kube-system   prometheus-to-sd-kpxwm                    1/1       Running             0          22m
```

結構あるなぁ　１０Pod
そしてpendingがある場合は立ち上げられてない状態
原因を含め、確認コメント


```
$ kubectl describe pod --namespace kube-system heapster-v1.6.0-beta.1-64986d8cdf-hklpm

・
・
・
e(s) were out of disk space, 3 node(s) were unschedulable.
  Warning  FailedScheduling  20m (x3 over 20m)  default-scheduler  0/3 nodes are available: 1 Insufficient memory, 2 node(s) were not ready, 2 node(s) were out of disk space, 2 node(s) were unschedulable.
  Warning  FailedScheduling  20m                default-scheduler  0/3 nodes are available: 2 node(s) were unschedulable, 3 node(s) were not ready, 3 node(s) were out of disk space.
  Warning  FailedScheduling  20m (x4 over 20m)  default-scheduler  0/2 nodes are available: 1 node(s) were unschedulable, 2 node(s) were not ready, 2 node(s) were out of disk space.
  Warning  FailedScheduling  6m (x13 over 17m)  default-scheduler  0/1 nodes are available: 1 node(s) were not ready.
  Warning  FailedScheduling  1m (x27 over 17m)  default-scheduler  0/1 nodes are available: 1 node(s) were not ready, 1 node(s) were out of disk space.
```
容量が足りないだと...


```
$ gcloud container node-pools create <node-pool名> --cluster aura --zone us-west1-a --machine-type=f1-micro --num-nodes=1 --disk-size=20
```

もう一度試してみるが足りない、いや、discではなくメモリが足りないぽい

```
default-scheduler  0/2 nodes are available: 1 Insufficient memory, 1 node(s) were not ready, 1 node(s) were out of disk space.

```

結果、preemptibleのオプションを指定、
preemptibleは、
普通のインスタンスと変わりがないが、 必ず24時間以内にシャットダウンされる。
そのため、通常のインスタンスの価格の数分の一の価格で提供されています。(最大70%オフ）
googleの余剰サーバを使った仕組み

```
$ gcloud container node-pools create <node-pool名> --cluster <クラスタ名> --zone us-west1-a --machine-type=f1-micro --num-nodes=1 --disk-size=10 --preemptible
```

もう一度見てみる

```
$ kubectl get pod --all-namespaces
NAMESPACE     NAME                                       READY     STATUS              RESTARTS   AGE
kube-system   event-exporter-v0.2.3-85644fcdf-xckq5      2/2       Running             0          22m
kube-system   fluentd-gcp-scaler-8b674f786-ppzt6         1/1       Running             0          22m
kube-system   fluentd-gcp-v3.2.0-2qqvw                   2/2       Running             0          4m
kube-system   fluentd-gcp-v3.2.0-t2rrn                   2/2       Running             0          19m
kube-system   heapster-v1.6.0-beta.1-64986d8cdf-hw562    3/3       Running             0          22m
kube-system   kube-dns-76dbb796c5-dnqx7                  0/4       Pending             0          4m
kube-system   kube-dns-76dbb796c5-v5zcq                  4/4       Running             0          22m
kube-system   kube-dns-autoscaler-67c97c87fb-mr2z8       1/1       Running             0          22m
kube-system   kube-proxy-gke-aura-blue-5bef3904-gf47     1/1       Running             0          3m
kube-system   kube-proxy-gke-aura-yellow-e8e6060d-45kz   1/1       Running             0          19m
kube-system   l7-default-backend-7ff48cffd7-nfst9        1/1       Running             1          22m
kube-system   metrics-server-v0.2.1-fd596d746-jwq5m      0/2       ContainerCreating   0          22m
kube-system   prometheus-to-sd-98pff                     1/1       Running             0          4m
kube-system   prometheus-to-sd-qr95w                     1/1       Running             0          19m
```

よしちゃんと上がったぽい `kube-dns-76dbb796c5-dnqx7 `はゾンビかな？今はあまり気にしないでおこう

この続きはまた別の記事で掲載します


参考)
https://tech.libinc.co.jp/entry/2019/03/22/105911