2024-9-6 myluzh Kubernetes
0x00 概述 在 Kubernetes 中,ResourceQuota 和 LimitRange 是两种用于管理命名空间资源使用的重要机制。它们帮助确保集群资源的有效分配,防止资源过度消耗。下面将介绍如何配置这两种机制,并解释它们的相互作用。 ResourceQuota: 适用于整个命名空间,限制命名空间中所有 Pod 的总资源使用量。 如果命名空间中的资源总使用量超出配额,则无法创建新的资源(例如,Pod、服务等)。 LimitRange: 适用于命名空间中的单个 Pod 和容器,确保它们的资源请求和限制在指定的范围内。 如果容器的资源请求或限制超出 LimitRange 定义的范围,Kubernetes 将拒绝 Pod 的创建。 0x01 使用 ResourceQuota 限制命名空间的总资源 ResourceQuota 用于设置一个命名空间中所有资源的总量上限。这包括 CPU、内存、存储、Pod 数量等。它确保命名空间中的资源使用不会超出指定的配额。 apiVersion: v1 kind: ResourceQuota metadata: name: example-quota ...2024-9-4 myluzh Kubernetes
0x01 部署单节点redis 注意:如果需要持久化就把容器的/data目录挂载出来。 apiVersion: v1 kind: ConfigMap metadata: name: redis-config namespace: test # 根据实际情况调整 data: redis.conf: | # 监听所有网络接口 bind 0.0.0.0 # 设置Redis密码 requirepass qwer1234 # 关闭保护模式,允许远程连接 protected-mode no # 配置内存使用最大量 maxmemory 2147483648 # 内存满时的淘汰策略为volatile-lru,即仅对设置了过期时间的键使用LRU淘汰策略。 maxmemory-policy volatile-lru # 设置日志文件路径 logfile "/data/redis.log" # RDB快照,每 600 秒(10 分钟)和至少 120 个键被修改时执行持久化操作。 ...标签: k8s redis k8s部署 redis集群 redis-operater operater operater.io
2024-8-9 myluzh Kubernetes
0x01 Nacos心跳时间 Nacos心跳检测时间 Nacos 目前支持临时实例使用心跳上报方式维持活性,发送心跳的周期默认是 5 秒,Nacos 服务端会在 15 秒没收到心跳后将实例设置为不健康, 在 30 秒没收到心跳时将这个临时实例摘除(这里要注意30秒这个时间)。 0x02 Nacos下线应用接口 在Nacos OpenAPI:(https://nacos.io/zh-cn/docs/open-api.html )中有写明,可以通过/nacos/v1/ns/instance修改实例来完成应用下线,例如: curl -X PUT "http://172.30.233.87:8848/nacos/v1/ns/instance?serviceName=xfshcloud-dxp&clusterName=DEFAULT&groupName=DEFAULT_GROUP&ip=10.42.1.89&port=9208&ephemeral=true&weight=1&enabled=false&namespaceId=a9076f...2024-8-2 myluzh Kubernetes
0x01 什么是优雅停止? 优雅终止是 Kubernetes 中一个非常重要的概念,它关系到服务的稳定性和用户体验。通过合理配置和使用 Kubernetes 提供的工具,我们可以确保应用在终止时能够做到尽可能的平滑和优雅,这不仅提升了系统的可靠性,也增强了用户对服务的信任。 优雅终止指在终止应用或服务时,确保当前正在进行的操作能够正常完成,同时避免新请求的进入,使得服务能够平稳地关闭。在 Kubernetes 中,这通常涉及到 Pod 的终止流程。 0x02 Pod 终止流程 1、Pod 状态变为 Terminating Pod 被删除,API 层面上 metadata.deletionTimestamp 字段会被标记上删除时间。 2、更新转发规则 kube-proxy 发现 Pod 被删除,开始更新转发规则,将 Pod 从 service 的 endpoint 列表中摘除掉,新流量不再转发到该 Pod。 3、销毁 Pod kubelet 发现 Pod 被删除,开始销毁 Pod。 执行 PreStop Hook:如果 Pod 中有配置 preStop Hook,Kubernetes 会执行这些命令。 ...2024-7-24 myluzh Kubernetes
0x00 概述 关于雷池WAF:雷池(SafeLine)是由长亭科技开发的一种专业的 Web 应用防火墙(WAF)。WAF是指Web Application Firewall,工作在应用层,专门用于保护基于HTTP/HTTPS协议的Web系统免受各种网络攻击。雷池WAF利用先进的智能语义分析算法作为其核心检测技术。这种算法不依赖于预先定义的规则集,能够精准地检测恶意攻击,同时减少误报,有效应对未知特征的0day攻击。 很荣幸雷池社区版-官方手册已引用了该文章 标题:《K8S ingress-nginx中集成雷池WAF最佳实践 - 来自 23 群的 myluzh》 地址:https://docs.waf-ce.chaitin.cn/更多技术文档/K8S-ingress-nginx中集成雷池WAF最佳实践 0x01 手动安装雷池 雷池WAF可以安装在K8S集群或者任意一台与集群网络互通的机器上。 官网手册:手动安装雷池 1、创建雷池目录 mkdir -p "/data/safeline" 2、下载编排脚本 cd "/data/safeline" wget "ht...2024-7-22 myluzh Kubernetes
0x01 概述 国内拉镜像受限,公司集群是用rancher搭的,以防万一先把镜像都在私有仓存一下。 0x02 脚本 root@iZbp12bkuvg20e1j3y9gtxZ:~# vi upload_rancher_images.sh #!/bin/bash # 获取前缀rancher开头的镜像 images_info=$(docker images | grep '^rancher' | awk '{print $1, $2, $3}') registry='172.30.82.223:5443/' # 登录harbor私有仓 docker login "$registry" # 按行遍历镜像信息 echo "$images_info" | while read -r image_name image_version image_id; do # 打上标签 然后上传到私有仓 echo "镜像名: $image_name 版本: $image_version ID: $image_id" docker tag "$image_name:$image_version" "...