iT邦幫忙

2023 iThome 鐵人賽

DAY 12
0

今天這一篇大概是這幾天下來最燒腦的 操作有夠繁瑣
安裝 Kubeadm 在 Debain 有蠻多需要手動操作的地方要注意
千萬不要跳步做RRR

Install Kubeadm

以下是今天的步驟順序

Step1 更改 Hostname & hosts
Step2 拔掉 SWAP
Step3 設定 Kernal & 網卡名稱
Step4 安裝 Containerd
Step5 安裝 Kubeadm
Step6 調整 Cluster 設定
Step7 Cluster 啟動!
Step8 安裝 CNI (Calico)

Step1 更改 Hostname & hosts

這邊因為 K8s 會吃到一些 hostname 的設定所以要改成一個不重複的 Hostname

vim /etc/hostname

lke-main

接著到 hosts 改 local端的 ip - hostname

vim /etc/hosts

192.168.202.178 lke-main

如果有要加入其他 Worker Node 的話也要加他們的 ip - hostname 進來

Step2 拔掉 SWAP

這邊由於是使用之前安裝的 Template 來用 所以 SWAP 還會存在於 Debian上
但 Kubeadm 不能用 SWAP 所以要把 SWAP 全部關掉
先把目前使用的 SWAP 關掉

swapoff -a

這樣就關好了 但僅限重開機之前 重開後 SWAP 又會被自動掛載回來
所以來去 /etc/fstab 拔掉自動掛載 SWAP
SWAP 那一行給註解掉就可以了 (圖上的SWAP在第14行)
https://ithelp.ithome.com.tw/upload/images/20230927/201627735PJtaxpLap.png

Step3 設定 Kernal & 網卡名稱

先來開啟 Kernel 模組
第一行是開啟模組
第二行是設定開機時自動載入模組

modprobe br_netfilter
echo "br_netfilter" | tee /etc/modules-load.d/br_netfilter.conf

接著設定要開啟的 Kernel 功能

cat <<EOF | tee /etc/sysctl.d/99-kubernetes-cri.conf
net.bridge.bridge-nf-call-iptables  = 1
net.ipv4.ip_forward                 = 1
net.bridge.bridge-nf-call-ip6tables = 1
EOF
sysctl --system

接著改網卡名稱 直接改系統的網卡命名模式

vim /etc/default/grub

GRUB_CMDLINE_LINUX="net.ifnames=0"

https://ithelp.ithome.com.tw/upload/images/20230927/20162773VUk922tW88.png

改完檔案後 接著輸入指令讀取 然後重開電腦

grub-mkconfig -o /boot/grub/grub.cfg
reboot

然後 ip ad 看看網卡名稱
https://ithelp.ithome.com.tw/upload/images/20230927/20162773pQzzS7ysvj.png
摁 他好了 但網卡設定記得要去 /etc/network/interface

Step4 安裝 Containerd

接下來這一步是要設定 Kubeadm 的 CRI (Container Runtime Interface)
這邊選用 Containerd 來使用 直接來安裝吧

安裝參考

wget https://github.com/containerd/containerd/releases/download/v1.6.24/containerd-1.6.24-linux-amd64.tar.gz
wget https://raw.githubusercontent.com/containerd/containerd/main/containerd.service
tar Cxzvf /usr/local containerd-1.6.24-linux-amd64.tar.gz
mkdir -p /usr/local/lib/systemd/system
mv containerd.service /usr/local/lib/systemd/system/containerd.service
systemctl daemon-reload
systemctl enable --now containerd

wget https://github.com/opencontainers/runc/releases/download/v1.1.9/runc.amd64
install -m 755 runc.amd64 /usr/local/sbin/runc

wget https://github.com/containernetworking/plugins/releases/download/v1.3.0/cni-plugins-linux-amd64-v1.3.0.tgz
mkdir -p /opt/cni/bin
tar Cxzvf /opt/cni/bin cni-plugins-linux-amd64-v1.3.0.tgz

Step5 安裝 Kubeadm

這邊依照官網的指示跟著跑安裝流程就可以了

apt-get update
apt-get install -y apt-transport-https ca-certificates curl gpg
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.28/deb/Release.key | gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.28/deb/ /' | tee /etc/apt/sources.list.d/kubernetes.list
apt-get update
apt-get install -y kubelet kubeadm kubectl
apt-mark hold kubelet kubeadm kubectl

Step6 調整 Cluster 設定

接著來微調設定 有幾點要來設定

containerd config.toml 設定

先來生成設定檔

mkdir /etc/containerd
containerd config default |  tee /etc/containerd/config.toml

生成後用 vim 開
搜尋(/) 找 runc.options 把裡面的 SystemdCgroup 改成 true

vim /etc/containerd/config.toml

SystemdCgroup = true

https://ithelp.ithome.com.tw/upload/images/20230927/20162773mGmIJ99x9E.png

Calico IP 衝突

這邊因為 Calico 預設使用的 IP 和我的網段衝到
所以這邊要改一下 YAML 檔來指定 IP Range

用 wget 下載 calico 的 YAML 下來更改
用搜尋找 192.168.0.0/16 來改掉
拔掉註解改成 172.30.0.0/16

wget https://docs.projectcalico.org/manifests/calico.yaml
vim calico.yaml

https://ithelp.ithome.com.tw/upload/images/20230927/20162773wXd1EGPGSl.png

Step7 Cluster 啟動!

一切就定位後就可以 init 啟動 Cluster 了 記的要用參數改變 pod cidr
啟動完將 KUBECONFIG 指定個位置就能用 kubectl 連線到 Cluster

kubeadm init --pod-network-cidr=172.30.0.0/16
export KUBECONFIG=/etc/kubernetes/admin.conf

https://ithelp.ithome.com.tw/upload/images/20230927/20162773cz6C1wxWTQ.png
看到這個就代表成功啦

Step8 安裝 CNI (Calico)

最後把 CNI 裝上去就可以正常使用了

kubectl apply -f calico.yaml

指令敲下去應該會看到噴一堆東西出來是正常的
再用 kubectl 看 node 狀態 顯示 Ready 就表示正常運作了

kubectl get node

https://ithelp.ithome.com.tw/upload/images/20230927/20162773K6rOoFGXN3.png
收工下班

Update Log

23/9/28 更新 Step4 安裝 Containerd 少一個 tar 解壓縮的過程


上一篇
Day11 Windows Server 安裝 重回 GUI 的懷抱
下一篇
Day13 NTP Server 建置 Windows & Linux 校正回歸?!
系列文
地端建置大雜燴-下從網路線上到Grafana的建置之路30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言