K8S 那麼麻煩爲何不用 K3S?
本文適合 :node
- 想擺脫 K8S 複雜安裝又不得不用 K8S 的開發者
- 服務器配置不夠跑 K8S 的開發者
- 物聯網開發者
- 須要最低學習成本使用容器編排的開發者
- 初學 K8S 的新手
內核要求: 3.10.0 也就是阿里雲和騰訊雲的官方 Centos7.7 / Centos7.6linux
- Centos8 不用嘗試了 iptables 的版本過高
- 其餘內核使用前用
k3s check-config
命令檢查- 全部節點機器要在同一個內網環境下,這是K3S的一個bug,集羣會以 endpoint 進行鏈接,而云服務器的 endpoint 是內網ip(阿里雲經典網絡應該不是 暫未測試)
- 主機名帶下劃線在 k3s 異常
export K3S_NODE_NAME=${HOSTNAME//_/-}將下劃線替換成中劃線提供給 k3s 安裝腳本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 安裝和配置加速器(國內源):
- 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
- 開機啓動
sudo systemctl enable docker
就這麼寫!都是一點一點查到的經驗!json
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
節點端口範圍1-65000
--no-deploy traefik
不安裝traefik (後續用 rancher )--write-kubeconfig ~/.kube/config --write-kubeconfig-mode 666
設置kube配置文件到~/.kube/config
(和 k8s 路徑一致後續會少出問題)
全部機器:centos
#全部 node 節點安裝 nfs 客戶端 yum -y install nfs-utils systemctl start nfs && systemctl enable nfs
nfs主機:api
#master節點安裝nfs yum -y install nfs-utils #建立nfs目錄 mkdir -p /nfs/data/ #修改權限 chmod -R 777 /nfs/data #編輯export文件 tee /etc/exports <<-'EOF' /nfs/data *(rw,no_root_squash,sync) EOF #配置生效 exportfs -r #啓動rpcbind、nfs服務 systemctl restart rpcbind && systemctl enable rpcbind systemctl restart nfs && systemctl enable nfs
agent 加入集羣須要使用bash
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"
同 server 安裝參數,須要先獲取到 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 版本: 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
- 主機 9443 端口代理 rancher https 使用的 443 端口
- rancher 界面直接導入 K3S 集羣, 把 K3S 集羣當成 K8S 使用
#!/bin/sh set -e # 在線安裝腳本 # k3s 不建議安裝swap 系統內存小的時候沒有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 的內核通過 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其餘參數經過外部傳入 # 下劃線節點名不被支持 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節點安裝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"