Rancher インストール

# 概要
 - k8sテスト環境構築<br>
<b>Rancher インストール</b>

# 構築目次
 - [全体目次] (https://qiita.com/prodigy413/items/89fcb8cfb71e80f541d8)

# 環境
 - Rancher: v2.6.3
 - kubernetes(Client): v1.22.4
 - kubernetes(Server): v1.22.4

# 構成図
![test-env.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/561025/d3795cff-7a69-7a52-3138-530f8b85928d.png)

# 詳細
| Name               |  Role                    |  IP(192.168.245.0/24)   |  OS                   |
| :----------------- | :----------------------- | :---------------------- | :-------------------- |
| Rancher01          | Rancher Server \ <br>NTP | 192.168.245.101         | CentOS 7.9            |
| Master01           | Master Node              | 192.168.245.102         | CentOS 7.9            |
| Worker01,2,3 (3台) | Worker Node              | 192.168.245.103,<br>192.168.245.104,<br>192.168.245.105 | CentOS 7.9            |
| ClientPC           | Client                   | DHCP                    | Ubuntu Desktop v20.04 |
※<b>OSバージョンについて：</b>
CentOS stream 8に変更したが、Rnacher起動に失敗したため、7.9を選択
→ 最新kernelで失敗するとの記事を見たが、リンクを忘れた。
# サーバ環境構築

 - Rancher Install Page<br>
https://rancher.com/docs/rancher/v2.6/en/quick-start-guide/deployment/quickstart-manual-setup/

### 対象サーバ:
 - Rancher01  
 - Master01  
 - Worker01,2,3

### OS設定
 - 共通設定：SELinux無効、Firewall無効
 - Rancher01のみDockerインストール<br>
https://docs.docker.com/engine/install/centos/

# Rancher 環境構築
### Rancher Server インストール
 - 作業場所: Rancher01

~~~
$ sudo docker run -d --restart=unless-stopped -p 80:80 -p 443:443 --privileged rancher/rancher

## 確認 ##
$ sudo docker ps
CONTAINER ID   IMAGE             COMMAND           CREATED        STATUS          PORTS                                                                      NAMES
f23b05b51ac6   rancher/rancher   "entrypoint.sh"   25 hours ago   Up 51 minutes   0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp   relaxed_faraday

## 初期パスワード確認 ##
$ docker logs f23b05b51ac6 2>&1 | grep "Bootstrap Password:"
2021/12/29 04:10:18 [INFO] Bootstrap Password: xxxxxxxxxxxxxxxxxxxx
~~~

### Cluster作成
 - 作業場所: ClientPC  

1. ブラウザを起動 → Rancher Serverにアクセス
https://192.168.245.101  

2. Rancher Server インストールで確認した初期パスワードを入力し、[<b>Log in with Local User</b>]クリック
![1-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/561025/83e5ef69-c895-5c27-adb7-36013166d64d.png)

3. 以下のように設定し、[<b>Continue</b>]クリック<br>
・[<b>Set a specific password to use</b>]選択 → パスワード設定
・[<b>I agree to the Terms...</b>]チェック
![3-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/561025/ef1591cf-9d72-eaca-4075-83d4ef27da05.png)

4. [<b>Create</b>]クリック
![4-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/561025/142588a3-ff01-6598-aa11-6e9423fcaf5b.png)

5. [<b>RKE2/K3s</b>]を有効 > [<b>Custom</b>]クリック
![9-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/561025/197d1b76-9c38-f2a4-caf6-f9c67f6cdbee.png)

6. 以下ように設定し、[<b>Create</b>]クリック<br>
・[<b>Cluster Name</b>]設定
・[<b>NGINX Ingress</b>]チェックを外す
→ Ingressは手動設定するため、外したが、デフォルトIngressを使う場合はインストールしても良い。
![10-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/561025/6998ce2a-a651-9be1-ab4b-7d2612868ab1.png)

7. Master Node用コマンド作成: [<b>etcd</b>]と[<b>Control Plane</b>]のみチェック → コマンドをメモ帳へコピペ
※同じ手順でWorker Node用コマンド作成: [<b>Worker</b>]のみチェック → コマンドをメモ帳へコピペ
![12-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/561025/eabc02bc-e3f7-87d4-bd54-99eefe40dd54.png)

### Master Node 構築
 - 作業場所: Master01  
メモ帳へコピペしておいたMaster Node用コマンドを実行

~~~:Master01
$ curl -fL https://192.168.245.101/system-agent-install.sh | sudo  sh -s - --server https://192.168.245.101 --label 'cattle.io/os=linux' --token xxxxxxxxxxxx --ca-checksum xxxxxxxxxxxxxxxxxx --etcd --controlplane
~~~

### Worker Node 構築
 - 作業場所: Worker01,2,3  
メモ帳へコピペしておいたWorker Node用コマンドを実行

~~~:Worker01,2,3
$ curl -fL https://192.168.245.101/system-agent-install.sh | sudo  sh -s - --server https://192.168.245.101 --label 'cattle.io/os=linux' --token xxxxxxxxxxxxxxxxxx --ca-checksum xxxxxxxxxxxxxxxxxxxxxx --worker
~~~

### Node 構築完了確認
 - 作業場所: ClientPC

1. メニューから自分が作成したクラスタを選択
![20-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/561025/f8081945-5429-c170-21a9-eb6a09562194.png)

2. [<b>Nodes</b>]クリック → 全ノードが<b>Active</b>であることを確認
![21-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/561025/0c5171cf-8960-debd-fb4a-7c90011c3752.png)

### ClientPC（作業端末）設定
 - 作業場所: ClientPC  
kubectlコマンド ダウンロード&PATH設定<br>
https://kubernetes.io/docs/tasks/tools/install-kubectl-linux/

~~~
$ curl -LO https://dl.k8s.io/release/v1.22.4/bin/linux/amd64/kubectl
$ chmod +x ./kubectl
$ sudo mv ./kubectl /usr/local/bin/
$ kubectl version --short
Client Version: v1.22.4
..........
~~~

<b>Kubeconfigファイルを保存</b>

1. メニューから自分が作成したクラスタを選択
![20-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/561025/f8081945-5429-c170-21a9-eb6a09562194.png)

2. [<b>Copy KubeConfig to Clipboard</b>]クリック
![22-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/561025/0557325b-67d6-3c3b-dda3-b372399e3247.png)

3. config作成
コピーした設定をconfigファイルに貼り付け

~~~
$ mkdir ~/.kube
$ vi .kube/config
$ cat .kube/config
apiVersion: v1
kind: Config
clusters:
- name: "obi-cluster"
  cluster:
    server: "https://192.168.245.101/k8s/clusters/c-m-ltmgdtdx"

..........省略..........

contexts:
- name: "obi-cluster"
  context:
    user: "obi-cluster"
    cluster: "obi-cluster"

current-context: "obi-cluster"
~~~

 - 確認

~~~
$ kubectl version --short
Client Version: v1.22.4
Server Version: v1.22.4+rke2r2

$ kubectl get nodes -owide
NAME       STATUS   ROLES                       AGE   VERSION          INTERNAL-IP       EXTERNAL-IP   OS-IMAGE                KERNEL-VERSION                CONTAINER-RUNTIME
master01   Ready    control-plane,etcd,master   24h   v1.22.4+rke2r2   192.168.245.102   <none>        CentOS Linux 7 (Core)   3.10.0-1160.49.1.el7.x86_64   containerd://1.5.8-k3s1
worker01   Ready    worker                      23h   v1.22.4+rke2r2   192.168.245.103   <none>        CentOS Linux 7 (Core)   3.10.0-1160.49.1.el7.x86_64   containerd://1.5.8-k3s1
worker02   Ready    worker                      23h   v1.22.4+rke2r2   192.168.245.104   <none>        CentOS Linux 7 (Core)   3.10.0-1160.49.1.el7.x86_64   containerd://1.5.8-k3s1
worker03   Ready    worker                      23h   v1.22.4+rke2r2   192.168.245.105   <none>        CentOS Linux 7 (Core)   3.10.0-1160.49.1.el7.x86_64   containerd://1.5.8-k3s1
~~~