# PVE LXC 建立 K8S Cluster
# 建立好 Ubuntu LXC Container
# 更換 Ubuntu apt 映像來源 (建議做)
可以運用指令進行更換 Source
來源位置的描述檔案 /etc/apt/source.list
1 | sudo sed -i 's/archive.ubuntu.com/free.nchc.org.tw/g' /etc/apt/sources.list #更換來源成 NCHC 國網中心 apt 來源 |
實作文章
# 環境前置作業
進到 LXC 描述容器文件檔案
位置 /etc/pve/lxc/<容器 ID>.conf
原內容如下
1 | amd64 |
添加這幾行設定到容器設定的檔案下
1 | lxc.apparmor.profile: unconfined # LXC 不受 AppArmor 安全配置限制。 |
# 安裝相關軟體
到 Console
1 | sudo apt install docker.io # 安裝 Docker |
# 在 Ubuntu 安裝 K8S 環境
安裝
# Install Kubernetes
1 | apt install curl |
# Install Kubernetes Tool
1 | curl -fsSL https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes.gpg # Add Kubernete GPG Key |
# Deploy Kubernetes
# 關閉節點相關設定
進到 PVE 節點 (不是 LXC)
# 1
2
3
4
sysctl -w net.bridge.bridge-nf-call-iptables=1 #解決節點之間通訊問題 改成 1 表示 bridge 設備在 Layer 2 轉發的時候也會去調用 iptables 配置的 Layer 3 問題
sudo swapoff -a #關閉 Server 之間交換記憶體
echo 'net.ipv4.ip_forward=1' >> /etc/sysctl.conf # 啟用 IP 轉發
sysctl --system # 查看系統參數
1 | sysctl -w net.bridge.bridge-nf-call-iptables=1 #解決節點之間通訊問題 改成 1 表示 bridge 設備在 Layer 2 轉發的時候也會去調用 iptables 配置的 Layer 3 問題 |
# 建立 LXC 容器
注意請取消勾選無特權容器
選擇你的 LXC 範本
刪除 SWAP 空間 設置成 0
確認配置後建立容器
# 更改 PVE 節點 LXC 容器配置
添加這幾行設定到容器設定的檔案下
nano /etc/pve/lxc/[容器 ID].conf
1 | lxc.apparmor.profile: unconfined |
# 創建容器配置 (容器內部)
在 etc 創建 rc.local
1 | touch /etc/rc.local |
並且寫入內容
1 | nano /etc/rc.local |
1 | !/bin/sh -e |
再給予文件可執行權限
# 1
chmod +x /etc/rc.local
1 | chmod +x /etc/rc.local |
# 配置容器 SSH
在容器內
1 | nano /etc/ssh/sshd_config |
取消註解 PubkeyAuthentication yes
重啟 ssh
1 | service ssh restart |
產生 ssh key
1 | ssh-keygen |
# 安裝 K3S
1 | curl -sfL https://get.k3s.io | sh – # 下載 K3S |
# 終端機卡住解決方法
# 透過 PVE 實體環境進入 LXC
1 | pct enter <容器 ID> |
# 參考文章
- Rancher K3s: Kubernetes on Proxmox Containers
- How to Install Kubernetes on Ubuntu 22.04
- DevOps 笔记 - 在 pve 中使用 LXC 创建 k3s
- How to Install k3s Kubernetes Cluster on Ubuntu 22.04
- K3S in LXC