不同雲服務器下,ubuntu下開k3s集群


首先先感謝老哥的文章:h構建多雲環境下的K3S集群,但是我嘗試在centos 8.2上面前面一直執行報錯

並且安裝glibc 2.17時還會報錯make版本太低,所以直接放棄centos,投入ubuntu的懷抱

現在騰訊雲的活動確實不錯,【騰訊雲】雲產品限時秒殺,爆款2核4G雲服務器首年74元,點進去之后三年8M 2c4g輕量應用服務器222元,月流量1200G,好了,說說k3s吧,K3s相對比K8s更加輕量,對於服務器的要求較低:

  • 系統內核版本:Linux 3.10+ (CentOS 7, Debian 8/9, Ubuntu 14.04+)
  • K3S Server端最低內存要求:512 MB
  • K3S Agent端內存最低要求:75MB
  • 磁盤空間最低要求:200 MB
  • 支持的硬件架構:x86_64, ARMv7, ARM64

實際使用過程中,可以在各種環境中進行使用(k3s在小到樹莓派或大到 AWS a1.4xlarge 32GiB服務器的環境中),也就是使用場景可以小到一個家庭內部的小盒子(斐訊N1)
由於我之前買了一個三年的阿里雲服務器(1M 1c2g),准備拿阿里雲服務器做server,騰訊雲服務器做agent做一個單master,單node的k3s集群,不同雲服務器見通過內網是訪問不了的(可以拓展一下場景,比如家內的linux服務器和外網的雲服務器之間也是內網不通的),就需要wireguard來幫助我們做好vpn的功能,服務器的內核建議升級到5.6以上(centos和ubuntu下uname -r查看),如果內核版本不夠高,需要先升級內核,我這里說一下ubuntu的升級方法

以下內容需要在兩台服務器上都進行執行

* server 阿里雲 1M 1c2g ubuntu 20.04
* agent 騰訊雲 8M 2c4g ubuntu 20.04

1.升級內核

kernel.ubuntu.com中尋找自己要下載的內核版本,然后點進去,例如我選擇的5.17.7

然后服務器上執行dpkg --print-architecture查看一下自己的服務器是amd還是arm等,在上面打開的鏈接中選擇好指定的架構,下載帶有下面image和modules、generic的deb文件

  • linux-image-X.Y.Z-generic-*.deb
  • linux-modules-X.Y.Z-generic-.deb
    然后上傳到服務器上,當然我們也可以這樣
mkdir kernel
cd kernel
wget https://kernel.ubuntu.com/~kernel-ppa/mainline/v5.15.7/amd64/linux-image-unsigned-5.15.7-051507-generic_5.15.7-051507.202112080459_amd64.deb
wget https://kernel.ubuntu.com/~kernel-ppa/mainline/v5.15.7/amd64/linux-modules-5.15.7-051507-generic_5.15.7-051507.202112080459_amd64.deb

下載速度有點慢,你可以直接進入我的阿里雲盤下載,鏈接我設置的永久有效
下載完成之后,執行命令:

sudo dpkg --install *.deb
sudo reboot 

服務器重啟之后再用uname -r查看一下,現在內核版本已經更新到了5.15.7了,服務器內核已經執行成功之后,我們可以安裝wireguard了

2.安裝wireguard

 sudo apt update
 sudo apt upgrade -y
 sudo apt install -y iptables wireguard

在我們的server服務器執行hostnamectl set-hostname k3s-master
在我們的agent服務器執行hostnamectl set-hostname k3s-node1

3.安裝k3s及配置

接下來,兩台服務器都安裝k3s

curl -sfL http://rancher-mirror.cnrancher.com/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn sh - 

稍等一會兒,查看我們的ip addr

///10.43.0.1我們當作server服務器的內網IP
kube-ipvs0: <BROADCAST,NOARP> mtu 1500 qdisc noop state DOWN group default 
    inet 10.43.0.1/32 scope global kube-ipvs0
       valid_lft forever preferred_lft forever

下面的內容需要分別執行

server服務器

nano /etc/systemd/system/k3s.service

//k3s.service只需要修改ExecStart部分,內網IP10.43.0.1

[Unit]
Description=Lightweight Kubernetes
Documentation=https://k3s.io
Wants=network-online.target
After=network-online.target

[Install]
WantedBy=multi-user.target

[Service]
Type=notify
EnvironmentFile=/etc/systemd/system/k3s.service.env
KillMode=process
Delegate=yes
LimitNOFILE=1048576
LimitNPROC=infinity
LimitCORE=infinity
TasksMax=infinity
TimeoutStartSec=0
Restart=always
RestartSec=5s
ExecStartPre=-/sbin/modprobe br_netfilter
ExecStartPre=-/sbin/modprobe overlay
ExecStart=/usr/local/bin/k3s \
    server --flannel-backend wireguard --tls-san 公網地址,內網地址 --node-ip 內網地址 --node-external-ip 公網地址 --no-deploy servicelb \
    --disable traefik
    --kube-proxy-arg "proxy-mode=ipvs" "masquerade-all=true" \
    --kube-proxy-arg "metrics-bind-address=0.0.0.0"


nano /etc/systemd/system/k3s.service.env //然后直接Ctrl+X 按y退出來

獲取token

cat /var/lib/rancher/k3s/server/node-token    
# 內容類似如下:
K10fc6653356f8b0c457cd1a8e41d87b7d33b49a97f4e6b8qweqweqwewq12788a06e85647454::server:53c2qweqwe2222w4d8145be9e7

agent服務器

nano /etc/systemd/system/k3s.service

//k3s.service只需要修改ExecStart部分

///內網IP我們寫成10.43.0.2
[Unit]
Description=Lightweight Kubernetes
Documentation=https://k3s.io
Wants=network-online.target
After=network-online.target

[Install]
WantedBy=multi-user.target

[Service]
Type=notify
EnvironmentFile=/etc/systemd/system/k3s.service.env
KillMode=process
Delegate=yes
LimitNOFILE=1048576
LimitNPROC=infinity
LimitCORE=infinity
TasksMax=infinity
TimeoutStartSec=0
Restart=always
RestartSec=5s
ExecStartPre=-/sbin/modprobe br_netfilter
ExecStartPre=-/sbin/modprobe overlay
ExecStart=/usr/local/bin/k3s agent\
    --node-external-ip 公網IP \
    --node-ip  內網IP\
    --kube-proxy-arg "proxy-mode=ipvs" "masquerade-all=true" \
    --kube-proxy-arg "metrics-bind-address=0.0.0.0"


設置當前服務器的設備變量
nano /etc/systemd/system/k3s.service.env

# 此處定義集群的api service訪問地址以及token內容為:
K3S_URL=https://server的公網地址:6443
K10fc6653356f8b0c457cd1a8e41d87b7d33b49a97f4e6b8qweqweqwewq12788a06e85647454::server:53c2qweqwe2222w4d8145be9e7

然后server服務器和agent服務器都執行

systemctl daemon-reload 
systemctl restart k3s

如果長時間Hold不執行下去,Ctrl+C取消,執行systemctl status k3s -r或者ajournalctl -u k3s.service -r查看輸出日志

如果報錯信息是
Failed to connect to proxy" error="x509: certificate is valid for 10.43.0.1, 127.0.0.1, 172.28.115.105, not xxx.xxx.xxx.xxx(server的公網IP)
先將兩個服務器的K3s都停掉,然后全部執行

systemctl stop k3s
cd /var/lib/
rm -rf rancher
reboot 

一般重啟之后就好了

下面是服務器的端口開發截圖


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM