本文已经过时请参考 傻瓜式教学: Debian安装k3s(长期维护版本)

k3s 是Rancher推出的轻量级 k8s.

升级debian10(buster)内核版本

sed -i 's/buster\/updates/bullseye-security/g;s/buster/bullseye/g' /etc/apt/sources.list

apt update
apt dist-upgrade -y
# apt install -t bullseye-backports linux-image-amd64 -y
# update-grub
# reboot
# 内核
Linux bj01 5.10.0-0.bpo.8-amd64 #1 SMP Debian 5.10.46-2~bpo10+1 (2021-07-22) x86_64 GNU/Linux

具体可以参考 Debian个人常用操作指南 升级内核部分。

安装 wireguard

#  所有节点需安装
apt install wireguard -y

安装docker

curl -fsSL https://download.docker.com/linux/debian/gpg | apt-key add -
echo "deb [arch=amd64] https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/debian bullseye stable" | tee /etc/apt/sources.list.d/docker.list
apt update
apt install -y docker-ce
# 腾讯云使用bip有问题 169.254.123.1/24, 请使用172.30.42.1/16
cat > /etc/docker/daemon.json <<EOF
{
  "registry-mirrors": ["https://dyucrs4l.mirror.aliyuncs.com"],
  "bip": "169.254.123.1/24",
  "max-concurrent-downloads": 10,
  "log-driver": "json-file",
  "log-level": "warn",
  "log-opts": {
    "max-size": "30m",
    "max-file": "3"
  },
  "storage-driver": "overlay2"
}
EOF
systemctl enable docker
systemctl daemon-reload
systemctl restart docker
docker info -f "{{json .ServerVersion }}"
docker pull registry.cn-beijing.aliyuncs.com/k7scn/tools
docker run --rm -v /usr/local/bin:/sysdir registry.cn-beijing.aliyuncs.com/k7scn/tools tar zxf /pkg.tgz -C /sysdir

部署控制平面master节点

上面安装docker/tools时, 默认内置了k3s,版本v1.18.19, 也可以自行下载其他版本的k3s替换

k3s --version
k3s version v1.18.19+k3s1 (a260c3c6)

# 执行安装, 默认开机启动
k3s.master.install

默认k3s.master.install配置参数如下:

ExecStart=/usr/local/bin/k3s \
    server \
    --docker \
    --flannel-backend wireguard \
    --no-deploy traefik,servicelb \
    --kube-proxy-arg "proxy-mode=ipvs" "masquerade-all=true" \
    --kube-proxy-arg "metrics-bind-address=0.0.0.0"

查看组件状态

k3s kubectl get cs
NAME                 STATUS    MESSAGE   ERROR
controller-manager   Healthy   ok
scheduler            Healthy   ok

部署计算worker节点

从master节点获取token

  • K3S_TOKEN : 加入集群所需的token,可以在控制节点上查看/var/lib/rancher/k3s/server/node-token 文件
  • K3S_URL: master节点地址
export K3S_URL=https://10.147.20.42:6443
export K3S_TOKEN=K102f2c1f6c878f693700c24b741d309d2ff4038ade912f0a44248781c04376e878::server:bc39d44d89042011b985f267eebe2b2f

k3s.worker.install

查看节点状态

~# kubectl get nodes
NAME    STATUS   ROLES    AGE   VERSION
k3s02   Ready    <none>   53m   v1.18.19+k3s1
k3s03   Ready    <none>   52m   v1.18.19+k3s1
k3s01   Ready    master   54m   v1.18.19+k3s1