RHEL7.1にKurbenetesをインストールしたときの問題点



##環境情報
* RHEL7.1 × 3台（全てライセンス登録をしておく）
* Kurbenetes Server v0.17.1-748-g01fcb58673001e
* Kurbenetes Client v0.17.1-748-g01fcb58673001e

※KurbenetesはRHEL7の標準を使用
　

|役割 |名前 |
|:-----------|:------------|
|マスター|kubemaster01|
|Minion#1|minion01|
|Minion#2|minion02|


基本的には[RHEL7.1でKubernetesを実体験（構築編）](http://jp-redhat.com/openeye_online/column/nakai/991/#top)を参照しながら手順を実施しますので、ここではトラブったところだけ示します。


##トラブル1 etcdがインストールされない

>Kubernetesのパッケージを導入すると、etcdを含めて、必要なパッケージがまとめて導入されます。

とありましたが、されなかったため独自に入れます。

```
yum -y install etcd
```

##トラブル2　設定ファイルの設定が微妙に違う（Master）

###***/etc/kubernetes/config***

```:/etc/kubernetes/config
KUBE_MASTER="--master=http://kubemaster01:8080"
```

###***/etc/kubernetes/apiserver***

```:/etc/kubernetes/apiserver
KUBE_API_ADDRESS="--address=0.0.0.0"
KUBE_ETCD_SERVERS="--etcd_servers=http://kubemaster01:4001"
KUBE_SERVICE_ADDRESSES="--portal_net=172.16.0.0/16"
```

###***/etc/kubernetes/controller-manager***

```:/etc/kubernetes/controller-manager
KUBELET_ADDRESSES="--machines=minion01,minion02"
```

###***/etc/etcd/etcd.conf***

```:/etc/etcd/etcd.conf
ETCD_LISTEN_CLIENT_URLS="http://kubemaster01:4001"
ETCD_ADVERTISE_CLIENT_URLS="http://kubemaster01:2379,http://kubemaster01:4001"
```

##トラブル3　設定ファイルの設定が微妙に違う（Minion）

###***/etc/kubernetes/config***

```:/etc/kubernetes/config
KUBE_MASTER="--master=http://kubemaster01:8080"
```

###***/etc/kubernetes/kubelet***

```:/etc/kubernetes/kubelet
KUBELET_ADDRESS="--address=0.0.0.0"
#KUBELET_HOSTNAME="--hostname_override=127.0.0.1" コメントアウトする
KUBELET_API_SERVER="--api_servers=http://kubemaster01:8080"
```


##トラブル4　kubectl get minionコマンドが失敗

`kubectl get minion`をコマンドを実行しても何も帰ってきません。

予測変換でみてもありません。

```
[root@kubemaster01~]# kubectl get
componentstatus        pod
endpoints              podtemplate
event                  replicationcontroller
limitrange             resourcequota
namespace              secret
node                   service
persistentvolume       serviceaccount
persistentvolumeclaim
```

ということで、別のコマンド`kubectl get node`を使用します

```
[root@kubemaster01~]# kubectl get node
NAME       LABELS                            STATUS
minion01   kubernetes.io/hostname=minion01   Ready
minion02   kubernetes.io/hostname=minion02   Ready
```


###トラブル5 podが同一ノードで実行される


```
POD                      IP          CONTAINER(S)   IMAGE(S)          HOST                  LABELS            STATUS    CREATED      MESSAGE
httpd-controller-3ni8c   10.1.25.5                                    awcikc0b/10.2.25.10   name=test-httpd   Running   39 seconds
                                     test-httpd     docker.io/httpd                                           Running   28 seconds
httpd-controller-xkfjf   10.1.25.4                                    awcikc0b/10.2.25.10   name=test-httpd   Running   39 seconds
                                     test-httpd     docker.io/httpd
```

原因は`minion02`の`docker0`がDownしていたこと。

```
8: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1450 qdisc noqueue state DOWN
    link/ether 56:84:7a:fe:97:99 brd ff:ff:ff:ff:ff:ff
    inet 10.1.94.1/24 scope global docker0
       valid_lft forever preferred_lft forever
    inet6 fe80::5484:7aff:fefe:9799/64 scope link
       valid_lft forever preferred_lft forever
```

`nmcli connection up docker0`を実行後に、`kubectl create -f httpd.json`を再度実行するとうまくいった。

```
[root@kubemaster01~]# kubectl get pod
POD                      IP          CONTAINER(S)   IMAGE(S)          HOST                  LABELS            STATUS    CREATED      MESSAGE
httpd-controller-307jp   10.1.25.4                                    minion01/10.2.25.10   name=test-httpd   Running   29 seconds
                                     test-httpd     docker.io/httpd                                           Running   18 seconds
httpd-controller-xrb3f   10.1.94.4                                    minion02/10.2.25.13   name=test-httpd   Running   29 seconds
                                     test-httpd     docker.io/httpd                                           Running   12 seconds
```