背景
閉域(インターネットへ疎通ができない)環境に対して、k3sをインストールすることがあったので、備忘録として書きます。
*閉域環境を英語ではair-gapと呼ばれることがある。Rancher公式サイトにはair-gapと記載されている。
環境
- ラズパイ4
- Ubuntu 18.04
- aarch64 (arm64)
- k3s v1.23.6+k3s1
閉域環境へk3sインスール
1. k3sのimage/バイナリとinstall.shをダウンロード
GitHubからローカル環境に手動でk3sのimageとバイナリをダウンロードします。本環境では、現時点(2022/05/10)で最新のv1.23.6+k3s1を使用します。
https://github.com/k3s-io/k3s/releases
次に、ローカル環境にラズパイサーバーで実行するk3sインストール用スクリプトをダウンロードします。
# get.k3s.ioからスクリプトをダウンロード % curl https://get.k3s.io -o ~/Downloads/install.sh % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 27501 100 27501 0 0 26412 0 0:00:01 0:00:01 --:--:-- 26622 # ローカル環境にダウンロードできたか確認 % ls ~/Downloads/install.sh /Users/****/Downloads/install.sh
2. ラズパイサーバーへ転送
先ほどダウンロードしたものをラズパイサーバーへ転送します。
# localからラズパイサーバーへimageを転送 % scp ~/Downloads/k3s-airgap-images-arm64.tar ubuntu@192.168.3.101:/home/ubuntu ubuntu@192.168.3.101's password: k3s-airgap-images-arm64.tar 100% 462MB 4.5MB/s 01:42 % scp ~/Downloads/k3s ubuntu@192.168.3.101:/home/ubuntu ubuntu@192.168.3.101's password: k3s 100% 60MB 6.1MB/s 00:09 % scp ~/Downloads/install.sh ubuntu@192.168.3.101:/home/ubuntu ubuntu@192.168.3.101's password: install.sh 100% 27KB 2.2MB/s 00:00 # ラズパイサーバーでファイルを確認 ubuntu@ras01:~$ ls -lh total 522M -rw-r--r-- 1 ubuntu ubuntu 27K Dec 15 19:39 install.sh -rw-r--r-- 1 ubuntu ubuntu 60M Dec 15 19:37 k3s -rw-r--r-- 1 ubuntu ubuntu 462M Dec 15 19:25 k3s-airgap-images-arm64.tar # /usr/local/bin配下にk3sバイナリを格納 ubuntu@ras01:~$ sudo mv k3s-arm64 /usr/local/bin/k3s ubuntu@ras01:~$ ls /usr/local/bin/ k3s # /var/lib/rancher/k3s/agent/images配下にk3s imageをコピー sudo mkdir -p /var/lib/rancher/k3s/agent/images/ sudo cp k3s-airgap-images-arm64.tar /var/lib/rancher/k3s/agent/images/
3. スクリプトとk3sバイナリに実行権限を付与
# install.shに実行権限を付与 ubuntu@ras01:~$ sudo chmod +x install.sh ubuntu@ras01:~$ ls -lh install.sh -rwxr-xr-x 1 ubuntu ubuntu 27K Dec 15 19:39 install.sh # k3sバイナリに実行権限を付与 ubuntu@ras01:~$ sudo chmod +x /usr/local/bin/k3s ubuntu@ras01:~$ ls -lh /usr/local/bin/ total 60M -rwxr-xr-x 1 ubuntu ubuntu 60M Dec 15 19:37 k3s
4. k3sインストールを実行
install.sh
を実行して、ラズパイサーバーにk3sをインストールします。
# インストールの実行 ubuntu@ras01:~$ INSTALL_K3S_SKIP_DOWNLOAD=true ./install.sh [INFO] Skipping k3s download and verify [INFO] Skipping installation of SELinux RPM [INFO] Skipping /usr/local/bin/kubectl symlink to k3s, command exists in PATH at /usr/bin/kubectl [INFO] Skipping /usr/local/bin/crictl symlink to k3s, command exists in PATH at /usr/bin/crictl [INFO] Skipping /usr/local/bin/ctr symlink to k3s, command exists in PATH at /usr/bin/ctr [INFO] Creating killall script /usr/local/bin/k3s-killall.sh [INFO] Creating uninstall script /usr/local/bin/k3s-uninstall.sh [INFO] env: Creating environment file /etc/systemd/system/k3s.service.env [INFO] systemd: Creating service file /etc/systemd/system/k3s.service [INFO] systemd: Enabling k3s unit Created symlink /etc/systemd/system/multi-user.target.wants/k3s.service → /etc/systemd/system/k3s.service. [INFO] systemd: Starting k3s # k3sのステータス確認 ubuntu@ras01:~$ systemctl status k3s ● k3s.service - Lightweight Kubernetes Loaded: loaded (/etc/systemd/system/k3s.service; enabled; vendor preset: enabled) Active: active (running) since Wed 2021-12-15 19:54:15 JST; 1min 44s ago Docs: https://k3s.io Process: 18730 ExecStartPre=/sbin/modprobe overlay (code=exited, status=0/SUCCESS) Process: 18725 ExecStartPre=/sbin/modprobe br_netfilter (code=exited, status=0/SUCCESS) Process: 18723 ExecStartPre=/bin/sh -xc ! /usr/bin/systemctl is-enabled --quiet nm-cloud-setup.service (code=exited, status=0/SUCCESS) Main PID: 18733 (k3s-server) Tasks: 65 CGroup: /system.slice/k3s.service ├─18733 /usr/local/bin/k3s server └─18894 containerd -c /var/lib/rancher/k3s/agent/etc/containerd/config.toml -a /run/k3s/containerd/containerd.sock --state /run/k3s/containerd --root /var/lib/rancher/k3s Dec 15 19:55:37 ras01 k3s[18733]: E1215 19:55:37.805540 18733 remote_runtime.go:209] "RunPodSandbox from runtime service failed" err="rpc error: code = Unknown desc = failed to ge Dec 15 19:55:37 ras01 k3s[18733]: E1215 19:55:37.805691 18733 kuberuntime_sandbox.go:70] "Failed to create sandbox for pod" err="rpc error: code = Unknown desc = failed to get san Dec 15 19:55:37 ras01 k3s[18733]: E1215 19:55:37.805771 18733 kuberuntime_manager.go:833] "CreatePodSandbox for pod failed" err="rpc error: code = Unknown desc = failed to get san Dec 15 19:55:37 ras01 k3s[18733]: E1215 19:55:37.805964 18733 pod_workers.go:951] "Error syncing pod, skipping" err="failed to \"CreatePodSandbox\" for \"metrics-server-7cd5fcb6b7 Dec 15 19:55:45 ras01 k3s[18733]: E1215 19:55:45.015469 18733 resource_quota_controller.go:413] unable to retrieve the complete list of server APIs: metrics.k8s.io/v1beta1: the se Dec 15 19:55:45 ras01 k3s[18733]: W1215 19:55:45.523766 18733 garbagecollector.go:707] failed to discover some groups: map[metrics.k8s.io/v1beta1:the server is currently unable to Dec 15 19:55:46 ras01 k3s[18733]: W1215 19:55:46.502560 18733 handler_proxy.go:104] no RequestInfo found in the context Dec 15 19:55:46 ras01 k3s[18733]: E1215 19:55:46.502809 18733 controller.go:116] loading OpenAPI spec for "v1beta1.metrics.k8s.io" failed with: failed to retrieve openAPI spec, ht Dec 15 19:55:46 ras01 k3s[18733]: , Header: map[Content-Type:[text/plain; charset=utf-8] X-Content-Type-Options:[nosniff]] Dec 15 19:55:46 ras01 k3s[18733]: I1215 19:55:46.502881 18733 controller.go:129] OpenAPI AggregationController: action for item v1beta1.metrics.k8s.io: Rate Limited Requeue.
5. kubectlの確認
この段階ではPATH設定などを行なっていないため、kubectl が使えません。最後に、kubectlコマンドが使えるように以下を設定していきます。
# kubectlの実行 (この段階ではrefusedとなる) ubuntu@ras01:~$ kubectl get nodes The connection to the server localhost:8080 was refused - did you specify the right host or port? # kubectlのパスを設定 ubuntu@ras01:~$ echo "export KUBECONFIG=/etc/rancher/k3s/k3s.yaml" >> ~/.bashrc ubuntu@ras01:~$ source ~/.bashrc # ファイル所有者を一般ユーザーに変更 ubuntu@ras01:~$ sudo chown ubuntu /etc/rancher/k3s/k3s.yaml ubuntu@ras01:~$ ls -lh /etc/rancher/k3s/k3s.yaml -rw------- 1 ubuntu root 2.9K Dec 15 19:54 /etc/rancher/k3s/k3s.yaml # kubectlの実行 ubuntu@ras01:~$ kubectl get nodes NAME STATUS ROLES AGE VERSION ras01 Ready control-plane,master 6m55s v1.23.6+k3s1
6. お片付け
k3sをアンインストールしたい場合は、以下のスクリプトを実行すれば、アンインストールが実行されます。
ubuntu@ras01: /usr/local/bin/k3s-uninstall.sh