6
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Rancher Server(v2.6)の構築

Last updated at Posted at 2021-09-25

はじめに

オンプレミスでK8sクラスタをGUI管理できるRancherを構築した際のメモ。
k3sの機能の一つであるHelm CRDで詰まったのでその際のトラブルシューティング方法も記載。

今回、オンプレでの他の構築ツールとしては下記も調べてみたが、vCenterと相性が良くクラスタ作成がWeb GUI画面したかったためRancherを選んだ。

  • Kubespray
  • kubeadm

Rancherとは

Rancher Labsが提供しているマルチクラウドでKubernetesクラスタを管理するためのプラットフォームを提供するサーバ。
Rancher Labsは、他にもk3sやLonghornなども開発しておりドキュメントもしっかりしているため比較的Kubernetes導入しやすく感じる。
また、2020/12にRancher LabsはSUSEに買収され、コミュニティイベントもかなり活発化している。

platform.png

全体構成

Rancher Serverを構築してクラスタまで作成したときの全体イメージは下記図の通り。
クラスタを管理するためのRancher ServerDownstream User Clusterで構成される。
本記事では、Rancher Serverの構築のみを紹介する。
Rancher ServerはDockerでコンテナを一つ作成するだけでも作れるらしいが、今回は将来的な拡張も考え、シングル構成のk3sとhelm CRDを使ってデプロイする。

k3sでは、kubernetesマニフェストを特定ディレクトリに置くと自動でデプロイされる。
helm CRDは、そのマニフェストの中でhelmチャートを自動的にデプロイできるようにするためのk3sの機能

architecture.png

構築時点のバージョン

OS: CentOS 7.9
k8s: v1.21.4+k3s1
Rancher: 2.6
cert-manager: 1.5.3

構築手順

1. Linuxサーバ構築

特に、記載する内容はない
念の為、下記実施

  • firewalldの無効化
  • SELinuxの無効化

2. k3sインストール

ドキュメントのQuick Start通りで下記コマンドで自動的にcontainerdからk3sまで自動的にインストールされる
インストール後は、コンテナ間のネットワークがうまくつながらないため、再起動が必要

curl -sfL https://get.k3s.io | sh -

3. cert-managerのインストールとCRDs定義

Rancher ServerはSSL必須となるため、証明書が別途必要となる。
証明書は下記オプションがあるが、今回はデフォルトのRancherにて自動作成する方法ですすめるためcert-managerをインストールする。

設定 HELM CHARTオプション cert-managerが必要かどうか
ランチャーが生成した証明書(デフォルト) ingress.tls.source=rancher yes
Let’s Encrypt利用した証明書生成 ingress.tls.source=letsEncrypt yes
ファイルからの証明書インポート ingress.tls.source=secret no

3.1 cert-manager CRDsインストール

CRDsはマニフェスト定義では作成されないため、手動でデプロイする必要がある。
インストールするcert-managerのバージョンと合わせて下記コマンドを実行

k3s kubectl apply -f https://github.com/jetstack/cert-manager/releases/download/v1.5.1/cert-manager.crds.yaml

3.2 cert-manager定義作成

cert-managerのマニフェストを定義

/var/lib/rancher/k3s/server/manifests/cert-manager.yaml
apiVersion: helm.cattle.io/v1
kind: HelmChart
metadata:
  name: cert-manager
  namespace: cert-manager
spec:
  version: v1.5.3
  chart: cert-manager
  repo: https://charts.jetstack.io

3.3 cert-managerネームスペース作成

上記マニフェスト定義をしても、対象のネームスペースがないとデプロイされない。
下記コマンドにて、cert-managerネームスペースを作成

k3s kubectl create namespace cert-manager

4. Rancherインストール

Rancher ServerをKubernetes環境にデプロイする。
デプロイタイミングで、cert-managerを使って証明書作成される。

4.1 rancher定義作成

Rancherのマニフェスト定義
Rancherのドキュメントに合わせて、ネームスペースはcattle-systemとしている。
初回ログイン時の初回パスワードを事前定義(今回では、rancherにしている)

/var/lib/rancher/k3s/server/manifests/rancher.yaml
apiVersion: helm.cattle.io/v1
kind: HelmChart
metadata:
  name: rancher
  namespace: cattle-system
spec:
  chart: rancher
  repo: https://releases.rancher.com/server-charts/latest
  set:
    hostname: rancher.example.com
    bootstrapPassword: rancher
    replicas: 1

4.2 cattle-systemネームスペース作成

下記コマンドにて、cattle-systemネームスペースを作成

k3s kubectl create namespace cattle-system

5. Rancherサーバにアクセス

4.のset.hostnameでで定義したFQDNでサーバにアクセスsると初回ログイン画面が表示されるので、4.のset.bootstrapPasswordでログインすると利用可能

image.png

FQDNを使ってのアクセスはDNSへの登録もしくはhostsへの定義をする必要がある。

Helm CRDのトラブルシューティング

Helm CRDを利用したときに引っかかったポイントと対応方法をメモ

  • helmとHelm CRDの定義の相関関係がわからない
    • ここを参照
    • helm repo add XXXspec.repoで定義
    • helm install XXXspec.chartで定義
    • 他はspec.setspec.versionを使えれば大丈夫。spec.targetNamespacemetadataで代替できている?
  • helm CRDの仕様がわからない
    • すみません。私もわからなかったです。
    • 動き的には、ファイル作成されたタイミングで即座に実行される
    • 削除時は、特に何もされない?(確証なし)ため、ネームスペースでまとめて削除がいい
  • kubernetesのデプロイエラー確認
    • helm CRDが正しく動いているかは、/var/log/messagesを確認
    • kubernetesのデプロイ時エラーは、k3s kubectl logs -n <namespace> <pod名>で確認
    • pod名はデプロイのたびに変わるため、別窓で右記コマンドで定期的にpod名を列挙watch k3s kubectl get pods --all-namespaces

さいごに

rancherとk3sを利用することで、Kubernetes構築に必要な手順をかなり簡略化できるようになった。
Ansible AWXでもKubernetes利用が前提となっているなどKubernetes環境が基盤構築で必要となる世界になってきたので他OS利用していたとしても容易なKubernetes構築が可能になるようにしていきたい。
特にpodmanとは今後も仲良くはしたいが...

今後は、VMware環境でのクラスタ作成とLonghornを使ったストレージ管理をしてみたいと思う。

参考

6
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?