当前位置: 首页 > news >正文

安装部署k3s

本文以arm64 cpu作为实验

K3s 是轻量级的 Kubernetes,精简了很多 K8s 组件,非常适合在性能较弱的机器上运行,支持 IoT 设备,支持 arm 架构,很适合在 vps 上轻量部署。正好手里有几台 vps,于是决定用 K3s 统一进行管理。

官网:K3s 官网

在官网下面有 Get Started 部分,列出了启动 server 和 agent 节点的简单命令,但是对我们而言还不够,所以参考官网文档进行安装配置。具体的安装文档可以参见:安装选项介绍。

K3s 安装

准备工作

由于 K3s 默认运行环境为 containerd,所以为了使用 Docker 作为运行时,需要先在各节点正常安装 Docker,安装过程不再赘述。

安装 master 节点

根据个人需求,按需设置 master 节点的安装参数。由于个人使用,不要多节点部署实现高可用,所以禁用 servicelb 组件。traefik 虽然是 K3s 自带的网络组件,但是其默认会占用 80 和 443 端口,所以也不打算使用。最后完整的安装参数为:

curl -sfL https://get.k3s.io | INSTALL_K3S_SKIP_SELINUX_RPM=true INSTALL_K3S_EXEC="--docker --disable servicelb --disable traefik --disable-cloud-controller" sh -
# 或使用国内镜像
curl -sfL http://rancher-mirror.cnrancher.com/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn INSTALL_K3S_SKIP_SELINUX_RPM=true INSTALL_K3S_EXEC="--docker --disable servicelb --disable traefik --disable-cloud-controller" sh -

安装完成之后我们可以通过 kubectl get node 来看一下节点的情况:

安装 agent 节点

由于 agent 节点需要与 master 节点进行通信校验,在安装时需要指定 token,所以需要从 master 节点获取安装 token:

root@ubuntu-master:~# cat /var/lib/rancher/k3s/server/node-token
K10995e6e37eec07447411d8f8fcf025c3ed6f9a134e30e896ac4c2a7c4f8e6b587::server:f0af86641d91b09cc7707f25586b77e5

然后与 master 节点类似,指定 agent 节点的参数进行安装:

curl -sfL https://get.k3s.io | K3S_URL=https://MASTER_URL:6443 K3S_TOKEN=NODE_TOKEN INSTALL_K3S_SKIP_SELINUX_RPM=true INSTALL_K3S_EXEC="--docker" sh -
# 或使用国内镜像
curl -sfL http://rancher-mirror.cnrancher.com/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn K3S_URL=https://MASTER_URL:6443 K3S_TOKEN=NODE_TOKEN INSTALL_K3S_SKIP_SELINUX_RPM=true INSTALL_K3S_EXEC="--docker" sh -

然后同样的方式,安装其他 agent 节点。

验证安装

各节点安装完成后,再次在 master 节点查看各节点状态:

K3s 配置

为 master 分配 worker 角色

默认情况下,master 节点只有 control-plane 和 master 两个角色,但是由于 master 节点性能过剩,所以可以为 master 节点添加 worker 角色来运行服务:

kubectl label node ${node} node-role.kubernetes.io/worker=worker

然后我们再来看一下节点信息:

在 agent 节点上使用 kubectl 命令

默认 agent 节点安装完毕后,是不能使用 kubectl 命令的:

我们可以通过环境变量指定配置文件位置,或在使用 kubectl 命令时指定配置文件位置,但为了方便使用需要 EXPORT 环境变量或者设置 alias 别名。不过我们可以把配置文件放在 ~/.kube/config,这样 kubectl 命令可以自动应用配置文件。把 master 节点机器上的 /etc/rancher/k3s/k3s.yaml 文件内容写入到 config 文件,不要忘记修改 server 地址改为 master 节点地址:

然后我们再来执行下 kubectl 命令,执行正常:

安装 Kubernetes 仪表盘

参考文档:Kubernetes 仪表盘

部署仪表盘程序

首先直接用 Kubernetes 官方的推荐配置进行部署:

GITHUB_URL=https://github.com/kubernetes/dashboard/releases
VERSION_KUBE_DASHBOARD=$(curl -w '%{url_effective}' -I -L -s -S ${GITHUB_URL}/latest -o /dev/null | sed -e 's|.*/||')
k3s kubectl create -f https://raw.githubusercontent.com/kubernetes/dashboard/${VERSION_KUBE_DASHBOARD}/aio/deploy/recommended.yaml
配置仪表盘角色

按文档创建用户相关 yml 配置文件:

dashboard.admin-user.yml

apiVersion: v1
kind: ServiceAccount
metadata:name: admin-usernamespace: kubernetes-dashboard

dashboard.admin-user-role.yml

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:name: admin-user
roleRef:apiGroup: rbac.authorization.k8s.iokind: ClusterRolename: cluster-admin
subjects:- kind: ServiceAccountname: admin-usernamespace: kubernetes-dashboard

然后部署用户角色配置:

k3s kubectl create -f dashboard.admin-user.yml -f dashboard.admin-user-role.yml

最后获取仪表盘 token 以供访问:

k3s kubectl -n kubernetes-dashboard describe secret admin-user-token | grep '^token'

测试访问仪表盘

由于 Kubernetes 仪表盘运行在集群内部,无法直接从外部访问,所以我们需要使用集群代理。打开一个新窗口,并执行一下命令开启代理:

k3s kubectl proxy

然后可以通过 http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/ 来访问 Kubernetes 仪表盘。

或是直接使用端口转发,但是同样需要保持前台运行:

# 首先获取 service name 和暴露端口
kubectl get service -nkubernetes-dashboard
# 然后进行端口转发
kubectl port-forward service/kubernetes-dashboard 8443:443 -nkubernetes-dashboard
# 如果需要远端访问的话
kubectl port-forward service/kubernetes-dashboard 8443:443 -nkubernetes-dashboard --address 0.0.0.0
配置端口转发

为了使用方便,当然不能每次都打开终端启动代理来访问 Kubernetes 仪表盘。但是由于我们安装的时候没有安装 lb 和网络组件,所以只能使用 NodePort 来对外暴露服务。同理也适用于其他服务。

首先打开 Kubernetes 仪表盘,切换到 kubernetes-dashboard 命名空间,然后打开 Service tab 页,编辑 kubernetes-dashboard 项。将配置文件中 type 的值改为 NodePort,然后在 ports 下面添加 nodePort: 31001,其中 31001 是宿主机要监听的端口号,修改完成后点击更新应用配置。

注意,由于 NodePort 限制,默认限制端口范围只能为 30000-32767,具体可以看 kubernetes 官方文档:NodePort 类型。

配置更新后就可以直接从外部用浏览器访问宿主机映射之后的端口,或者再结合反代对外暴露使用。

agent 节点
sudo curl -sfL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn K3S_URL=https://192.168.1.198:6443 K3S_TOKEN="K1000c2db0112a1da167a65656913146d0a35c54a0b040a21e95c0dab8af39dbd4d::server:af39cf7f247c858b248131b320615697" sh -
 


文章转载自:

http://3BRPyw7W.rqknq.cn
http://OwPacd3e.rqknq.cn
http://ClSGJHHW.rqknq.cn
http://BywBGsWa.rqknq.cn
http://QZslGlnH.rqknq.cn
http://gCLX4aCT.rqknq.cn
http://uZjNDNHa.rqknq.cn
http://7X6djxB0.rqknq.cn
http://CFwsemAS.rqknq.cn
http://j4YTsWN6.rqknq.cn
http://OWKuCjjU.rqknq.cn
http://55or3HRp.rqknq.cn
http://6TArotXA.rqknq.cn
http://6Rs5OG8G.rqknq.cn
http://Mf1RvE4L.rqknq.cn
http://fszfnfy0.rqknq.cn
http://g51ThD01.rqknq.cn
http://nYrf9CXr.rqknq.cn
http://30SQVh5b.rqknq.cn
http://7wfdePhe.rqknq.cn
http://NBq20pfG.rqknq.cn
http://4u4pP02n.rqknq.cn
http://hg2FhOVS.rqknq.cn
http://kKmWEuWW.rqknq.cn
http://5seXZe4p.rqknq.cn
http://Ndktx70w.rqknq.cn
http://M6S3BN0F.rqknq.cn
http://BvydscQ8.rqknq.cn
http://Qan4VHwA.rqknq.cn
http://Bac3d2Ot.rqknq.cn
http://www.dtcms.com/a/363199.html

相关文章:

  • MySQL 8.0 窗口函数详解:让数据分析更简单高效
  • 核心理念:用“图像序列 + 光流插帧”降低硬件需求
  • UNet改进(37):AxialDynamicConv2D原理剖析与实战应用
  • GoLand IDE 无法识别 Go 工作区中的引用,如何解决?
  • 解决方法:QT打开正常的以前旧版本项目运行却报错的原因和解决方法
  • 猫头虎AI分享:无需OCR,基于ColQwen2、Qwen2.5和Weaviate对PDF进行多模态RAG的解决方案
  • Suno AI 新功能上线:照片也能唱歌啦!
  • 【GPT入门】第64课 Ilamaindex初步认识与llm幻觉解决方法
  • 高效对象属性复制工具
  • WEWA、VLA、世界模型,辅助驾驶进入GPT时代
  • 使用 Gulp + Webpack 打造一个完整的 TypeScript 库构建流程
  • STL库——deque/priority_queue
  • Mysql安全之 TDE ,列加密,审计日志
  • SpringCloud(6)-优雅实现远程调用-OpenFeign
  • 基于springboot的“衣依”服装销售平台
  • git通过https和SSH上传gitee仓库
  • MongoDb(①免安装)
  • ​​​​​​​Blender 重拓扑修改器实战指南:从基础操作到细节优化​
  • Meta AIUCSD放大招:DeepConf 让大语言模型推理既快又准,84.7%的token节省+近乎完美的准确率!
  • WMT2014:机器翻译领域的“奥林匹克盛会“
  • 大模型RAG项目实战:RAG技术原理及核心架构
  • (TMLR-2024)DINOv2:在无监督条件下学习鲁棒的视觉特征
  • 【Element-Plus】媒体预览模态框优化实战:从复杂到简洁的设计之路
  • WHAT - HTMLRewriter 介绍(页面优化、SEO、广告注入)
  • C++入门自学Day17-- 模版进阶知识
  • 从程序员到「认识罕见病 DAO」发起人,他用 Web3 承载爱与责任
  • C# 简述委托,Func与Action委托。 他们之前有什么区别?
  • MCU上跑AI—实时目标检测算法探索
  • 将css中的线性渐变,径向渐变,锥心渐变,转成canvas中的渐变
  • 【高并发内存池】三、线程缓存的设计