紹介
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
をインストールする1
sudo snap install helm --classic
helm
にrancher
のリポジトリを追加今回は
stable
を選択する1
helm repo add rancher-stable https://releases.rancher.com/server-charts/stable
rancher
インストールのためnamespace
を追加namespace
の名前は必ずcattle-system
にする1
kubectl create namespace cattle-system
cert-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.0
cert-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 15s
rancher-server
をインストールRancher-generated certificatesを利用して、
rancher-server
をインストール1 2 3
helm install rancher rancher-stable/rancher \ --namespace cattle-system \ --set hostname=rancher.my.org
rancher-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
状態であり、インストールは成功した。