紹介
Rancherはrancher-server とrancher-agent、そして一つ以上のkubernetes clusterによって構成されている。この中、rancher-agentは管理されたkubernetesに実行され、rancher-serverと通信し、クラスタの情報を送信する。
rancher-serverはkubernetesを管理するためのWebUIとAPIを提供している。rancher-serverはHTTPSのみアクセスできる。
インストール
シングルノード
シングルノードの構築は以下二つの方法があります。
dockerで直接rancher-serverを実行rkeで一つのノードに全てのroleを有効
rkeの方法は後でも出てくるので割愛、ここではdockerの方法を示す。
rancher-serverを実行したいノードで、下記のコマンドを入力する。
| |
これでシングルノードのrancher-serverを起動した。http://<IP Address>でアクセスできる。
マルチノード
rkeを使ってHA環境のrancher-serverを構築する。
rke(rancher k8s engine)はkubernetesを構築するためのコマンドで、環境を用意すればコマンド一つでクラスターを構築できる。
マシンの用意
今回はmultipass でマシンを準備する。以下のコマンドで6台の仮想マシンを作成する。
| |
コマンドにあったcloud-init.yamlファイルは、マシン立ち上がった後の後処理を実行する。今回の場合は以下の後処理を実行した。
dockerのインストールホストマシン
sshキーの登録Ubuntuユーザをdockerグループに登録必要カーネルモジュールのロード
swap領域の停止
詳細の内容は以下に示す。
| |
最終的に以下ようにな6台のマシンができた
| |
rkeでKubernetes環境作成
rkeで説明した通り、バイナリをダウンロードし実行権限を追加する。
上記の6ノードの情報とそれぞれの役割を設定する。他にもいろいろ設定できるが、今回は割愛
| |
rkeコマンドにこの`Yamlファイルをパラメータにして実行すると、Kubernetes環境が作成できる。
| |
無事クラスタが作成された後、元のYamlファイル以外に、新しいファイルが二つ生成されます。
| |
この中のkube_config_rancher_cluster.yamlはクラスタにアクセスするための設定ファイルのため、kubectlに読み込まれるように、~/kube/configにコピーする。これによってクラスタにアクセスができるようになった。
| |
kubenetes環境でRancherをインストール
rancherのドキュメント に従ってインストールします。ここではインストールの手順だけ抽出し、詳しい設定はドキュメントを参照してください。
helmのインストールhelmのホームページを参考にして
helmをインストールする1sudo snap install helm --classichelmにrancherのリポジトリを追加今回は
stableを選択する1helm repo add rancher-stable https://releases.rancher.com/server-charts/stablerancherインストールのためnamespaceを追加namespaceの名前は必ずcattle-systemにする1kubectl create namespace cattle-systemcert-managerをインストール他にも証明書作成の方法はありますが、今回は
rancherに生成してもらう1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17# Install the CustomResourceDefinition resources separately kubectl apply --validate=false -f https://github.com/jetstack/cert-manager/releases/download/v0.15.0/cert-manager.crds.yaml # Create the namespace for cert-manager kubectl create namespace cert-manager # Add the Jetstack Helm repository helm repo add jetstack https://charts.jetstack.io # Update your local Helm chart repository cache helm repo update # Install the cert-manager Helm chart helm install \ cert-manager jetstack/cert-manager \ --namespace cert-manager \ --version v0.15.0cert-managerの状態を確認1 2 3 4 5$ kubectl get pods --namespace cert-manager NAME READY STATUS RESTARTS AGE cert-manager-766d5c494b-9cmcq 1/1 Running 0 15s cert-manager-cainjector-6649bbb695-cfmxq 1/1 Running 0 15s cert-manager-webhook-68d464c8b-5bmjt 1/1 Running 0 15srancher-serverをインストールRancher-generated certificatesを利用して、
rancher-serverをインストール1 2 3helm install rancher rancher-stable/rancher \ --namespace cattle-system \ --set hostname=rancher.my.orgrancher-serverの状態を確認1 2 3 4 5$ kubectl get pod -n cattle-system -o wide NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES rancher-756b996499-fjnt9 1/1 Running 0 35m 10.42.0.4 10.131.158.247 <none> <none> rancher-756b996499-rkn8h 1/1 Running 0 35m 10.42.2.4 10.131.158.121 <none> <none> rancher-756b996499-wmczg 1/1 Running 0 35m 10.42.5.4 10.131.158.97 <none> <none>それぞれのノード上にPodが
Running状態であり、インストールは成功した。