处理 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 {...
分布式块存储 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...
Rancher 导入集群
导入集群 进入之后选择导入已有集群,随后进入此页面,点击创建 对于自签证书选择第二项,复制,然后在 K3s server 节点执行 问题error: no objects passed to apply 这里的问题主要是无法连接到部署 Rancher 的主机,无法获取 yaml 文件导致的。可以将 yaml 文件直接下载到 K3s server,再手动执行 kubectl apply -f {xxx}.yaml (针对配置了 --tls-san 参数 - 自签证书)可能会执行失败,提示域名 rancher.k3s.cn 不识别(前面的证书域名以及对应 IP) 更新资源的字段 123456789101112131415161718192021222324252627282930313233343536# because the cert was made by myself, so i need configured the hosts, otherwise it does not know my cert's domain name, un...
在K8S中实现SpringBoot零宕机发布:滚动更新、优雅停机与弹性伸缩
引言在云原生时代,保证服务的稳定性和高可用性至关重要。本文将深入探讨如何结合 Kubernetes (K8s) 与 Spring Boot,实现零宕机发布。我们将覆盖以下核心主题: 健康检查:确保流量只被路由到健康的实例。 滚动更新:平滑地升级应用,不中断服务。 优雅停机:安全地关闭应用,避免数据丢失或请求失败。 弹性伸缩:根据负载自动调整实例数量。 Prometheus 监控:收集关键指标,洞察应用性能。 配置分离:实现镜像复用,提高交付效率。 参考资料: 微信公众号文章 Stack Overflow: Actuator health endpoint returns OUT_OF_SERVICE Spring Boot Actuator: Kubernetes Probes 1. 健康检查健康检查是实现零宕机发布的基础。K8s 通过就绪探针 (Readiness Probe) 和存活探针 (Liveness Probe) 来判断应用实例是否准备好接收流量或是否需要重启。 就绪探针 (Readiness): 告诉 K8s 应用是否准备好处理请求。如果失败,K8s...
利用 Fabric8 结合 Git Hook 动态配置 K8s 资源
背景 在多分支并行开发的集群下,新建分支以及删除分支都需要开发人员手动维护Istio/K8s的资源对象 目的 结合git hook -》 sync程序 -》 kubernetes API 流程,自动维护k8s以及istio资源对象,减少成本,提高开发效率 技术栈GitLab Api 使用GitLab Api,获取项目分支信息 123456 <!-- https://mvnrepository.com/artifact/org.gitlab/java-gitlab-api --><dependency> <groupId>org.gitlab</groupId> <artifactId>java-gitlab-api</artifactId> <version>${gitlab.version}</version></dependency> gitlab api认证 123456789101112131415161...
K8s CRD 开发学习 - client_go 连接 K8s(Minikube)
client-go 远程连接 K8s(Minikube)复制配置文件到本地 先将 minikube 拷贝到本地(或者只拷贝 .kube/config 需要的文件) 1cp -r /home/docker_user/.minikube /root/ 拷贝 .kube 文件夹 1cp -r /home/docker_user/.kube /root/ 添加 SSH 端口转发本地肯定是访问不了的,所以需要在本地试验环境添加远程主机的端口转发。 Windows 端口转发,打开 Windows 的 cmd,输入命令: 1234# 表示在本地启动 18443 端口,与远程主机 root@192.168.56.101 建立连接,端口转发到远程主机 192.168.49.2:8443 上去,执行完窗口会 hold 住# 192.168.49.2 是 k8s 节点 ip,使用 `minikube node list` 查看ssh -L 18443:192.168.49.2:8443 -N -f docker_user@192.168.56.101 此时可以在本地开发环境通过 c...
K8s CRD 开发学习 - 安装 K8s(Minikube)
安装 Docker使用官方安装脚本自动安装 Docker12curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyunsystemctl enable docker 配置镜像加速12345678mkdir -p /etc/dockertee /etc/docker/daemon.json <<-'EOF'{ "registry-mirrors": ["https://0vlzmqf0.mirror.aliyuncs.com"]}EOFsystemctl daemon-reloadsystemctl restart docker 安装 Minikube12curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64install minikube-linux-amd64 /usr/local/bin/mi...
关于 Rancher 的证书轮换策略
参考:https://docs.rancher.cn/docs/rancher2/cluster-admin/certificate-rotation/_index/#%E7%8B%AC%E7%AB%8B%E5%AE%B9%E5%99%A8-rancher-server-%E8%AF%81%E4%B9%A6%E6%9B%B4%E6%96%B0 集群部署略,参考官网 Docker Rancher Server 证书更新证书未过期证书未过期时,Rancher Server 可以正常运行。升级到 Rancher v2.0.14+、v2.1.9+、v2.2.2+ 后会自动检查证书有效期,如果发现证书即将过期,将会自动生成新的证书。所以独立容器运行的 Rancher Server,只需在证书过期前把 Rancher 版本升级到支持自动更新 SSL 证书的版本即可,无需做其他操作。 证书已过期如果证书已过期,那么 Rancher Server 无法正常运行。即使升级到 Rancher v2.0.14+、v2.1.9+、v2.2.2+ 也可能会提示证书错误。如果出现这种情况,可通过以下操作进行...
Rancher 的角色权限分配实践
Rancher 分为 3 种角色,各自适用范围也不同 全局 集群 项目 项目下又包括了多个 namespace 先使用管理员登录创建 1 个可以管理全局的账户和角色的用户(全局管理员账户) 注:此用户仅用来管理用户和角色,admin 权限太大,之后不再使用它进行登录 用户名:UserManager 拥有角色: Manage Roles Manage Users 退出管理员,然后使用全局管理员账户创建一个集群管理员账户(集群管理员账户)全局权限:Standard User 用户名:ClusterManager 用 ClusterManager 身份登录并进行创建集群(略) 创建集群或项目时,Rancher 会自动将创建者分配为所有者。分配了所有者角色的用户可以在集群或项目中给其他用户分配角色。 然后使用 UserManager 为各集群创建用户一个 ClusterManager 账户下可以创建多个集群,例如 release/production。 1. 项目管理员 ProjectsAdmin 全局权限:Standard User 创建和管理项目,查看监控等,...
Rancher 的安装
官网的话:Rancher 是为使用容器的公司打造的容器管理平台。 安装 RancherDocker 单节点安装 如果容器内的 80 端口映射到宿主机的 8xxx,那么容器内的 443 端口要映射到宿主机的 8443。如果容器内的 80 端口映射到宿主机的 9xxx,那么容器内的 443 端口要映射到宿主机的 9443。 docker 123456##############使用存储卷###############docker run -d --privileged --name rancher-server \--restart=unless-stopped \-p 8080:80 -p 8443:443 \-v /opt/rancher:/var/lib/rancher \rancher/rancher:v2.6.3 docker-compose 1234567891011services: rancher-server: image: rancher/rancher:v2.6.3 container_name: rancher-server ...
