首页 > 其他分享 >搭建 K3s

搭建 K3s

时间:2024-09-04 17:17:42浏览次数:11  
标签:k3s K3S K3s rancher Rancher 安装 搭建

概述

K3s 是一个轻量级的 Kubernetes 发行版,能以较少的代价快速搭建一个生产可用的 K8s 集群。参考:K3s - 轻量级 Kubernetes | Rancher文档

本文介绍的是通过其提供的“安装脚本”的方式搭建 K3s 的方法,并结合实际生产使用经验进行相关的配置。

准备工作

明确 K3s 版本

通过 K3s 安装脚本会默认使用 “stable” 的发布 Channel,如果没有特殊要求,保持默认值即可。参考:基础升级 | Rancher文档

如果需要在 K3s 上搭建 Rancher,则需要使用受 Rancher 支持的 K3s 版本,请参考 https://www.suse.com/suse-rancher/support-matrix/all-supported-versions/ 了解其版本对应关系。

准备镜像

由于常见的 Docker Registry 均已被墙,即使通过国内镜像站提供的 K3s 安装脚本亦不能稳定的下载镜像,仅此通过离线的方式提前准备好相关的镜像文件。

参考 K3s 的离线安装步骤,先手动从 K3s GitHub Release 页面获取对应 K3s 版本和架构的镜像 tar 文件,再将其放置到 K3s 的 images 目录下(推荐下载 zst 格式的压缩包,其体积最小)。

参考:离线安装 | Rancher文档

mkdir -p /var/lib/rancher/k3s/agent/images/
cp ./k3s-airgap-images-$ARCH.tar.zst /var/lib/rancher/k3s/agent/images/

K3s 默认使用并内置 containerd 容器运行时,会在启动运行时自动导入上述镜像。

准备配置文件

推荐使用”CONFIG 文件”的方式来对 K3s 进行配置。请编写配置文件并将其放置于 /etc/rancher/k3s/config.yaml。参考:如何使用标志和环境变量 | Rancher文档

注意,直接调整 K3s 的Systemd 服务定义文件虽可以实现对 K3s 的配置,但在“更新 K3s”时安装脚本仍会重新创建并生成 Systemd 服务定义文件,导致我们修改的内容被覆盖,因此不建议这么做。

这里提供我常用的配置文件内容:

disable:
  - traefik
flannel-backend: host-gw
kube-apiserver-arg:
  - 'service-node-port-range=80-32767'
  - 'event-ttl=168h0m0s'
kubelet-arg:
  - 'container-log-max-files=10'
  - 'container-log-max-size=500Mi'

配置内容如下:

  • --disable=traefik — 关闭 K3s 内置的 traefik,后续配置 Ingress-Nginx Controller;
  • --flannel-backend=host-gw — 采用 host-gw 模式以提高性能;
  • --kube-apiserver-arg 'service-node-port-range=80-32767' — 将 NodePort 的端口范围扩大到 80 端口(目的是便于直接给 Nginx Ingress 使用服务器的 80、443 端口,否则 Ingress 必须使用 3xxxx 的 NodePort 端口,无法正确设置 Forwarded 头且使用上不直观);
  • --kube-apiserver-arg 'event-ttl=168h0m0s' — 事件保留时间(默认为 1h);
  • --kubelet-arg 'container-log-max-files=10' — 容器日志文件保留个数;
  • --kubelet-arg 'container-log-max-size=500Mi' — 容器单个日志文件的大小。

其中后三条配置均是为了保留更多的事件、日志信息,若 K3s 仅做测试使用时可以不进行配置。

如果需要使用外部数据库(如 MySQL)来实现高可用安装,相关配置亦定义在该文件中。参考:使用外部数据库实现高可用安装 | Rancher文档

注意,并不是引入了外部数据库搭建了高可用集群,所以并不建议盲目引入外部数据库来增加部署的复杂度。高可用集群需要至少两个 Server 节点,并通过负载均衡或其他技术对外暴露固定的 Registry 地址。

参考:

安装 K3s

安装命令(国内加速)

curl -sfL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn sh -

安装命令中指定使用了中国国内的镜像站点来下载安装脚本和二进制文件。

参考:快速入门指南 | Rancher文档

离线安装

若环境完全断网,则可以使用离线安装。具体步骤如下:

  1. 保存 https://rancher-mirror.rancher.cn/k3s/k3s-install.sh 的安装脚本并将其上传到环境;
  2. K3s GitHub Release 页面获取你所运行的 K3s 版本的二进制文件,并将其放置在 /usr/local/bin
  3. 通过以下安装命令进行安装:
INSTALL_K3S_SKIP_DOWNLOAD=true ./install.sh

参考:离线安装 | Rancher文档

检查 K3s 运行状态并获取 kubeconfig

# 检查 K3s 运行状态
systemctl status k3s
kubectl get node
# 打印 kubeconfig
cat /etc/rancher/k3s/k3s.yaml

打印的 kubeconfig 无法直接使用,需调整输出中的 clusters.cluster[].server ,将 127.0.0.1 替换为实际的 IP 后才可导入 Lens 等工具。

升级 K3s

在 K3s 集群规模较小的情况下可以通过“安装脚本”升级 K3s。参考:基础升级 | Rancher文档

对应的升级命令与安装命令相同,使用相同的标志重新运行安装脚本即可。

可以通过环境变量 INSTALL_K3S_CHANNEL 指定特定的 Channel 或通过环境变量 INSTALL_K3S_VERSION 指定具体的版本,否则将默认升级到稳定 channel 的较新版本。

根据文档中的指引,升级时,先逐个升级 server 节点,然后再升级其他 agent 节点。

大型集群的升级则应该使用 自动升级 | Rancher文档

后续操作

按需添加 Worker / agent 节点

搭建 Worker 节点的安装命令与 Server 节点的安装命令类似,仅需增加环境变量 K3S_URLK3S_TOKEN 即可。

其中 K3S_URL 即 Server 节点的 Registry 地址,而 K3S_TOKEN 的值则是从 Server 节点的 /var/lib/rancher/k3s/server/node-token 中获取。

完整的 Worker 节点安装命令如下:

curl -sfL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn K3S_URL=https://<Server Node>:6443 K3S_TOKEN=<Node Token> sh -

注意,不要在 Worker 节点上放置 Server 节点所使用的 config.yaml。虽然Worker 节点亦支持使用“CONFIG 配置文件”,但其具体的配置项与 Server 节点是不同的,请参考:K3s Agent配置参考 | Rancher文档 了解更多。

如果是离线安装,对应的 Worker 节点安装命令为:

INSTALL_K3S_SKIP_DOWNLOAD=true K3S_URL=https://<Server Node>:6443 K3S_TOKEN=<Node Token> ./install.sh

备份 Server Token

/var/lib/rancher/k3s/server/token 中获取 Server Token 并妥善保存,因为从备份恢复和添加节点时都需要它。

注意,此处备份的是 Server Token,而非添加 Worker 时使用的 Node Token。

配置 Ingress-Nginx Controller

在 K8s 上搭建 Nginx Ingress

标签:k3s,K3S,K3s,rancher,Rancher,安装,搭建
From: https://www.cnblogs.com/some-blog/p/18396904/deploy-k3s

相关文章

  • VScode+STM32开发环境搭建
    VScode+STM32的开发环境搭建前言使用VScode开发STM32主要是因以下几个原因:1、经济受限:keil5需要收费啊;2、有VScode开发相关经验。开发环境搭建软件开发环境的搭建主要用到STM32CubeMX和VisualStudioCode两大软件;安装的步骤按正常的安装流程来即可。下载地址:STM3......
  • 基于数字孪生搭建的智慧地铁站管理平台
    数字孪生技术是指通过数学模型和实时数据同步反映实体系统运行状态的数字复制品建模。在智慧地铁站管理中,数字孪生技术的应用使得地铁站的运营管理更加高效、智能化,并提升了安全性和服务质量。以下是古河云科技小编整理的数字孪生搭建的智慧地铁站管理平台所带来的益处与特点:1.实......
  • 如何用Java SpringBoot+Vue搭建教学平台?中小学资源管理一步到位
    ✍✍计算机毕业编程指导师**⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流!⚡⚡Java、Python、微信小程序、大数据实战项目集⚡⚡......
  • 哥伦比亚TV:搭建中西方影视文化交流的桥梁
    在全球化的浪潮中,文化的交流与融合日益成为推动世界发展的重要力量。作为影视文化的重要载体,哥伦比亚TV不仅承载着传递高质量影视作品的使命,更致力于成为中西方影视文化交流的桥梁,促进不同文化之间的理解和尊重。哥伦比亚TV,作为好莱坞传奇影业哥伦比亚影业在华的重要分支,自诞......
  • iverilog+gtkwave搭建轻量级verilog仿真环境
    前言在之前用到的仿真工具只有vivado与modelsim,vivado的笨重不用多说,可能你搭建一个工程的时间比你看波形的时间还要长,modelsim倒是稍微轻一些,但步骤也较为繁琐,虽然我在之前也意外收获了modelsim的仿真脚本模板且屡试不爽,但还是觉得稍微有些麻烦,正好之前在学习tinyrv时安装了iver......
  • 取图、壁纸,表情包小程序源码系统搭建,已对接好流量主轻松变现
    取图、壁纸、表情包小程序是近年来在互联网平台上非常流行的一种应用形式,它们为用户提供了便捷的图片、壁纸和表情包获取途径,同时也为小程序开发者带来了收益。技术栈:前端:vue3+uniapp后端:PHP数据库:MySQL//app.jsApp({globalData:{images:[],//图片库w......
  • VM虚拟机安装ubuntu系统详细教程,手把手教你搭建Ubuntu系统
    1.打开虚拟机,在主界面中创建新的虚拟机2.选中典型点击下一步3.选中稍后安装操作系统,点击下一步4.选中Linux,版本中下拉选中Ubuntu64位,然后点击下一步5.给自己的Ubuntu虚拟机设置一个名字,位置可以选其他盘进行存放6.建议磁盘大小设置为60-100G之间,选中将虚拟磁盘拆分成......
  • 使用centos7搭建Cloudreve,在这条路上我尝试过自建、Owncloud等,恰巧最近发现了 Cloudre
     1.首先开始之前配置一个华为的源vi/etc/yum.repos.d/openstack.repo#内容如下[base]name=basebaseurl=https://repo.huaweicloud.com/centos/7/os/x86_64/enable=1gpgcheck=0[extras]name=extraxbaseurl=https://repo.huaweicloud.com/centos/7/extras/x86_64/......
  • Discuz论坛搭建
    1.永久关闭防火墙和setenforcesystemctlstopfirewalld#关闭防火墙systemctldisablefirewalld#永久关闭防火墙setenforce0#关闭setenforce0sed-i's/SELINUX=enforcing/SELINUX=disabled/g'/etc/selinux/config#永久关闭setenforce2. 安装httpd*和php,p......
  • 【Eureka】搭建Eureka Server,实现服务注册和服务发现
    1.Eureka介绍Eureka是NetflixOSS套件中关于服务注册和发现的解决⽅案.SpringCloud对Eureka进⾏了集成,并作为优先推荐⽅案进⾏宣传,虽然⽬前Eureka2.0已经停⽌维护,新的微服务架构设计中,也不再建议使用,但是⽬前依然有⼤量公司的微服务系统使⽤Eureka作为注册中⼼.官方文档......