K8S ? K3S !
K8S 那么麻煩為什么不用 K3S?
本文適合 :
- 想擺脫 K8S 復(fù)雜安裝又不得不用 K8S 的開發(fā)者
- 服務(wù)器配置不夠跑 K8S 的開發(fā)者
- 物聯(lián)網(wǎng)開發(fā)者
- 需要最低學(xué)習(xí)成本使用容器編排的開發(fā)者
- 初學(xué) K8S 的新手
K3S
- 更輕澈圈、更簡單的 K8S
- 設(shè)計(jì)給物聯(lián)網(wǎng)設(shè)備和邊緣側(cè)計(jì)算使用
- 邊緣側(cè)都能用服務(wù)器用了還不直接起飛?- 魯迅
踩坑開始
歪比歪比(奇怪的服務(wù)器)
服務(wù)器選擇我熟悉的 Centos
內(nèi)核要求: 3.10.0 也就是阿里云和騰訊云的官方 Centos7.7 / Centos7.6
- Centos8 不用嘗試了 iptables 的版本太高
- 其他內(nèi)核使用前用
k3s check-config
命令檢查- 所有節(jié)點(diǎn)機(jī)器要在同一個內(nèi)網(wǎng)環(huán)境下,這是K3S的一個bug,集群會以 endpoint 進(jìn)行連接,而云服務(wù)器的 endpoint 是內(nèi)網(wǎng)ip(阿里云經(jīng)典網(wǎng)絡(luò)應(yīng)該不是 暫未測試)
- 主機(jī)名帶下劃線在 k3s 異常
export K3S_NODE_NAME=${HOSTNAME//_/-}
將下劃線替換成中劃線提供給 k3s 安裝腳本
K3S內(nèi)置 Containerd 但是帆啃!作為一個服務(wù)器使用自然是要用常見的一點(diǎn)的容器 Docker
curl https://download.daocloud.io/docker/linux/centos/docker-ce.repo -o /etc/yum.repos.d/docker-ce.repo curl -fsSL https://get.daocloud.io/docker | bash -s docker --mirror Aliyun
- Docker 安裝和配置加速器(國內(nèi)源):
- containerd.io 版本低:
yum -y install https://download.daocloud.io/docker/linux/centos/7/x86_64/stable/Packages/containerd.io-1.2.6-3.3.el7.x86_64.rpm
- 加速器配置:
sudo mkdir -p /etc/docker tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["http://f1361db2.m.daocloud.io"] } EOF sudo systemctl daemon-reload sudo systemctl restart docker
- 開機(jī)啟動
sudo systemctl enable docker
歪比巴卜(K3S 的勝利)
K3S Server 安裝
就這么寫瞬女!都是一點(diǎn)一點(diǎn)查到的經(jīng)驗(yàn)!
export K3S_NODE_NAME=${HOSTNAME//_/-}
export INSTALL_K3S_EXEC="--docker --kube-apiserver-arg service-node-port-range=1-65000 --no-deploy traefik --write-kubeconfig ~/.kube/config --write-kubeconfig-mode 666"
curl -sfL https://docs.rancher.cn/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn sh -
--docker
使用docker--kube-apiserver-arg service-node-port-range=1-65000
節(jié)點(diǎn)端口范圍1-65000--no-deploy traefik
不安裝traefik (后續(xù)用 rancher )--write-kubeconfig ~/.kube/config --write-kubeconfig-mode 666
設(shè)置kube配置文件到~/.kube/config
(和 k8s 路徑一致后續(xù)會少出問題)
安裝 nfs
所有機(jī)器:
#所有 node 節(jié)點(diǎn)安裝 nfs 客戶端
yum -y install nfs-utils
systemctl start nfs && systemctl enable nfs
nfs主機(jī):
#master節(jié)點(diǎn)安裝nfs
yum -y install nfs-utils
#創(chuàng)建nfs目錄
mkdir -p /nfs/data/
#修改權(quán)限
chmod -R 777 /nfs/data
#編輯export文件
tee /etc/exports <<-'EOF'
/nfs/data *(rw,no_root_squash,sync)
EOF
#配置生效
exportfs -r
#啟動rpcbind努潘、nfs服務(wù)
systemctl restart rpcbind && systemctl enable rpcbind
systemctl restart nfs && systemctl enable nfs
K3S Server 信息
agent 加入集群需要使用
echo "export K3S_TOKEN=$(cat /var/lib/rancher/k3s/server/node-token)"
echo "export K3S_URL=https://$(ifconfig eth0 |grep inet|grep -v 127.0.0.1|grep -v inet6|awk '{print $2}'|tr -d "addr:"):6443"
K3S agent
同 server 安裝參數(shù)诽偷,需要先獲取到 server 的 K3S_TOKEN 和 K3S_URL
export K3S_TOKEN=XXXXXX
export K3S_URL=XXXXXX
export K3S_NODE_NAME=${HOSTNAME//_/-}
export INSTALL_K3S_EXEC="--docker --kube-apiserver-arg service-node-port-range=1-65000 --no-deploy traefik --write-kubeconfig ~/.kube/config --write-kubeconfig-mode 666"
curl -sfL https://docs.rancher.cn/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn sh -
一大波僵尸即將來襲( rancher 安裝)
rancher 版本: Rancher2.3+
docker run -d -v /data/docker/rancher-server/var/lib/rancher/:/var/lib/rancher/ --restart=unless-stopped --name rancher-server -p 9443:443 rancher/rancher:stable
echo https://$(curl http://ip.cip.cc/):9443
- 主機(jī) 9443 端口代理 rancher https 使用的 443 端口
- rancher 界面直接導(dǎo)入 K3S 集群, 把 K3S 集群當(dāng)成 K8S 使用
Docker + K3S + nfs 客戶端 一鍵安裝腳本
#!/bin/sh
set -e
# 在線安裝腳本
# k3s 不建議安裝swap 系統(tǒng)內(nèi)存小的時候沒有swap會卡死
if [ ! -f "/var/swap" ];then
echo "create swap"
dd if=/dev/zero of=/var/swap bs=1024 count=8192000
mkswap /var/swap
mkswap -f /var/swap
swapon /var/swap
echo "/var/swap swap swap defaults 0 0" >> /etc/fstab
fi
# 判斷是否安裝 docker
if [ `command -v docker` ];then
echo 'docker has installed'
else
echo 'install docker'
curl https://download.daocloud.io/docker/linux/centos/docker-ce.repo -o /etc/yum.repos.d/docker-ce.repo
yum -y install https://download.daocloud.io/docker/linux/centos/7/x86_64/stable/Packages/containerd.io-1.2.6-3.3.el7.x86_64.rpm
curl -fsSL https://get.daocloud.io/docker | bash -s docker --mirror Aliyun
# centos7 的內(nèi)核經(jīng)過 k3s 檢查都有這個問題
grubby --args="user_namespace.enable=1" --update-kernel="$(grubby --default-kernel)"
fi
# 添加加速源
sudo mkdir -p /etc/docker
tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["http://f1361db2.m.daocloud.io"]
}
EOF
# 啟動
sudo systemctl daemon-reload
sudo systemctl restart docker
sudo systemctl enable docker
# 判斷是否安裝k3s
if [ `command -v k3s` ];then
echo 'k3s has installed'
else
# 本地安裝k3s其他參數(shù)通過外部傳入
# 下劃線節(jié)點(diǎn)名不被支持
export K3S_NODE_NAME=${HOSTNAME//_/-}
export INSTALL_K3S_EXEC="--docker --kube-apiserver-arg service-node-port-range=1-65000 --no-deploy traefik --write-kubeconfig ~/.kube/config --write-kubeconfig-mode 666"
curl -sfL https://docs.rancher.cn/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn sh -
fi
#所有node節(jié)點(diǎn)安裝nfs客戶端
yum -y install nfs-utils
systemctl start nfs && systemctl enable nfs
echo 'finish'
echo 'need reboot'
echo "export K3S_TOKEN=$(cat /var/lib/rancher/k3s/server/node-token)"
echo "export K3S_URL=https://$(ifconfig eth0 |grep inet|grep -v 127.0.0.1|grep -v inet6|awk '{print $2}'|tr -d "addr:"):6443"