Skip to content

antony@notes:~/rancher$ cat "Podman-Offline-Installation-of-Rancher.md"

Podman Offline Installation of Rancher

2023-06-29· rancher ·SUSE Rancher 2.6

Preface

本篇文章會介紹如何在全離線的狀態下,透過 Podman 安裝 Rancher,並透過 Rancher 這個平台生成 Rancher Kubernetes Engine 2(RKE2)

:::warning

:::spoiler 目錄

[TOC]

:::

Prepare

將 Rancher Image 傳到 Podman-Host 主機

> scp rancher-image.tar bigred@192.168.61.66:/home/bigred/

套件下載點

Load Rancher Image on Podman-Host Machine

$ sudo podman load < rancher-image.tar

Install Rancher with Default Rancher-generated Self-signed Certificate

$ sudo podman run -d -p 80:80 -p 443:443 --privileged docker.io/rancher/rancher:v2.7.3

-d, --detach,在背景運行 Container -p, --publish strings,Publish a container’s port, or a range of ports, to the host (default []) --privileged,Give extended privileges to container

螢幕輸出 :

b0d309fae9150ae0a637e415e9f531a83eb542f2be60278a0567ec1cd05d35c4

檢查 Container 狀態

$ sudo podman ps -a

螢幕輸出 :

CONTAINER ID  IMAGE                             COMMAND       CREATED        STATUS            PORTS                                     NAMES
b0d309fae915  docker.io/rancher/rancher:v2.7.3  --no-cacerts  5 minutes ago  Up 5 minutes ago  0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp  great_easley

準備 Rancher Container 運作所需之 Image

$ sudo podman cp rancher-2.7.3.tar $(sudo podman ps -aq):/var/lib/rancher/

$ sudo podman exec -it $(sudo podman ps -aq) bash

# ctr -n k8s.io image import rancher-2.7.3.tar

在 local 端測試 Rancher 網站

$ curl -k https://192.168.61.66/dashboard/

螢幕輸出 :

<!doctype html>
<html>
  <head>
    <title>dashboard</title><meta data-n-head="1" charset="utf-8"><meta data-n-head="1" name="viewport" content="width=device-width,initial-scale=1"><meta data-n-head="1" data-hid="description" name="description" content="Rancher Dashboard"><link data-n-head="1" data-hid="icon" rel="icon" type="image/x-icon" href="/favicon.png"><base href="/dashboard/"><link rel="preload" href="/dashboard/_nuxt/bc5a9b9.js" as="script"><link rel="preload" href="/dashboard/_nuxt/d0c1200b7e55ba295a21.js" as="script"><link rel="preload" href="/dashboard/_nuxt/b9199dcf32fef6f15dc0.js" as="script"><link rel="preload" href="/dashboard/_nuxt/44bf45d45b48440e6fea.js" as="script">
  </head>
  <body>
    <div id="__nuxt"><style>.initial-load-spinner-container{align-items:center;background-color:#f8f8f8;display:flex;justify-content:center;height:100vh;left:0;position:absolute;top:0;width:100vw}.initial-load-spinner{animation:initial-load-animate 1s infinite linear;background-color:transparent;box-sizing:border-box;border:5px solid #008acf;border-radius:50%;border-top-color:#00b2e2;display:inline-block;height:80px;margin:0 auto;width:80px}@keyframes initial-load-animate{0%{transform:rotate(0)}100%{transform:rotate(359deg)}}</style><div class="initial-load-spinner-container">  <i class="initial-load-spinner"></i></div></div><script>window.__NUXT__={config:{rancherEnv:"web",dashboardVersion:"v2.7.2",_app:{basePath:"/dashboard/",assetsPath:"/dashboard/_nuxt/",cdnURL:null}}}</script>
  <script src="/dashboard/_nuxt/bc5a9b9.js"></script><script src="/dashboard/_nuxt/d0c1200b7e55ba295a21.js"></script><script src="/dashboard/_nuxt/b9199dcf32fef6f15dc0.js"></script><script src="/dashboard/_nuxt/44bf45d45b48440e6fea.js"></script></body>
</html>

取得第一次登入密碼

$ sudo podman logs $(sudo podman ps -aq)  2>&1 | grep "Bootstrap Password:"

全離線透過 Rancher 生成 RKE2

準備 rancher-agent 和 rke2 服務要用的 tar 檔

~> scp Downloads\d-rke2-image.tar Downloads\rke2-runtime-image.tar Downloads\system-agent-installer-rke2-image.tar bigred@192.168.61.11:/home/bigred/
~> sudo mkdir -p /var/lib/rancher/agent/images/
~> sudo cp system-agent-installer-rke2-image.tar /var/lib/rancher/agent/images/
~> sudo mkdir -p /var/lib/rancher/rke2/agent/images/
~> sudo cp rke2-runtime-image.tar /var/lib/rancher/rke2/agent/images/

安裝 containerd

~> sudo zypper in -y containerd

編輯設定檔

~> sudo nano /etc/containerd/config.toml
version = 2

# persistent data location
root = "/var/lib/rancher/rke2/agent/containerd/"

啟動 containerd

~> sudo /usr/sbin/containerd &

建立 k8s.io namespace

~> sudo ctr ns create k8s.io

Import Image

~> sudo ctr -n k8s.io image import d-rke2-image.tar

檢查

~> sudo ctr -n k8s.io image ls
~> sudo ls -l /var/lib/rancher/rke2/agent/containerd/io.containerd.content.v1.content/blobs/sha256

將 containerd 程序終止

~> ps -eaf | grep containerd
~> sudo kill -9 3755 3756

檢查

~> ps -eaf | grep containerd
root       9363   3823  0 00:20 pts/0    00:00:00 grep --color=auto containerd

執行註冊命令

~> curl --insecure -fL https://rancher.twlottery.com.internal/system-agent-install.sh | sudo  sh -s - --server https://rancher.twlottery.com.internal --label 'cattle.io/os=linux' --token wd64wzwh9f8x4gz62fn6h72ghjpnz4jf4wdk2vfvxl22fx9sztmvvs --ca-checksum c317b93eaa455ae06169dcc86e2b49a77aacdde400b254ba6079dc9db6b50eaa --etcd --controlplane --worker

檢查 K8S 狀態

~> watch -n 0.1 kubectl get po -A

參考資料

SECTION 4: User Management with SUSE RancherRancher Introduction