【运维篇】KubeSphere-02(经验汇总)

一、使用建议

1.对于数据库、对像存储比较重的要不能丢失,有异地存储备份需求的有状态服务,不建议采用k8s进行部署,会导致运维难度更大。

2.对于中间件如redis、MQ、harbor、seata、nacos、zookeeper可采用k8s部署。

3.对于无状态服务tomcat、springboot、nginx、node等应用推荐都采用k8s部署。

4.对于应用配置中使用到的配置连接信息推荐采用域名方式配置,减少项目上的重复修改。

二、配置CoreDNS

在 Kubernetes 集群中,Pod 的 DNS 解析行为受 dnsPolicy 配置影响:

  1. 1. 默认策略:dnsPolicy: ClusterFirst

优先使用 Kubernetes 集群内部的 CoreDNS 服务进行解析。

如果内部解析失败,则会转发到上游 DNS 服务器(通常为宿主机的 DNS 配置)。

  1. 2. 自定义策略:dnsPolicy: None

Pod 可以指定自定义的 DNS 配置,包括 search 域名。

  1. 3. 主机配置的影响

如果宿主机 /etc/resolv.conf 文件中包含较多的 search 域,会导致 Pod 的 DNS 查询超时或失败。

2.1 通过命令方式配置

编辑coredns的配置字典(ConfigMap),增加hosts配置项,以下实现整个k8s中的服务通过ha.test.org域名请求至192.168.1.10这个IP,这里可以是我们的Haproxy代理服务器的VIP。

1.编辑配置

#在任意Master上执行,进入coredns编辑
kubectl edit configmap coredns -n kube-system

2.配置参考

 编辑完成后切换到英文输入法,按Esc再输入:wq保存退出。

kind: ConfigMap
apiVersion: v1
metadata:
  name: coredns
  namespace: kube-system
data:
  Corefile: |
    .:53 {
        errors
        health {
           lameduck 5s
        }
        ready
        kubernetes cluster.local in-addr.arpa ip6.arpa {
           pods insecure
           fallthrough in-addr.arpa ip6.arpa
           ttl 30
        }
        hosts {
            192.168.1.10 ha.test.org
            fallthrough
        }
        prometheus :9153
        forward . /etc/resolv.conf {
           max_concurrent 1000
        }
        cache 30
        loop
        reload
        loadbalance
    }

3.重新创建cordns

kubectl rollout restart deployment coredns -n kube-system

2.2 通过管理界面配置

以管理员admin身份,登录kubesphere管理平台http://ip:30880/,选择集群管理>配置>配置字典,输入coredns进行查找。

1.选择集群管理

2.查找coredns配置

3.进入配置页

4.增加hosts配置

5.重新创建

三、配置时区

3.1 通过应用进行配置

1.在应用的value.xml中查找env环境指定时区

env:
  - name: TZ
    value: "Asia/Shanghai"

3.2 通过管理平台配置

1.进入容器设置

2.设置环境变量

四、应用发布

4.1 中间件部署要求

1.对通用的中间件封装成标准的应用,放入私库进行快速部署,如redis、Mq、zookeeper等。

2.对于中间件每个项目都部署到同名的命名空间下,kubeSphere中创建的项目名称就是命名空间NameSpace。

3.对于中间件每个项目都取相同的名称。

通过以上三步,中间在每个项目中就有了唯一的访问路径,解决了在制作公司应用时,可以固定好中间件的配置文件信息。

4.2 中间件连接方式

4.2.1 服务介绍

在Kubernetes中,Headless Service和ClusterIP Service都是Service资源的类型,它们都用于为应用程序提供服务发现和负载均衡等功能。下面是Headless Service和ClusterIP Service的区别:

特性Headless ServiceVirtualIP(ClusterIP)
ClusterIP不分配分配固定虚拟 IP
负载均衡无,客户端直接访问 Pod IP由 kube-proxy 实现内部负载均衡
DNS 解析返回所有 Pod IP 列表解析为 ClusterIP
适用场景有状态应用、需直接 Pod 访问无状态应用、需统一入口和负载均衡
典型用例数据库集群、分布式存储系统‌微服务、Web 应用后端‌

4.2.2 过DNS访问

当创建一个Headless Service时,Kubernetes会为每个后端Pod创建一个对应的DNS A记录,使得可以直接通过Pod的名称进行访问。

#pod名称.服务名称.命名空间
<pod-name>.<service-name>.<name-space>

例如:如果有一个名为my-service的Headless Service,并且后端有三个Pod(pod-0、pod-1和pod-2),项目名称为com-sys,则可以通过以下方式来访问这些:

$ nslookup pod-0.my-service.com-sys
$ nslookup pod-1.my-service.com-sys
$ nslookup pod-2.my-service.com-sys

ClusterIP Service通常用于无状态应用程序的负载均衡场景,例如Web服务器、API服务器或者前端应用程序等。它可以通过Service关联的Endpoint对象来绑定后端Pod的IP地址和端口号,以实现对Pod的自动发现和管理。

#通过服务名称和命令空间直接访问
<service-name>.<name-space>

五、应用升级更新

5.1 静像拉取策略

静像拉取策略pullPolicy‌的三个选项关键差异总结:

策略镜像更新控制网络依赖典型场景
Always强(始终最新)开发/测试环境‌
IfNotPresent中(本地优先)生产环境‌
Never弱(仅限本地)离线环境‌

5.2 Always更新

在项目前期因变更比较平凡,小的更新需要发布测试时可以不变更静像版本号,将应用的pullPolicy‌配置为Always,通过管理平台上的重新创建功能,自动拉取配置版本的最后推送的静像文件进行升级。

5.3 修改静像版本号更新

1.选择需要更新的部署,选择编辑YAML。

2.修改image的版本号,保存后开始自动更新,同样的方式也可以还原版本。

5.3 修改应用版本号更新

特别提醒:需要注意保持配置信息要与旧版本相同,该方式情况下应用、服务都会按新配置重新创建,原版本应用部署后再配置的磁盘挂载、环境变量配置、ClusterIp的外部访问都会重做,该方式下最好的方式就是所有的配置都要配置在应用配置文件中防止丢失。

1.选择应用下的编辑设置。

2.选择需要更新到的目标版本。

六、健康检测

针对项目应用我们都应该编写自已应用的可用性健康检测方法,并配置好应用的创建检测,以实现应用宕机时自动重启。

以下是WEB应用的健康检测示例:

七、日志查询

7.1 通过命令查看日志

# 查看所有pod
kubectl get pods -A
# 访问comm-sys空间下的zookeeper-0的日志
kubectl logs zookeeper-0 -n comm-sys

7.2 通过管理界面查看容器日志

7.3 通过日志管理平台查看日志

 这里的功能需要安装kubesphere的日志系统(opensearch)对容器日志进行采集和存储。

7.3.1.进入日志页

7.3.2.日志汇总页

7.3.3.日志列表页

7.3.4.日志详情页

八、文件对拷

# 从容器中复制文件到主机
kubectl cp <some-namespace>/<some-pod>:/tmp/foo /tmp/bar

# 从该机中复制文件到容器
kubectl cp /tmp/bar <some-namespace>/<some-pod>:/tmp/foo

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/983635.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于单片机及传感器的机器人设计与实现

摘要 : 本设计基于单片机及多种传感器 , 完成了一个自主式移动机器人的制作。单片机作为系统检测和控制的核心 , 实现对机器人小车的智能控制。反射式红外光电传感器检测引导线, 使机器人沿轨道自主行走 ; 使用霍尔集成片 , 通过计车轮转过的圈数完成机器人行走路程测量; …

SQLiteStudio:一款免费跨平台的SQLite管理工具

SQLiteStudio 是一款专门用于管理和操作 SQLite 数据库的免费工具。它提供直观的图形化界面&#xff0c;简化了数据库的创建、编辑、查询和维护&#xff0c;适合数据库开发者和数据分析师使用。 功能特性 SQLiteStudio 提供的主要功能包括&#xff1a; 免费开源&#xff0c;可…

SpringBoot过滤器(Filter)的使用:Filter接口、FilterRegistrationBean类配置、@WebFilter注释

1、过滤器(Filter)的介绍 Spring Boot 的过滤器用于对数据进行过滤处理。通过 Spring Boot 的过滤器,程序开发人员不仅可以对用户通过 URL 地址发送的请求进行过滤处理(例如:过滤一些错误的请求或者请求中的敏感词等),而且可以对服务器返回的数据进行过滤处理(例如:压…

第11章 web应用程序安全(网络安全防御实战--蓝军武器库)

网络安全防御实战--蓝军武器库是2020年出版的&#xff0c;已经过去3年时间了&#xff0c;最近利用闲暇时间&#xff0c;抓紧吸收&#xff0c;总的来说&#xff0c;第11章开始学习利用web应用程序安全&#xff0c;主要讲信息收集、dns以及burpsuite&#xff0c;现在的资产测绘也…

PQL查询和监控各类中间件

1 prometheus的PQL查询 1.1 Metrics数据介绍 prometheus监控中采集过来的数据统一称为Metrics数据&#xff0c;其并不是代表具体的数据格式&#xff0c;而是一种统计度量计算单位当需要为某个系统或者某个服务做监控时&#xff0c;就需要使用到 metrics prometheus支持的met…

23年以后版本pycharm找不到conda可执行文件解决办法

这个问题很痛苦&#xff0c;折磨了我半天。 就是链接远程服务器的时候 就一直以为这三个都要配置 就这个conda环境这里怎么都找不到服务器的虚拟环境的python可执行文件&#xff0c;非常痛苦。 后面查找了资料&#xff0c;找了好久&#xff0c;才发现&#xff0c;原来只需要配…

后智能体时代的LLM和Agent

文章目录 1. 关于AI重塑的哲学体系2. 关于AI大模型体系的认知3. 关于AI大模型体系的畅想4. 关于人和AI大模型体系的共处5. 写在最后 随着OpenAI、Deepseek、Manus等等智能体的爆火&#xff0c;人们茶前饭后、插科打诨的话题都离不开这些智能体&#xff0c;现状也正如《人民日报…

QTreeWidget指定子节点弹出菜单

方法&#xff1a;判断父对象 connect(ui->treeWidget_nav, &QTreeWidget::itemChanged, [](QTreeWidgetItem *TWI){if (TWI->parent() TWI_bookmark) {qDebug() << TWI->data(0, LOCATION_OF_REAL_PATH).toString() << TWI->text(0);} }); ui->…

R语言使用scitable包交互效应深度挖掘一个陌生数据库

很多新手刚才是总是觉得自己没什么可以写的&#xff0c;自己不知道选什么题材进行分析&#xff0c;使用scitable包后这个完全不用担心&#xff0c;选题多到你只会担心你写不完&#xff0c;写得不够快。 今天演示一下使用scitable包深度挖掘一个陌生数据库 先导入R包和数据 li…

神经网络|(十五)|霍普菲尔德神经网络-Storkey 训练

【1】引言 前序学习进程中&#xff0c;对霍普菲尔德神经网络有了初步认识&#xff0c;使用Hebbian方法测试了霍普菲尔德神经网络算法。相关学习文章链接为&#xff1a; 神经网络|(十四)|霍普菲尔德神经网络-CSDN博客 在此基础上&#xff0c;尝试探索使用Storkey方法对霍普菲…

算法006——和为S 的两个数

力扣——查找总价格为目标值的两个商品点击跳转 注意题目中的关键信息升序 我们利用双指针&#xff0c;不管 target 是多少&#xff0c;让一个指针指向最小值&#xff0c;让一个指针指向最大 那么&#xff0c;共有三种情况 我们首先遇到的是第二种情况 sum < target left …

【推荐项目】039-酒店预定系统

039-酒店预定系统 介绍 Java ssm 酒店预定管理系统 针对您提出的酒店预定系统&#xff0c;以下是一个基于SSM&#xff08;Spring Spring MVC MyBatis&#xff09;框架与JSP技术的功能结构整理&#xff0c;该系统分为管理端与用户端两大模块&#xff1a; 一、管理端功能 个…

从0开始,手搓Tomcat

一、什么是Tomcat Tomcat 是一款开源的、轻量级的 Web 服务器&#xff0c;它不仅能够提供 HTTP 服务&#xff0c;还能够运行 Java Servlet 和 JavaServer Pages&#xff08;JSP&#xff09;。对于许多开发者来说&#xff0c;理解 Tomcat 的目录结构以及如何在该结构中组织应用…

Ubuntu虚拟机中使用QEMU搭建ARM64环境

Ubuntu虚拟机中使用QEMU搭建ARM64环境 通过本实验学习如何编译一个 ARM64 版本的内核 image&#xff0c;并且在QEMU 上运行起来。 文章目录 Ubuntu虚拟机中使用QEMU搭建ARM64环境一、安装aarch64交叉编译工具二、安装QEMU三、制作根文件系统1、根文件系统简介2、BusyBox构建根…

java 重点知识 — JVM存储模块与类加载器

1 jvm主要模块 方法区 存储了由类加载器从.class文件中解析的类的元数据&#xff08;类型信息、域信息、方法信息&#xff09;及运行时常量池&#xff08;引用符号及字面量&#xff09;。 所有线程共享&#xff1b;内存不要求连续&#xff0c;可扩展&#xff0c;可能发生垃圾回…

Windows 如何开启和使用FTP服务

在Windows 系统开启FTP的服务方式有很多种&#xff0c;最快速的就是使用Windows自身的FTP服务了。 Windows 搭建FTP服务的方式 在Windows 中搭建FTP的方式有很多种&#xff0c;有商用收费的&#xff0c;也有开源免费的&#xff0c;除此之外&#xff0c; Windows本身也内置了F…

ASP.NET Core 6 MVC 文件上传

概述 应用程序中的文件上传是一项功能&#xff0c;用户可以使用该功能将用户本地系统或网络上的文件上传到 Web 应用程序。Web 应用程序将处理该文件&#xff0c;然后根据需要对文件进行一些验证&#xff0c;最后根据要求将该文件存储在系统中配置的用于保存文件的存储中&#…

计算机毕业设计SpringBoot+Vue.js制造装备物联及生产管理ERP系统(源码+文档+PPT+讲解)

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…

yoloV5训练visDrone2019-Det无人机视觉下目标检测

一、visDrone2019数据集详解 visDrone2019数据集是无人机视角下最具挑战性的目标检测基准数据集之一&#xff0c;由天津大学机器学习与数据挖掘实验室联合其他研究机构共同构建。该数据集采集自中国14个不同城市&#xff0c;覆盖复杂城市场景、交通枢纽、密集人群等多种环境。…

Unity开发——CanvasGroup组件介绍和应用

CanvasGroup是Unity中用于控制UI的透明度、交互性和渲染顺序的组件。 一、常用属性的解释 1、alpha&#xff1a;控制UI的透明度 类型&#xff1a;float&#xff0c;0.0 ~1.0&#xff0c; 其中 0.0 完全透明&#xff0c;1.0 完全不透明。 通过调整alpha值可以实现UI的淡入淡…