Debian11之 K3s 部署 K8S 集群

K3S 架构方案

  • Server 节点指的是运行 k3s server 命令的主机,control plane 和数据存储组件由 K3s 管理
  • Agent 节点指的是运行 k3s agent 命令的主机,不具有任何数据存储或 control plane 组件
  • Server 和 Agent 都运行 kubelet、容器运行时和 CNI
    在这里插入图片描述

基于 SQLite 的单机架构

在这里插入图片描述
在此配置中,每个 Agent 节点都注册到同一个 Server 节点。K3s 用户可以通过调用 Server 节点上的 K3s API 来操作 Kubernetes 资源

基于 Etcd 的高可用架构

在这里插入图片描述
两个或多个 Server 节点为 Kubernetes API 提供服务并运行其他的 control plane 服务
嵌入式etcd数据存储(相对于嵌入式SQLite数据存储用于单服务器设置)

基于 外部数据库 的高可用架构

在这里插入图片描述

K3S 安装要求

官网文档

先决条件

无论 K3s 在容器中运行还是作为原生 Linux 服务运行,每个运行 K3s 的节点都应满足以下最低要求:

两个节点不能具有相同的主机名。如果多个节点将具有相同的主机名,或者主机名可以被自动配置系统重复使用,请使用 --with-node-id 选项为每个节点附加一个随机后缀,或者使用 --node-name 或 $K3S_NODE_NAME 为添加到集群的每个节点设计一个独特的名称
hostnamectl set-hostname master1 && hostname # 在主节点1设置
hostnamectl set-hostname node1 && hostname # 在从节点2设置
vi /etc/hosts # 所有节点编辑文件,注意不能有空格
192.168.111.50 master1
192.168.111.51 node1 
systemctl disable nftables.service && systemctl stop nftables.service && systemctl status nftables.service # 所有节点关闭防火墙
swapoff -a && sed -i 's/.*swap.*/#&/' /etc/fstab # 所有节点永久禁用各节点的交换分区
timedatectl set-timezone Asia/Shanghai # 所有节点同步时区

操作系统条件

Red Hat/CentOS Enterprise Linux 操作系统:
1、systemctl disable firewalld --now # 关闭 firewalld
# 如果要保持启用 firewalld,默认情况下需要以下规则:
# firewall-cmd --permanent --add-port=6443/tcp #apiserver
# firewall-cmd --permanent --zone=trusted --add-source=10.42.0.0/16 #pods
# firewall-cmd --permanent --zone=trusted --add-source=10.43.0.0/16 #services
# firewall-cmd --reload
#
2、systemctl disable nm-cloud-setup.service nm-cloud-setup.timer && reboot # 禁用 nm-cloud-setup 并重新启动节点
Ubuntu 操作系统:
1、ufw disable # 关闭 ufw
# 如果要保持启用 ufw,默认情况下需要以下规则:
# ufw allow 6443/tcp #apiserver
# ufw allow from 10.42.0.0/16 to any #pods
# ufw allow from 10.43.0.0/16 to any #services
Raspberry Pi 操作系统:Raspberry Pi OS 基于 Debian,可能会受到旧 iptables 版本的影响
1、标准 Raspberry Pi OS 不会在启用 cgroups 的情况下开始。K3S 需要 cgroups 来启动 systemd 服务。你可以通过将 cgroup_memory=1 cgroup_enable=memory 附加到 /boot/cmdline.txt 来启用 cgroups
# cmdline.txt:
# console=serial0,115200 console=tty1 root=PARTUUID=58b06195-02 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait cgroup_memory=1 cgroup_enable=memory
2、sudo apt install linux-modules-extra-raspi # 从 Ubuntu 21.10 开始,对 Raspberry Pi 的 vxlan 支持已移至单独的内核模块中

网络条件

K3s Server 需要 6443 端口才能被所有节点访问
使用 Flannel VXLAN 时,节点需要能够通过 UDP 端口 8472 访问其他节点,
使用 Flannel Wireguard 后端时,节点需要能够通过 UDP 端口 5182051821(使用 IPv6 时)访问其他节点。
该节点不应侦听任何其他端口。如果不使用 Flannel 并提供自己的自定义 CNI,那么 K3s 不需要 Flannel 所需的端口。
如果要使用 Metrics Server,所有节点必须可以在端口 10250 上相互访问
如果计划使用嵌入式 etcd 来实现高可用性,则 Server 节点必须可以在端口 23792380 上相互访问

在这里插入图片描述

大型集群对硬件的要求

对于硬件的要求取决于 K3s 集群的大小。对于生产和大型集群,我们建议使用具有外部数据库的高可用性设置
集群性能取决于数据库性能。为确保最佳速度,我们建议为 K3s 集群使用 SSD 磁盘。在云提供商上,你还需使用能获得最大 IOPS 的最小大小
考虑增加集群 CIDR 的子网大小,避免用尽 Pod 的 IP。你可以通过在启动时将 --cluster-cidr 选项传递给 K3s Server 来实现这一点
在这里插入图片描述
在这里插入图片描述

K3S 在线脚本安装

官网文档
当前搭建的是单节点,生产环境是需要做高可用的,高可用详情参考这边文章

Server安装

# K3s 提供了一个安装脚本,可以方便地将其作为服务安装在基于 systemd 或 openrc 的系统上
# curl -sfL https://get.k3s.io | sh -
# 中国用户,可以使用以下方法加速安装:
curl -sfL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn sh -
curl -sfL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn sh -s - server \
--datastore-endpoint="mysql://lixing:LI1234MYSQL!@tcp(192.168.111.11:3306)/k3s"

在这里插入图片描述
运行此安装后:
1、K3s 服务将会作为一个systemd服务运行, 支持开机自启动 、奔溃自动重启
2、将自动安装以下程序到 /usr/local/bin,包括 crictl ctr k3s k3s-killall.sh k3s-uninstall.sh kubectl
3、自动创建 kubeconfig 文件到 /etc/rancher/k3s/k3s.yaml,由 K3s 安装的 kubectl 将会自动使用该文件

  • 查看 K3S Server 运行状态
systemctl status k3s
  • 关闭 K3S Server 服务
systemctl stop k3s
  • 重启 K3S Server 服务
systemctl restart k3s
  • 查看 TOKEN
cat /var/lib/rancher/k3s/server/node-token
K1079b8fffb160738d67d89c3755f0c2dcf043a966a373e2fc147d4475bbfe87424::server:54433a6f55b50c042f37350fd1551fbd

Agent安装

# 要安装其他 Agent 节点并将它们添加到集群
# curl -sfL https://get.k3s.io | K3S_URL=<https://myserver:6443> K3S_TOKEN=<mynodetoken> sh -
# 中国用户,可以使用以下方法加速安装:
# K3S_TOKEN 使用的值存储在 Server 节点上的 /var/lib/rancher/k3s/server/node-token 中
curl -sfL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn \
K3S_URL=https://192.168.111.50:6443 \
K3S_TOKEN=K104152af4547b9171e9d53fef1fcf12df8339e5bbfeec33aa0f4e98da1fa2869e7::server:ab66e6a096ddc3ea282de0dbd13f4cae \
sh -

在这里插入图片描述
K3S_URL 参数会导致安装程序将 K3s 配置为 Agent 而不是 Server:
1、K3s Agent 将注册到在 URL 上监听的 K3s Server
2、将自动安装以下程序到 /usr/local/bin,包括 crictl ctr k3s k3s-killall.sh k3s-uninstall.sh kubectl

  • 查看 K3S agent 运行状态
systemctl status k3s-agent
  • 关闭 K3S Server 服务
systemctl stop k3s-agent
  • 重启 K3S Server 服务
systemctl restart k3s-agent

验证 K3S 安装

k3s kubectl get node

在这里插入图片描述

升级 K3S

官方地址

卸载 K3S

  • 卸载 k3s
/usr/local/bin/k3s-uninstall.sh
  • 卸载 k3s-agent
/usr/local/bin/k3s-agent-uninstall.sh

K3S 离线二进制安装

二进制文件下载地址

# 下载2文件:镜像文件(k3s-airgap-images-$ARCH.tar) 和 K3s执行文件(k3s-$ARCH)
mkdir -p /var/lib/rancher/k3s/agent/images/
cp ./k3s-airgap-images-$ARCH.tar /var/lib/rancher/k3s/agent/images

Server安装

INSTALL_K3S_SKIP_DOWNLOAD=true ./install.sh

Agent安装

INSTALL_K3S_SKIP_DOWNLOAD=true K3S_URL=https://<SERVER_IP>:6443 K3S_TOKEN=<YOUR_TOKEN> ./install.sh
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Debian 11部署Kubernetes需要以下步骤: 1. 配置主机名和静态IP地址 使用以下命令可以修改主机名和IP地址: ``` sudo hostnamectl set-hostname <hostname> sudo nano /etc/network/interfaces ``` 在interfaces文件中添加以下内容: ``` auto enp0s8 iface enp0s8 inet static address <ip_address> netmask <netmask> gateway <gateway_address> dns-nameservers <dns_server_address> ``` 2. 安装Docker和Kubernetes 使用以下命令安装必要的软件: ``` sudo apt update sudo apt install apt-transport-https ca-certificates curl software-properties-common gnupg2 curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add - sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable" sudo apt update sudo apt install docker-ce docker-ce-cli containerd.io sudo systemctl start docker sudo systemctl enable docker curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add - echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list sudo apt update sudo apt install -y kubelet kubeadm kubectl sudo systemctl enable kubelet ``` 3. 初始化Kubernetes集群 使用以下命令初始化Kubernetes集群: ``` sudo kubeadm init --pod-network-cidr=10.244.0.0/16 ``` 其中,--pod-network-cidr参数指定了容器网络的地址。 4. 配置kubectl命令行工具 使用以下命令配置kubectl命令行工具: ``` mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config ``` 5. 安装网络插件 使用以下命令安装网络插件: ``` kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml ``` 6. 加入节点 使用以下命令加入节点: ``` sudo kubeadm join <ip_address>:6443 --token <token> --discovery-token-ca-cert-hash <hash> ``` 其中,<ip_address>是主节点的IP地址,<token>和<hash>是初始化集群时生成的。 以上是在Debian 11部署Kubernetes的基本步骤。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大能嘚吧嘚

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值