修改本地hosts文件及外部访问机器本地hosts文件后,rancher UI网站仍然不能访问
原因排查
kubectl get svc
# 输出:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 4d17h
kubectl get svc -A
# 输出:
NAMESPACE NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
cattle-fleet-system gitjob ClusterIP 10.111.178.163 <none> 80/TCP 18h
cattle-provisioning-capi-system capi-webhook-service ClusterIP 10.109.173.131 <none> 443/TCP 4d16h
cattle-system rancher ClusterIP 10.108.22.229 <none> 80/TCP,443/TCP 18h
cattle-system rancher-webhook ClusterIP 10.110.157.18 <none> 443/TCP 18h
cert-manager cert-manager ClusterIP 10.97.116.89 <none> 9402/TCP 4d17h
cert-manager cert-manager-webhook ClusterIP 10.99.135.71 <none> 443/TCP 4d17h
default kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 4d17h
ingress-nginx ingress-nginx-controller LoadBalancer 10.102.90.59 192.168.21.157 80:31759/TCP,443:32560/TCP 4d17h
ingress-nginx ingress-nginx-controller-admission ClusterIP 10.110.70.3 <none> 443/TCP 4d17h
kube-system kube-dns ClusterIP 10.96.0.10 <none> 53/UDP,53/TCP,9153/TCP 4d17h
kubectl get ingress -A
# 输出:
NAMESPACE NAME CLASS HOSTS ADDRESS PORTS AGE
cattle-system rancher <none> rancher.xxx.com 80, 443 18h
kubectl describe ingress -A
# 输出:
Name: rancher
Labels: app=rancherapp.kubernetes.io/managed-by=Helmchart=rancher-2.8.5heritage=Helmrelease=rancher
Namespace: cattle-system
Address:
Ingress Class: <none>
Default backend: <default>
TLS:tls-rancher-ingress terminates rancher.xxx.com
Rules:Host Path Backends---- ---- --------rancher.xxx.com / rancher:80 (10.244.167.180:80,10.244.167.181:80,10.244.167.182:80)
Annotations: meta.helm.sh/release-name: ranchermeta.helm.sh/release-namespace: cattle-systemnginx.ingress.kubernetes.io/proxy-connect-timeout: 30nginx.ingress.kubernetes.io/proxy-read-timeout: 1800nginx.ingress.kubernetes.io/proxy-send-timeout: 1800
Events: <none>
ls
查看相关文件(看不看都行)
由kubectl get ingress -A显示可知class为none且address也没有被分配地址导致的网页打不开(我查看的例子也有同上显示却能访问Racher的,无奈我学艺不精,小白一个,adrress既然动态分配不到,那我只能指定一个啦)
此时尝试创建一个ingress class文件,虽然文件创建成功,但是再次查看kubectl get ingress -A发现class仍然是,因此默认的class最好在rancher install之前安装。
# 创建/编辑ingress class
vim nginx-ingress-set-default.yml# 文件内容
apiVersion: networking.k8s.io/v1
kind: IngressClass
metadata:labels:app.kubernetes.io/component: controllername: nginx-ingressannotations:ingressclass.kubernetes.io/is-default-class: "true"
spec:controller: k8s.io/ingress-nginx# 应用
kubectl apply -f nginx-ingress-set-default.yml
# ingressclass.networking.k8s.io/nginx-ingress created# 查看
kubectl get ingress -A
# NAMESPACE NAME CLASS HOSTS ADDRESS PORTS AGE
# cattle-system rancher <none> rancher.xxx.com 80, 443 18h
已经安装完rancher并且不想再重新安装,可以修改下rancher配置
- 不在原目录下操作,进入tmp目录
cd /tmp/ - 查看下tmp目录是否有文件,可以不看
ls,但最好看下,万一失败还可以恢复原来的tmp文件删除冗余文件 - 查看
kubectl get ingress/rancher -n cattle-system,发现CLASS是,ADDRESS为空 - 获取 k8s集群cattle-system 命名空间下 rancher 的 Ingress 资源的详细信息,并以 YAML 格式输出,
kubectl get ingress/rancher -n cattle-system -o yaml# 输出 apiVersion: networking.k8s.io/v1 kind: Ingress metadata:annotations:meta.helm.sh/release-name: ranchermeta.helm.sh/release-namespace: cattle-systemnginx.ingress.kubernetes.io/proxy-connect-timeout: "30"nginx.ingress.kubernetes.io/proxy-read-timeout: "1800"nginx.ingress.kubernetes.io/proxy-send-timeout: "1800"creationTimestamp: "2024-07-29T08:54:02Z"generation: 1labels:app: rancherapp.kubernetes.io/managed-by: Helmchart: rancher-2.8.5heritage: Helmrelease: ranchername: ranchernamespace: cattle-systemresourceVersion: "1370584"uid: b1fe8833-6c77-4969-aa11-e2be56d719c5 spec:# 这里增加一行rules:- host: rancher.xxx.comhttp:paths:- backend:service:name: rancherport:number: 80path: /pathType: ImplementationSpecifictls:- hosts:- rancher.xxx.comsecretName: tls-rancher-ingress status:loadBalancer: {} - 查看rancher 的 Ingress 资源并将其重定向到/tmp/test.yaml 文件
kubectl get ingress/rancher -n cattle-system -o yaml > /tmp/test.yaml - 编辑/tmp/test.yaml
[...]uid: b1fe8833-6c77-4969-aa11-e2be56d719c5 spec:# 增加 ingressClassName: nginx-ingressingressClassName: nginx-ingressrules:- host: rancher.lxq.comhttp:paths:- backend:service:name: rancherport:number: 80path: /pathType: ImplementationSpecific[...] - 应用/tmp/test.yaml
kubectl apply -f test.yaml -n cattle-system# 我这里虽然报错但是经过下方查看命令发现ingress相关已经更新,经测试Rancher UI成功链接kubectl apply -f test.yaml -n cattle-system # Error from server (Conflict): error when applying patch: # {"metadata":{"generation":1,"resourceVersion":"1370584"}} # to: # Resource: "networking.k8s.io/v1, Resource=ingresses", GroupVersionKind: "networking.k8s.io/v1, Kind=Ingress" # Name: "rancher", Namespace: "cattle-system" # for: "test.yaml": error when patching "test.yaml": Operation cannot be fulfilled on ingresses.networking.k8s.io "rancher": the object has been modified; please apply your changes to the latest version and try again# 查看 kubectl get ingress -A # NAMESPACE NAME CLASS HOSTS ADDRESS PORTS AGE # cattle-system rancher nginx-ingress rancher.xxx.com 192.168.21.157 80, 443 18h - Error from server (Conflict): error when applying patch: …
the object has been modified; please apply your changes to the latest version and try again这个错误表明你正在尝试应用的配置已经被修改过了。kubectl apply 通过资源的 generation 和 resourceVersion 来确定资源的当前状态。如果这些值与你的配置文件中的不匹配,Kubernetes 就会阻止应用,以防止潜在的配置冲突。
从提供的输出和错误信息来看,这里发生了两件事情:
-
第一次执行
kubectl apply -f test.yaml时的警告:Warning: resource ingresses/rancher is missing the kubectl.kubernetes.io/last-applied-configuration annotation which is required by kubectl apply.这个警告说明,你正在尝试使用
kubectl apply命令应用一个没有kubectl.kubernetes.io/last-applied-configuration注解的资源。这个注解是kubectl apply用来确定资源是否被修改过的关键信息。如果资源没有这个注解,kubectl apply将自动添加它,并警告用户。 -
后续执行
kubectl apply -f test.yaml -n cattle-system时的错误:Error from server (Conflict): error when applying patch: ... the object has been modified; please apply your changes to the latest version and try again这个错误表明你正在尝试应用的配置已经被修改过了。
kubectl apply通过资源的generation和resourceVersion来确定资源的当前状态。如果这些值与你的配置文件中的不匹配,Kubernetes 就会阻止应用,以防止潜在的配置冲突。解决步骤:
-
使用
kubectl apply时,确保你使用的是最新的配置文件。如果你手动编辑了资源或通过其他方式修改了它,你需要重新获取最新的配置,然后再应用。 -
如果你确定配置文件是最新的,或者你想强制更新资源,你可以使用
kubectl replace -f test.yaml -n cattle-system命令替代kubectl apply。这个命令会替换现有的资源而不是尝试应用差异。 -
如果你收到冲突错误,并且想要解决它,你可以先获取当前的资源状态,然后再次应用你的配置:
kubectl get ingress rancher -o yaml -n cattle-system > test.yaml kubectl apply -f test.yaml -n cattle-system -
检查资源是否正确应用:
kubectl get ingress -A
-
相关文章:
修改本地hosts文件及外部访问机器本地hosts文件后,rancher UI网站仍然不能访问
原因排查 kubectl get svc # 输出: NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 4d17hkubectl get svc -A # 输出: NAMESPACE …...
西北潮榆林范儿,新榆林首个360°沉浸式剧场发布会闪耀亮相
这是一场城市更迭的未来大赏,也是一场商业蝶变的复合对话 8月3日,朗阁集团商业品牌发布会在榆林银杏熙悦酒店隆重启幕。朗阁集团董事长杨志成携众多集团领导出席;多家主流媒体代表联袂参加;喜茶、中影时光国际影城、汉堡王、鲍师傅…...
如何创建响应式移动端网页设计?最佳实践详解
移动端网页设计是一个耗时而复杂的过程开发,包括UI设计、UX设计、检测、发布、改进、维护和持续的错误修复。通过学习这篇文章,你将掌握什么是移动端网页,如何制作移动端网页,以及设计网页的技巧。 什么是移动端网页?…...
Python 如何进行Web抓取(BeautifulSoup, Scrapy)
Web抓取(Web Scraping)是一种从网站提取数据的技术。Python有许多用于Web抓取的库,其中最常用的是BeautifulSoup和Scrapy。 BeautifulSoup BeautifulSoup是一个用于解析HTML和XML文档的Python库,适合处理简单的Web抓取任务。它将…...
白骑士的PyCharm教学进阶篇 2.5 数据库连接与管理
系列目录 上一篇:白骑士的PyCharm教学进阶篇 2.4 Django开发支持 在Web开发中,数据库是必不可少的部分。PyCharm不仅是一款功能强大的IDE,还提供了丰富的数据库连接和管理工具,使开发者可以更方便地浏览和操作数据库。本篇将详细…...
(五)activiti-modeler 编辑器初步优化
最终效果: 1..首先去掉顶部的logo,没什么用,还占用空间。 修改modeler.html文件,添加样式: <style type"text/css"> #main-header{display: none; } #main{padding: 0px; } </style> 2.左边组…...
(学习总结12)C++类和对象3
C类和对象3 一、初始化列表二、类型转换三、static成员四、友元五、内部类六、匿名对象 以下代码环境在 VS2022。 一、初始化列表 之前我们实现构造函数时,初始化成员变量主要使用函数体内赋值,构造函数初始化还有⼀种方式,就是初始化列表&a…...
docxtpl,一个强大的 Python 库!
更多资料获取 📚 个人网站:ipengtao.com 大家好,今天为大家分享一个强大的 Python 库 - docxtpl。 项目地址:https://docxtpl.readthedocs.io/en/latest/ 在日常工作中,自动生成和处理 Word 文档是一个常见需求。doc…...
捷途山海T2:超长续航,节能环保的驾驶新星
在当今的汽车市场中,消费者的购车选择日趋多样化,不再仅限于传统的燃油车。随着环保理念的深入人心以及人们对用车成本的日益关注,像捷途山海T2这样配备高效混动系统的车型逐渐受到大众的青睐。 捷途山海T2,以其杰出的节能性、强劲…...
[Day 45] 區塊鏈與人工智能的聯動應用:理論、技術與實踐
區塊鏈的可擴展性挑戰 概述 區塊鏈技術在過去幾年中取得了顯著的進展,其去中心化、透明和安全的特性使其在金融、供應鏈管理、醫療等領域得到了廣泛應用。然而,區塊鏈技術的一個重大挑戰是其可擴展性。可擴展性是指系統能夠有效處理日益增長的數據和用…...
白骑士的PyCharm教学实战项目篇 4.3 自动化测试与持续集成
系列目录 上一篇: 在现代软件开发过程中,自动化测试与持续集成(CI)是确保代码质量和快速交付的关键环节。PyCharm作为一款强大的集成开发环境(IDE),为自动化测试和持续集成提供了全面的支持。本…...
权限模块开发+权限与角色关联(完整CRUD)
文章目录 🌞 Sun Frame:SpringBoot 的轻量级开发框架(个人开源项目推荐)🌟 亮点功能📦 spring cloud模块概览常用工具 🔗 更多信息1.easycode生成代码1.配置2.AuthPermissionDao.java剪切到mapp…...
llama神经网络的结构,llama-3-8b.layers=32 llama-3-70b.layers=80; 2000汉字举例说明
目录 llama-3-8b.layers=32 llama-3-70b.layers=80 llama神经网络的结构 Llama神经网络结构示例 示例中的输入输出大小 实际举例说明2000个汉字文本数据集 初始化词嵌入矩阵 1. 输入层 2. 嵌入层 3. 卷积层 4. 全连接层 llama-3-8b.layers=32 llama-3-70b.laye…...
单细胞数据怎么表现genes mRNA表达的热图?
愿武艺晴小朋友一定得每天都开心 #热图 library("ComplexHeatmap") exp <- AverageExpression(subset(fasting_memory, Celltype %in% c("Pre-B")), layer = "data", #即CPM值 features …...
Java聚合快递对接云洋系统小程序源码
🚀【物流新纪元】聚合快递如何无缝对接云洋系统,效率飙升秘籍大公开!✨ 🔍 开篇揭秘:聚合快递的魅力所在 Hey小伙伴们,你是否还在为多家快递公司账号管理繁琐、订单处理效率低下而头疼?&#…...
MySQL——数据表的基本操作(三)修改数据表
有时候,希望对表中的某些信息进行修改,这时就需要修改数据表。所谓修改数据表指的是修改数据库中已经存在的数据表结构,比如,修改表名、修改字段名、修改字段的数据类型等。在 MySQL中,修改数据表的操作都是使用 ALTER…...
医学图像分割的基准:TransUnet(用于医学图像分割的Transformer编码器)器官分割
1、 TransUnet 介绍 TransUnet是一种用于医学图像分割的深度学习模型。它是基于Transformer模型的图像分割方法,由AI研究公司Hugging Face在2021年提出。 医学图像分割是一项重要的任务,旨在将医学图像中的不同结构和区域分离出来,以便医生可…...
java-swing编写学生成绩查询管理系统
本文是本人大二上实训项目-学生成绩查询管理系统,采用本项目使用Java、MySQL技术。界面框架由Java Swing搭建,用JDBC实现Java与MySQL的连接。 本项目适合初学java和mysql的同学,来做一些小项目来提升自己,因为兴趣所以想要做去尝…...
volatile浅解
volatile修饰的变量有两个特点 线程中修改了自己工作内存中的副本后,立即将其刷新到主内存工作内存中每次读取共享变量时,都会去主内存中重新读取,然后拷贝到工作内存 内存 -> CPU Cache -> CPU 如果没有volatile那么就会继续读取缓存…...
世媒讯带您了解什么是媒体邀约
什么是媒体邀约?其实媒体邀约是一种公关策略,旨在通过邀请媒体记者和编辑参加特定的活动、发布会或其他重要事件,以确保这些活动能够得到广泛的报道和关注。通过这种方式,企业和组织希望能够传达重要信息,提高品牌知名…...
SpringBoot-17-MyBatis动态SQL标签之常用标签
文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…...
挑战杯推荐项目
“人工智能”创意赛 - 智能艺术创作助手:借助大模型技术,开发能根据用户输入的主题、风格等要求,生成绘画、音乐、文学作品等多种形式艺术创作灵感或初稿的应用,帮助艺术家和创意爱好者激发创意、提高创作效率。 - 个性化梦境…...
在 Nginx Stream 层“改写”MQTT ngx_stream_mqtt_filter_module
1、为什么要修改 CONNECT 报文? 多租户隔离:自动为接入设备追加租户前缀,后端按 ClientID 拆分队列。零代码鉴权:将入站用户名替换为 OAuth Access-Token,后端 Broker 统一校验。灰度发布:根据 IP/地理位写…...
让AI看见世界:MCP协议与服务器的工作原理
让AI看见世界:MCP协议与服务器的工作原理 MCP(Model Context Protocol)是一种创新的通信协议,旨在让大型语言模型能够安全、高效地与外部资源进行交互。在AI技术快速发展的今天,MCP正成为连接AI与现实世界的重要桥梁。…...
聊一聊接口测试的意义有哪些?
目录 一、隔离性 & 早期测试 二、保障系统集成质量 三、验证业务逻辑的核心层 四、提升测试效率与覆盖度 五、系统稳定性的守护者 六、驱动团队协作与契约管理 七、性能与扩展性的前置评估 八、持续交付的核心支撑 接口测试的意义可以从四个维度展开,首…...
【JavaWeb】Docker项目部署
引言 之前学习了Linux操作系统的常见命令,在Linux上安装软件,以及如何在Linux上部署一个单体项目,大多数同学都会有相同的感受,那就是麻烦。 核心体现在三点: 命令太多了,记不住 软件安装包名字复杂&…...
Springboot社区养老保险系统小程序
一、前言 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,社区养老保险系统小程序被用户普遍使用,为方…...
算法笔记2
1.字符串拼接最好用StringBuilder,不用String 2.创建List<>类型的数组并创建内存 List arr[] new ArrayList[26]; Arrays.setAll(arr, i -> new ArrayList<>()); 3.去掉首尾空格...
蓝桥杯 冶炼金属
原题目链接 🔧 冶炼金属转换率推测题解 📜 原题描述 小蓝有一个神奇的炉子用于将普通金属 O O O 冶炼成为一种特殊金属 X X X。这个炉子有一个属性叫转换率 V V V,是一个正整数,表示每 V V V 个普通金属 O O O 可以冶炼出 …...
Spring是如何解决Bean的循环依赖:三级缓存机制
1、什么是 Bean 的循环依赖 在 Spring框架中,Bean 的循环依赖是指多个 Bean 之间互相持有对方引用,形成闭环依赖关系的现象。 多个 Bean 的依赖关系构成环形链路,例如: 双向依赖:Bean A 依赖 Bean B,同时 Bean B 也依赖 Bean A(A↔B)。链条循环: Bean A → Bean…...
