Rancher 2.1を使ってWindows NodeをKubernetesクラスタに参加させる

Rancher2.1から1系にもあったWindows Support機能が復活しました。現時点では、KubernetesのMasterになることはできませんが、Workerとしてノード追加できます。また、NetworkはFlannelのみ対応となっています。

以下の構成で検証してみました。

![図1.png](https://qiita-image-store.s3.amazonaws.com/0/61606/2d2710dd-9fbc-2bb9-916c-eff774ab34d1.png)

Rancher Server Version:2.1.3

# 1.Rancher Serverの構築

## 1.Instance準備

|項目               |入力概要        |
|:----------------------------------|:---------------------------------------------|
|名前|rancher-server|
|リージョン|asia-northeast1(東京)|
|ゾーン|asia-northeast1-b|
|マシンタイプ|vCPUx1|
|ブートディスク|Ubuntu 16.04 LTS<br>ディスクサイズ80GB|
|ファイアウォール|HTTP トラフィックを許可する、HTTPS トラフィックを許可するの両方をチェックします。|

## 2.Dockerのインストール

```lang:コマンド
$ curl https://releases.rancher.com/install-docker/17.03.2.sh | sh
・
・（省略）
・
+ sudo -E sh -c docker version
Client:
 Version:      17.03.2-ce
 API version:  1.27
 Go version:   go1.7.5
 Git commit:   f5ec1e2
 Built:        Tue Jun 27 03:35:14 2017
 OS/Arch:      linux/amd64

Server:
 Version:      17.03.2-ce
 API version:  1.27 (minimum version 1.12)
 Go version:   go1.7.5
 Git commit:   f5ec1e2
 Built:        Tue Jun 27 03:35:14 2017
 OS/Arch:      linux/amd64
 Experimental: false

If you would like to use Docker as a non-root user, you should now consider
adding your user to the "docker" group with something like:

  sudo usermod -aG docker iyutaka2018

Remember that you will have to log out and back in for this to take effect!

WARNING: Adding a user to the "docker" group will grant the ability to run
         containers which can be used to obtain root privileges on the
         docker host.
         Refer to https://docs.docker.com/engine/security/security/#docker-daemon-attack-surface
         for more information.
```

## 3.Rancher2.1 Serverのインストール

```lang:コマンド
$ sudo docker run -d --restart=unless-stopped -p 80:80 -p 443:443 rancher/rancher
Unable to find image 'rancher/rancher:latest' locally
latest: Pulling from rancher/rancher
32802c0cfa4d: Pull complete 
da1315cffa03: Pull complete 
fa83472a3562: Pull complete 
f85999a86bef: Pull complete 
802918c3c5d1: Pull complete 
941c9d7db7cb: Pull complete 
a00bebfc6f0e: Pull complete 
0a145b822324: Pull complete 
1cd1020104e1: Pull complete 
03f3b0fc5689: Pull complete 
07054e1590fd: Pull complete 
db38f96efb72: Pull complete 
Digest: sha256:b5762180fdc05b5be8337453cc9bbadc33645d50cd8d2dac89c6676bf07460b7
Status: Downloaded newer image for rancher/rancher:latest
98fc7fb2332a8319af6608db4757014898c1ef50779b086c49b0f6e79f50da2f
```

## 4.ブラウザを起動して、RancherUIにアクセス

https://EXTERNAL-IP/

## 5.初回ログイン

### a.adminユーザのパスワード作成

任意のパスワードを入力
![screencapture-104-198-89-202-update-password-2018-12-08-16_03_50.png](https://qiita-image-store.s3.amazonaws.com/0/61606/db338f8c-ec92-03af-0455-152f531c2629.png)

### b.Rancher Server URLの登録

「Save URL」ボタンを押下
![screencapture-104-198-89-202-update-setting-2018-12-08-16_06_00.png](https://qiita-image-store.s3.amazonaws.com/0/61606/b4f50a64-b2b4-7aa1-c90b-3a8f92937ff4.png)

### c.ログイン完了

![screencapture-104-198-89-202-g-clusters-2018-12-08-16_10_38.png](https://qiita-image-store.s3.amazonaws.com/0/61606/9d33579e-ef14-65a5-53c6-49b0b20b5fd3.png)


# 2.MasterとNodeの構築

## 1.Instance準備

|項目               |入力概要        |
|:----------------------------------|:---------------------------------------------|
|名前|master|
|リージョン|asia-northeast1(東京)|
|ゾーン|asia-northeast1-b|
|マシンタイプ|vCPUx1|
|ブートディスク|Ubuntu 16.04 LTS<br>ディスクサイズ80GB|
|ファイアウォール|HTTP トラフィックを許可する、HTTPS トラフィックを許可するの両方をチェックします。|

|項目               |入力概要        |
|:----------------------------------|:---------------------------------------------|
|名前|node01|
|リージョン|asia-northeast1(東京)|
|ゾーン|asia-northeast1-b|
|マシンタイプ|vCPUx1|
|ブートディスク|Ubuntu 16.04 LTS<br>ディスクサイズ80GB|
|ファイアウォール|HTTP トラフィックを許可する、HTTPS トラフィックを許可するの両方をチェックします。|

|項目               |入力概要        |
|:----------------------------------|:---------------------------------------------|
|名前|node02|
|リージョン|asia-northeast1(東京)|
|ゾーン|asia-northeast1-b|
|マシンタイプ|vCPUx1|
|ブートディスク|Windows Server version 1803 Datacenter Core for Containers<br>ディスクサイズ80GB|
|ファイアウォール|HTTP トラフィックを許可する、HTTPS トラフィックを許可するの両方をチェックします。|

## 2.Instance作成完了の確認

![image.png](https://qiita-image-store.s3.amazonaws.com/0/61606/62be8fd4-5fa8-e3be-9c00-0bbfea4e2170.png)

## 3.master,node01にDockerをインストール

```lang:コマンド
$ curl https://releases.rancher.com/install-docker/17.03.2.sh | sh
・
・（省略）
・
+ sudo -E sh -c docker version
Client:
 Version:      17.03.2-ce
 API version:  1.27
 Go version:   go1.7.5
 Git commit:   f5ec1e2
 Built:        Tue Jun 27 03:35:14 2017
 OS/Arch:      linux/amd64

Server:
 Version:      17.03.2-ce
 API version:  1.27 (minimum version 1.12)
 Go version:   go1.7.5
 Git commit:   f5ec1e2
 Built:        Tue Jun 27 03:35:14 2017
 OS/Arch:      linux/amd64
 Experimental: false

If you would like to use Docker as a non-root user, you should now consider
adding your user to the "docker" group with something like:

  sudo usermod -aG docker iyutaka2018

Remember that you will have to log out and back in for this to take effect!

WARNING: Adding a user to the "docker" group will grant the ability to run
         containers which can be used to obtain root privileges on the
         docker host.
         Refer to https://docs.docker.com/engine/security/security/#docker-daemon-attack-surface
         for more information.
```

# 3.Kubernetesクラスタの構築

## 1.「Add Cluster」ボタンを押下

![image.png](https://qiita-image-store.s3.amazonaws.com/0/61606/83f78263-cbb2-54a1-dab1-d3bb80a151ca.png)

## 2.「Custom」を選択、「Cluster Name」に任意の名前を入力、「Cluster Options」をクリック、「Windows Support (Experimental)」を「Enabled」、「Next」ボタンを押下

![image.png](https://qiita-image-store.s3.amazonaws.com/0/61606/80cf8790-2d7a-5683-2b03-6b9d378dc371.png)

![image.png](https://qiita-image-store.s3.amazonaws.com/0/61606/5607726d-7fc1-c655-ab93-06bd20daaea1.png)

## 3.「Node Role」の「etcd」と「Control Plane」にチェック、「Copy to Clipboard」ボタンを押下

![image.png](https://qiita-image-store.s3.amazonaws.com/0/61606/0ee6ef94-297f-492d-4542-142601d5b634.png)

## 4.コピーしたコマンドをmasterのコンソールで実行

```lang:コマンド
$ sudo docker run -d --privileged --restart=unless-stopped --net=host -v /etc/kubernetes:/etc/kubernetes -v /var/run:/var/run rancher/rancher-agent:v2.1.3 --server https://104.198.89.202 --token 7kvnplm4nzwkcbc5cm9w7wf2kzpcd4wznzkp84c726k9vt42pqw85v --ca-checksum 4e22d84e1063879a7dd062661689c3b3c51a8241a086832d47f03f586e0ce6b5 --etcd --controlplane --worker
```

## 5.「Done」ボタンを押下

![image.png](https://qiita-image-store.s3.amazonaws.com/0/61606/4f5155f9-565f-cf41-9f68-43176971f8d5.png)

## 6.クラスタ作成後、赤枠部分をクリックして、「Edit」を選択

![image.png](https://qiita-image-store.s3.amazonaws.com/0/61606/ceb87cb3-2611-09b0-f2ff-a1be77e9c3e4.png)

## 7.「Copy to Clipboard」ボタンを押下

![image.png](https://qiita-image-store.s3.amazonaws.com/0/61606/beaedff1-d700-f79a-04d3-2e12530279f4.png)

## 8.コピーしたコマンドをnode01のコンソールで実行

```lang:コマンド
sudo docker run -d --privileged --restart=unless-stopped --net=host -v /etc/kubernetes:/etc/kubernetes -v /var/run:/var/run rancher/rancher-agent:v2.1.3 --server https://104.198.89.202 --token 7kvnplm4nzwkcbc5cm9w7wf2kzpcd4wznzkp84c726k9vt42pqw85v --ca-checksum 4e22d84e1063879a7dd062661689c3b3c51a8241a086832d47f03f586e0ce6b5 --worker
```

## 9.「Save」ボタンを押下

![image.png](https://qiita-image-store.s3.amazonaws.com/0/61606/59d70ba4-2203-33fd-e510-3afdf97a4453.png)

## 10.Nodeが追加されたことを確認

![image.png](https://qiita-image-store.s3.amazonaws.com/0/61606/6b9fbfb6-ea97-b945-5a68-7fd2a03af4c9.png)

## 11.上部メニューから「Global」を選択

![image.png](https://qiita-image-store.s3.amazonaws.com/0/61606/5e93dedc-d7dd-5228-1ad7-e29299ac3ef2.png)

## 12.クラスタ作成後、赤枠部分をクリックして、「Edit」を選択

![image.png](https://qiita-image-store.s3.amazonaws.com/0/61606/ceb87cb3-2611-09b0-f2ff-a1be77e9c3e4.png)

## 13.「Node Operating System」で「Windows」を選択、「Copy to Clipboard」ボタンを押下

![image.png](https://qiita-image-store.s3.amazonaws.com/0/61606/d642dbc4-1bfd-896c-ebc8-e0133edb40e4.png)

## 14.Windowsの場合は、リモートデスクトップ、Macの場合はChromeの「Chrome RDP for Google Cloud Platform」をインストールします。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/61606/fc7d6627-788c-b8a0-15d2-64d0dc02005f.png)

![image.png](https://qiita-image-store.s3.amazonaws.com/0/61606/f0937d52-93a2-0db6-11c1-51657a6fdf8b.png)

## 15.「RDP」ボタンを押下

![image.png](https://qiita-image-store.s3.amazonaws.com/0/61606/c78201d2-03d3-ea39-0b66-05f25bbcda3b.png)

## 16.Chrome RDP for GCP起動後、パスワード入力して「OK」ボタンを押下

![image.png](https://qiita-image-store.s3.amazonaws.com/0/61606/0f225ff2-7156-01ed-92b3-94b091cccd54.png)

## 17.13の手順でコピーしたコマンドを実行 

![image.png](https://qiita-image-store.s3.amazonaws.com/0/61606/be88b896-11a3-4d22-50ab-bebc8c989865.png)

## 18.「Save」ボタンを押下

![image.png](https://qiita-image-store.s3.amazonaws.com/0/61606/31da8a92-fafe-713b-7272-a55d8deb9248.png)

## 19.「Nodes」の数が、3になっていることを確認

![image.png](https://qiita-image-store.s3.amazonaws.com/0/61606/cde048cf-e50e-00a9-a713-c347ccc3e63e.png)

## 20.上部メニュー「Nodes」を選択、「node02」をクリック 

![image.png](https://qiita-image-store.s3.amazonaws.com/0/61606/72672a87-d6db-2038-50b6-273eb7b472e9.png)

## 21.上部メニュー「Nodes」を選択、「node02」をクリック 

![image.png](https://qiita-image-store.s3.amazonaws.com/0/61606/198400f8-742c-1c32-ff3a-0240e93547b7.png)

## 22.上部メニューから「Cluster」を選択し、「Launch kubectl」ボタンを押下

![image.png](https://qiita-image-store.s3.amazonaws.com/0/61606/eb97967c-ead1-82de-8b4f-0829d86f68ac.png)

## 23.Node状況を確認

```lang:コマンド
# Run kubectl commands inside here
# e.g. kubectl get all
> kubectl get nodes
NAME      STATUS    ROLES                      AGE       VERSION
master    Ready     controlplane,etcd,worker   1h        v1.11.5
node01    Ready     worker                     54m       v1.11.5
node02    Ready     worker                     16m       v1.11.5
>
```
![screencapture-104-198-89-202-c-c-2kf8p-2018-12-08-18_22_35.png](https://qiita-image-store.s3.amazonaws.com/0/61606/0bd11326-da7b-84c1-9914-b24f37db1270.png)

# 3.Documents

- [Configuring Custom Clusters for Windows (Experimental)](https://rancher.com/docs//rancher/v2.x/en/cluster-provisioning/rke-clusters/windows-clusters/)
- [What's Rancher 2.1.0](https://www.slideshare.net/cyberblackvoom/whats-rancher-v210-ja)