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

news2025/3/9 16:59:31

一、使用建议

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Qt:多线程

目录 初识Qt多线程 QThread常用API QThread的使用 Qt中的锁 条件变量和信号量 初识Qt多线程 Qt 多线程 和 Linux 中的线程本质是一个东西 Linux 中学过的 多线程 APl&#xff0c;Linux 系统提供的 pthread 库 Qt 中针对系统提供的线程 API 重新封装了 C11 中&#xff0c;…

算法系列之广度优先搜索解决妖怪和尚过河问题

在算法学习中&#xff0c;广度优先搜索&#xff08;BFS&#xff09;是一种常用的图搜索算法&#xff0c;适用于解决最短路径问题、状态转换问题等。本文将介绍如何利用广度优先搜索解决经典的“妖怪和尚过河问题”。 问题描述 有三个妖怪和三个和尚需要过河。他们只有一条小船…

详解常用集合和映射中的线程安全问题

1. 前言 在 Java 中&#xff0c;集合和映射是常用的数据结构&#xff0c;它们分为线程安全和线程不安全两类。我们常用的集合包括&#xff1a;ArrayList、HashSet、CopyOnWriteArrayList、CopyOnWriteArraySet。常用的映射包括&#xff1a;HashMap、ConcurrentHashMap、Hashta…

计算机毕业设计SpringBoot+Vue.js车辆管理系统(源码+文档+PPT+讲解)

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

【js逆向】iwencai国内某金融网站实战

地址&#xff1a;aHR0cHM6Ly93d3cuaXdlbmNhaS5jb20vdW5pZmllZHdhcC9ob21lL2luZGV4 在搜索框中随便输入关键词 查看请求标头&#xff0c;请求头中有一个特殊的 Hexin-V,它是加密过的&#xff1b;响应数据包中全是明文。搞清楚Hexin-V的值是怎么生成的&#xff0c;这个值和cooki…

【音视频 | AAC】AAC编码库faac介绍、使用步骤、例子代码

&#x1f601;博客主页&#x1f601;&#xff1a;&#x1f680;https://blog.csdn.net/wkd_007&#x1f680; &#x1f911;博客内容&#x1f911;&#xff1a;&#x1f36d;嵌入式开发、Linux、C语言、C、数据结构、音视频&#x1f36d; &#x1f923;本文内容&#x1f923;&a…

Unity摄像机跟随物体

功能描述 实现摄像机跟随物体&#xff0c;并使物体始终保持在画面中心位置。 实现步骤 创建脚本&#xff1a;在Unity中创建一个新的C#脚本&#xff0c;命名为CameraFollow。 代码如下&#xff1a; using UnityEngine;public class CameraFollow : MonoBehaviour {public Tran…

dp_走方格(包含dfs分析,记忆化搜索)

类似题目解析&#xff1a;dp_最长上升子序列&#xff08;包含dfs分析&#xff0c;记忆化搜索&#xff09;-CSDN博客 题目链接&#xff1a;2067. 走方格 - AcWing题库 题目图片&#xff1a; 分析题目&#xff08;dfs&#xff09; 这个题目说有一个行为n行&#xff0c;列为m列…

如何用Kimi生成PPT?秒出PPT更高效!

做PPT是不是总是让你头疼&#xff1f;&#x1f629; 快速制作出专业的PPT&#xff0c;今天我们要推荐两款超级好用的AI工具——Kimi 和 秒出PPT&#xff01;我们来看看哪一款更适合你吧&#xff01;&#x1f680; &#x1f947; Kimi&#xff1a;让PPT制作更轻松 Kimi的生成效…

K8S学习之基础十八:k8s的灰度发布和金丝雀部署

灰度发布 逐步扩大新版本的发布范围&#xff0c;从少量用户逐步扩展到全体用户。 特点是分阶段发布、持续监控、逐步扩展 适合需要逐步验证和降低风险的更新 金丝雀部署 将新版本先部署到一小部分用户或服务器&#xff0c;观察其表现&#xff0c;再决定是否全面推广。 特点&…

Java 深度复制对象:从基础到实战

目录 一、深度复制的概念二、实现深度复制的方法1. 使用序列化2. 手动实现深度复制 三、总结 在 Java 编程中&#xff0c;对象的复制是一个常见的需求。然而&#xff0c;简单的复制操作&#xff08;如直接赋值&#xff09;只会复制对象的引用&#xff0c;而不是创建一个新的对象…

【前端】webstorm创建一个导航页面:HTML、CSS 和 JavaScript 的结合

文章目录 前言一、项目结构二、HTML 结构三、CSS 样式四、JavaScript 功能五、现代化风格优化htmlcssjavascript运行效果 总结 前言 在现代网页开发中&#xff0c;一个良好的导航栏是提升用户体验的重要组成部分。在这篇文章中&#xff0c;我将向您展示如何创建一个简单而完整…

AI编程: 一个案例对比CPU和GPU在深度学习方面的性能差异

背景 字节跳动正式发布中国首个AI原生集成开发环境工具&#xff08;AI IDE&#xff09;——AI编程工具Trae国内版。 该工具模型搭载doubao-1.5-pro&#xff0c;支持切换满血版DeepSeek R1&V3&#xff0c; 可以帮助各阶段开发者与AI流畅协作&#xff0c;更快、更高质量地完…

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

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

GitHub上传项目

总结&#xff08;有基础的话直接执行这几步&#xff0c;就不需要再往下看了&#xff09;&#xff1a; git init 修改git的config文件&#xff1a;添加:[user]:name你的github用户名 email你注册github的用户名 git branch -m master main git remote add origin 你的URL gi…

DIY Tomcat:手写一个简易Servlet容器

在Java Web开发领域&#xff0c;Tomcat堪称经典&#xff0c;它作为Servlet容器&#xff0c;承载着无数Web应用的运行。今天&#xff0c;我将带大家一同探索如何手写一个简易的Tomcat&#xff0c;深入理解其底层原理。 一、背景知识 在开始之前&#xff0c;我们需要对几个关键…

基于ssm的物资进销存(全套)

现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本货物进销管理系统就是在这样的大环境下诞生&#xff0c;其可以帮助管理者在短时间内处理完毕庞大的数据信息&#…

【CVPR2025】 EVSSM:用状态空间模型高效去模糊

Efficient Visual State Space Model for Image Deblurring 论文信息 题目&#xff1a; Efficient Visual State Space Model for Image Deblurring 用于图像去模糊的高效视觉状态空间模型 源码&#xff1a;https://github.com/kkkls/EVSSM 创新点 提出了高效视觉状态空间模型…

动态规划--斐波那契类型

目录 前言 1 第N个斐波那契数 2 爬楼梯 3 三步问题 4 使用最小花费爬楼梯 5 解码方法 总结 前言 本篇所讲的几个题目都是与斐波那契数的做法与思路类似的题目&#xff0c;所以直接放在一块解决了。 同时&#xff0c;由于第一次接触动态规划&#xff0c;我们也会讲解一…

《Python实战进阶》No16: Plotly 交互式图表制作指南

No16: Plotly 交互式图表制作指南 Plotly是一款用来做数据分析和可视化的在线平台&#xff0c;功能真的是非常强大&#xff0c;它主要有以下特点&#xff1a; 图形多样化&#xff1a;在线绘制多种图形&#xff0c;比如柱状图、饼图、直方图、饼图、气泡图、桑基图、股票图、旭…