处理 Rancher 连接节点 "Cluster agent is not connected"
故障场景描述在 K3s 集群经历长时间运行(如 2 年以上)或底层容器运行时(Containerd)崩溃重启后,Rancher 界面显示集群状态为 Unavailable,错误提示通常为 "Cluster agent is not connected"。 故障诊断流程第一阶段:排查 K3s 节点健康度在手动处理 Rancher 连接前,必须确保 K3s 核心服务已恢复。 检查容器运行时状态: 12# 如果报错 connection refused,说明 containerd 没起crictl ps 检查孤儿挂载点(Device busy):Kubelet 频繁报错 device or resource busy 会导致 API Server 响应极慢,进而撑挂 Rancher 隧道。 12# 查找并懒卸载残留路径grep "kubelet/pods" /proc/mounts | awk '{print $2}' | xargs -I {} umount -l {...
K3s 介绍
之所以叫做 K3s 是因为希望安装的 Kubernetes 在内存占用方面只是一半的大小,而一半大的东西就是一个 5 个字母的单词,简写为 K3s。 K3s 特点 轻量级且完整:K3s 是由 Rancher Lab 开源的轻量级 Kubernetes。K3d 完美继承了 K3s 的简单、快速和占用资源少的优势,镜像大小只有 100 多 MB,启动速度快,支持多节点集群。虽然 K3s 对 Kubernetes 进行了轻量化的裁剪,但是提供了完整的功能,像 Istio 这样复杂的云原生应用都可以在 K3s 上顺利运行。 支持多架构:因为 K3s 本身应用场景主要在边缘侧,所以支持的设备和架构很多,如 ARM64 和 ARMv7 处理器。很多老旧 PC 和树莓派这样的设备都可以拿来做成 K3s 集群,为本地研发测试燃尽最后的生命。 单二进制文件打包:K3s 把 Kubernetes 相关的组件,比如 kube-apiserver、kube-controller-manager 都打包到同一个二进制文件里面,这样的话,只需要启动这个文件就可以快速启动对应的组件。 灵活的存储后端:使用...
K3s 在启动后修改配置参数
参考:https://github.com/k3s-io/k3s/discussions/5434#discussioncomment-2568382 例如修改端口和单节点最大 Pod 数量(apiserver 参数配置在 master)Master 节点编辑 /etc/systemd/system/k3s.service(如果是使用 etcd 作为存储,配置文件在 /etc/systemd/system/multi-user.target.wants/k3s.service) 1234ExecStart=/usr/local/bin/k3s \ server \ '--kubelet-arg=max-pods=300' \ '--kube-apiserver-arg=service-node-port-range=30000-40000' 重新加载并重启服务: 12systemctl daemon-reloadsystemctl restart k3s Node 节点编辑 /etc/systemd/system/k3...
记录 K3s 的升级过程(v1.21.7+k3s1 -> v1.24.3+k3s1)
参考官网链接:https://docs.rancher.cn/docs/k3s/upgrades/_index/ 注:如果要对 server/master 节点升级,绝对不要在流量高峰场景下进行 如果不希望清理所有容器及网络组件,不要轻易使用 k3s-killall.sh 脚本 官方文档描述升级过程为高可用模式,但最好还是在流量低峰期进行升级 否则可能会导致部署单元多个 Pod 都部署在同一节点,然后进行了 Pod 转移,如下 Kubernetes 在 1.22 版本新增了安全 sysctl 参数 net.ipv4.ip_unprivileged_port_start,且需要将内核版本升级至 4.4 以上:https://kubernetes.io/docs/tasks/administer-cluster/sysctl-cluster/#enabling-unsafe-sysctls 我的 sysctl 配置: 1234567891011121314151617181920# 将桥接的 IPv4 流量传递到 iptables 的链,禁用 swapcat >...
分布式块存储 Longhorn
官方文档 记录下 Longhorn 的使用 - Rancher Lab 提供的开源分布式块存储方案 Longhorn 支持以下架构: AMD64 ARM64(实验性) Longhorn 需要 open-iscsi、curl、findmnt、grep、awk、blkid、lsblk 的依赖(是否需要单独安装可以使用这个脚本进行验证,CentOS 7 有可能需要单独安装下 jq 和 open-iscsi) 利用 Rancher 安装在 Rancher UI 上选择自己的集群,然后找到对应 App 安装即可,v2.6.3 测试没问题(尝试用 kubectl 安装的时候告诉我缺少 NODE_NAME ENV,但是 Rancher 就正常):https://longhorn.io/docs/1.2.3/deploy/install/install-with-rancher/ 查看对应几个 Node 是否正常创建 Longhorn默认数据路径: 1ls /var/lib/longhorn 界面 创建应用进行测试应用 yaml 创建 PVC 和 pod pvc.yaml123456...
K3s/containerd 的一些配置(加速器、私有仓库)
K3s 私有镜像仓库配置 Containerd 配置镜像仓库 参考 Kubernetes 在 Changelog 中宣布自 Kubernetes 1.20 之后将弃用 Docker 作为容器运行时之后,containerd 成为下一个容器运行时的热门选项。虽然 containerd 很早就已经是 Docker 的一部分,但是纯粹使用 containerd 还是给大家带来了诸多困扰,本文将介绍如何使用 containerd 配置镜像仓库和加速器。 本文将以 K3s 为例对 containerd 进行配置,如果您的环境未使用 K3s 而是使用的 Kubernetes,你也可以参考本文来配置 containerd 的镜像仓库,因为 containerd 的配置是通用的。 关于 K3s 和 containerdK3s 是一个轻量级 Kubernetes 发行版,二进制大小小于 100MB,所需内存不到 Kubernetes 的一半。K3s 为了降低资源消耗,将默认的 runtime 修改为 containerd,同时也内置了 Kubernetes CLI 工具 crictl 和 ct...
Ingress - K3s 之 Traefik 的使用
前言IngressService 可能会有很多,如果每个资源都绑定一个 node port 的话,主机则需要开放外围的端口进行服务调用,管理上会比较混乱。 比较优雅的方式是通过一个外部的负载均衡器,比如 Nginx,绑定固定的端口比如 80,然后根据域名/服务名向后面的 Service IP 转发,但是这里的问题在于:当有新服务加入的时候如何修改 Nginx 配置? 手动改或者 Rolling Update Nginx Pod 都是不现实的。 对于这个问题,Kubernetes 给出的七层解决方案是:Ingress TraefikTræfik 是一个为了让部署微服务更加便捷而诞生的现代 HTTP 反向代理、负载均衡工具。它支持多种后台(Docker、Swarm、Kubernetes、Marathon、Mesos、Consul、Etcd、Zookeeper、BoltDB、Rest API、file...)来自动化、动态的应用它的配置文件设置。 Traefik 是 K3s 里面的 Ingress Controller,支持负载均衡和反向代理,类似于 Nginx。 Traef...
K3s 使用 Token 访问 API 接口
每次创建了新的 namespace 下都会生成一个默认的 token,名为 default-token-xxxx。default 就相当于该 namespace 下的一个用户。也可以考虑新建 service account 来获取 token。 查看 token secret123[root@k3s-release-server1 ~]# kubectl get secretsNAME TYPE DATA AGEdefault-token-6f7xb kubernetes.io/service-account-token 3 16m 使用脚本方式访问 API12345678#!/usr/bin/env bashurl=$1token=`kubectl get secrets|awk 'NR>1'|awk '{print $1}'|xargs -i kubectl describe secret...
K3s 和 K8s 中 Leader 选举方案的区别
参考:https://www.reddit.com/r/kubernetes/comments/kqx5ql/difference_between_master_and_worker_concepts_in/ Leader 选举方案的不同在于用于备份主服务器的数据库 Leader 选举是针对分布式数据库 etcd 的。由于 etcd 往往存在于 Kubernetes 中的主节点上,所以会和 K3s 混淆。 K3s 默认使用 SQLite,因此不需要 leader 选举。
