--- tags: rancher, rke2, kubernetes, istio --- # RKE2 & rancher install - command :::info 使用的 OS 為 Ubuntu 20.04 LTS ::: [RKE2 中國官方文件](https://docs.rancher.cn/docs/rke2/_index) ## Server (Master) Node 依據 [RKE2 官方 HA 文件](https://docs.rke2.io/install/ha/) 說明,含有 master 性質的主機應為奇數,即 1,3,5... 等數量。 RKE2 預設安裝的 Node 為 master + worker (即此 Node 可作為 worker 部署服務),若要設定純 master 需要另外在設定檔中加入參數控制。 RKE2 server node (k8s master node) 設定檔可使用參數可參考 [官方網站](https://docs.rke2.io/install/install_options/server_config/)。 ### download rke2 install file ```bash! #預設不給 type 就是 server 了,所以不用特地給 type #curl -sfL https://get.rke2.io | INSTALL_RKE2_TYPE="server" sh - curl -sfL https://get.rke2.io --output install.sh chmod +x install.sh ``` ### set config (first node) * [HA RKE2 References](https://hackmd.io/@YuChia/ha-rke2-and-rancher-insttall-memo) ```bash sudo mkdir -p /etc/rancher/rke2/ cat <<EOF | sudo tee /etc/rancher/rke2/config.yaml # 主機名稱 node-name: - "rke2-node-01" # k8s 各主機溝通用的憑證簽章 tls-san: - rke2-node-01 # node host - rke2-node-01.mydomain.com # node host domain - rke2-cluster.mydomain.com # k8s cluster api server domain - 1.1.1.1 # k8s cluster api server domain 的 vip,看參考資料多半都有設定 #可以自己指定要用的 token,之後要加入此叢集的主機的 RKE2 設定檔中的 token 都要使用此 token #token: my-shared-secret #如果要做純 k8s master 的話可已加入以下設定,RKE2 預設是混和 NODE #node-taint: # - "CriticalAddinsonly=true:NoExecute" #非必要不需要處理這一塊 #如果沒有要使用 RKE2 內建的 containerd,或是要使用 CRI-O 來作為 k8s CRI 的話,可以這樣設定 #外部的 containerd 設定請參考下一節 # REF: https://gist.github.com/bgulla/3b725f0eea54fdd49f4d7066e16b1d89 # REF: https://github.com/rancher/rke2/issues/3219 #kubelet-arg: #- "cgroup-driver=systemd" #container-runtime-endpoint: unix:///run/containerd/containerd.sock #以下參數所有 master node 都要相同 disable: rke2-ingress-nginx cni: - cilium EOF ``` #### external containerd 參考:https://gist.github.com/bgulla/3b725f0eea54fdd49f4d7066e16b1d89 :::info 一般來說,不用特別做這件事情!使用 RKE2 自己包好的內容就夠了 ::: 如果要使用 OS 原本就裝好的 containerd ,而不是使用 RKE2 自己套件中的 containerd,需要對原本的 containerd 設定檔進行調整。 設定檔位置 `/etc/containerd/containerd.toml` 找到 cni 設定的位置 如果是使用 containerd 原始預設的設定檔案的話需要針對 cni 進行調整;即有使用 `sudo containerd config default | tee /etc/containerd/config.toml` 命令去導出預設設定。 原始區段設定 ```toml [plugins] [plugins."io.containerd.grpc.v1.cri"] //...... [plugins."io.containerd.grpc.v1.cri".cni] bin_dir = "/opt/cni/bin" conf_dir = "/etc/cni/net.d" ``` 修改為 ```toml [plugins] [plugins."io.containerd.grpc.v1.cri"] //...... [plugins."io.containerd.grpc.v1.cri".cni] bin_dir = "/var/lib/rancher/rke2/bin" conf_dir = "/var/lib/rancher/rke2/agent/etc/cni/net.d" ``` 也可以使用 sed 語法直接改 ```bash sudo sed -i 's|bin_dir = "/opt/cni/bin"|bin_dir = "/var/lib/rancher/rke2/bin"|g' /etc/containerd/config.toml sudo sed -i 's|conf_dir = "/etc/cni/net.d"|conf_dir = "/var/lib/rancher/rke2/agent/etc/cni/net.d"|g' /etc/containerd/config.toml ``` ### run install and start rke2 first master node 指定版本安裝 ```bash sudo INSTALL_RKE2_CHANNEL=v1.24.7+rke2r1 ./install.sh export PATH=$PATH:/opt/rke2/bin sudo systemctl enable rke2-server sudo systemctl start rke2-server #這邊會要等一下 ``` :::info 執行 `systemctl start rke2-server` 之後會要稍微等一下,如果超過 10 分鐘還沒好的話,可以 `Ctrl + c` 跳出來,然後用 `journalctl -u rke2-server -f` 命令來看一下日誌是不是出了什麼問題 ::: ### copy kube config (if need) :::danger 這邊視情況使用 ::: ```bash mkdir .kube sudo cp /etc/rancher/rke2/rke2.yaml .kube/config #如果不是用 root 登入的話,需要另外給予權限 #sudo chown rancher .kube/config sudo cp /var/lib/rancher/rke2/bin/kubectl /usr/local/bin/ ``` ### get k8s token :::warning ***in first master node!!*** ::: ```bash sudo cat /var/lib/rancher/rke2/server/token ``` ### set other server (master) node config ```bash sudo mkdir -p /etc/rancher/rke2/ cat <<EOF | sudo tee /etc/rancher/rke2/config.yaml #如果第一台有指定 token,則這邊使用該 token,不然通常都是輸入用命令查出來的 token token: my-shared-secret #這邊 server 有人用第一台主機的 domain,有人用叢集 domain,只要能連上主要的 master 主機並使用 9345 port 即可 #port 的部分 RKE2 預設使用 9345,但是仍有開通 6443 來供一般使用 server: https://rke2-node-01:9345 node-name: - "rancher-02" # tls-san 除了 node 自己的 host / host domain 之外,盡量跟第一台相同 tls-san: - rke2-node-02 # node host - rke2-node-02.mydomain.com # node host domain - rke2-cluster.mydomain.com # k8s cluster api server domain - 1.1.1.1 # k8s cluster api server domain 的 vip,看參考資料多半都有設定 #如果要做純 k8s master 的話可已加入以下設定,RKE2 預設是混和 NODE #node-taint: # - "CriticalAddinsonly=true:NoExecute" #非必要不需要處理這一塊 #如果沒有要使用 RKE2 內建的 containerd,或是要使用 CRI-O 來作為 k8s CRI 的話,可以這樣設定 #外部的 containerd 設定請參考下一節 # REF: https://gist.github.com/bgulla/3b725f0eea54fdd49f4d7066e16b1d89 # REF: https://github.com/rancher/rke2/issues/3219 #kubelet-arg: #- "cgroup-driver=systemd" #container-runtime-endpoint: unix:///run/containerd/containerd.sock # 以下設定都盡量跟第一台 master node 相同 disable: rke2-ingress-nginx cni: - cilium EOF ``` ## Agent (Worker) Node :::info RKE2 agent node (k8s worker node) 設定檔可使用參數可參考 [官方網站](https://docs.rke2.io/install/quickstart/#linux-agent-worker-node-installation) ::: ### download rke2 install file :::info agent (worker) 在下載安裝擋時,要另外下參數 ::: ```bash sudo curl -sfL https://get.rke2.io --output install.sh sudo chmod +x install.sh ``` ### get k8s token :::warning ***in master node!!*** ::: ```bash sudo cat /var/lib/rancher/rke2/server/token ``` ### set node config ***port 9345 是 RKE2 使用的管理 port*** ```bash sudo mkdir -p /etc/rancher/rke2/ cat <<EOF | sudo tee /etc/rancher/rke2/config.yaml server: https://<server>:9345 #可用任一 master node 主機網址 + port 9345 token: <token from server node> node-name: - "rke2-node-worker-01" EOF ``` ### start agent ```bash sudo INSTALL_RKE2_TYPE="agent" ./install.sh #似乎會自己去抓 server 的版本;如果設定檔正確的話 #sudo INSTALL_RKE2_TYPE="agent" INSTALL_RKE2_CHANNEL=v1.24.7+rke2r1 ./install.sh sudo systemctl enable rke2-agent.service sudo systemctl start rke2-agent.service ``` ## windows agent node setting - [官方的 windows agent node 安裝說明](https://docs.rke2.io/install/quickstart/#windows-agent-worker-node-installation) :::warning ***目前為實驗階段,暫不考慮使用,而且有限定 CNI*** ::: ## uninstall - [官方解安裝文件](https://docs.rke2.io/install/linux_uninstall/) ubuntu 直接執行 `/usr/local/bin/rke2-uninstall.sh` 就好,輕鬆愜意,會把所有自訂設定等資料全部清空,所以設定檔記得留備份 centos 直接執行 `/usr/bin/rke2-uninstall.sh` 就好,輕鬆愜意,會把所有自訂設定等資料全部清空,所以設定檔記得留備份 # Rancher install ## install helm ```bash wget https://get.helm.sh/helm-v3.8.2-linux-amd64.tar.gz tar zxvf helm-v3.8.2-linux-amd64.tar.gz sudo cp linux-amd64/helm /usr/local/bin/ ``` ## install rancher / cert-manager :::info [rancher latest version doc](https://ranchermanager.docs.rancher.com/getting-started/installation-and-upgrade/resources/upgrade-cert-manager) rancher 官方有說明目前最新版本對於 cert-manager 的版本測試狀況,可依據自己的需求進行相關版本調整 ::: ```bash helm repo add rancher-stable https://releases.rancher.com/server-charts/stable kubectl create namespace cattle-system kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.7.1/cert-manager.crds.yaml helm repo add jetstack https://charts.jetstack.io helm repo update helm install cert-manager jetstack/cert-manager \ --namespace cert-manager \ --create-namespace \ --version v1.7.1 helm install rancher rancher-stable/rancher --namespace cattle-system --set hostname=rancher.myserver.vm --version 2.6.9 #helm install rancher rancher-stable/rancher --namespace cattle-system --set hostname=app.192.168.74.133.nip.io --version 2.6.9 #helm install rancher rancher-stable/rancher --namespace cattle-system --set hostname=rancher.myserver.vm --version 2.6.7 ``` ## istio ingress 由於前面的 RKE2 設定檔已關閉 nginx-ingress controller 的安裝,所以需要另外安裝 service mesh 相關服務或是自己管理 nginx / service node port。 使用 istio 作為 ingress 的話,可以參考我另外一篇針對 istio ingress 寫的筆記 : [rancher istio ingress config](/ClVSFf1MQ2ieJactXS552w) :::warning 該筆記是我先前安裝 rancher 時,依據此篇安裝筆記後所延續的 istio 安裝設定,但是在撰寫此段補充時我並未再次測試,若有錯誤還請告知。 :::
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up