Myluzh Blog

Strive to become a dream architect.

K8S 批量删除被驱逐的Pod(Evicted Pods)

2024-4-7 myluzh Kubernetes

0x01 故障 集群中一个deployment中有很多Evicted的pod root@iZbp12bkuvg20e1j3y9gtxZ:~# kubectl get pod -n base-ops NAME READY STATUS RESTARTS AGE registry-6d7b7c9fb4-22f2x 0/1 Evicted 0 10d registry-6d7b7c9fb4-24r7j 0/1 Evicted 0 10d registry-6d7b7c9fb4-25clg 0/1 Evicted 0 10d ... 0x02 原因 原因:由于node节点的磁盘或内存资源不够后将现有的pod进行了驱赶。可以把磁盘资源释放后,批量删除Evicted Pod kubectl -n base-ops  get pods | grep Evicted | awk '{print$1}' |xargs kubectl -n base-...

阅读全文>>

标签: k8s pod evicted 驱逐

评论(0) (35)

K8S 基于Rook搭建Ceph集群 云原生存储最佳实践

2024-1-23 myluzh Kubernetes

0x00 关于Rook Rook 是一款云原生存储编排服务工具,Ceph 是一种广泛使用的开源分布式存储方案,通过 Rook 可以大大简化 Ceph 在 Kubernetes 集群中的部署和维护工作。 Rook 由云原生计算基金会( CNCF )孵化,且于2020 年 10 月正式进入毕业阶段。Rook 并不直接提供数据存储方案,而是集成了各种存储解决方案,并提供一种自管理、自扩容、自修复的云原生存储服务。社区官方资料显示, Rook 目前最新的稳定版本中,只有 Rook +Ceph 存储集成方案处于 stable 状态,版本升级较平滑。 Ceph 是一种广泛使用的开源分布式存储方案,通过 Rook 则可以大大简化 Ceph 在 Kubernetes 集群中的部署和维护工作。基于 Rook+Ceph 的存储方案,能为云原生环境提供文件、块及对象存储服务。 建立Ceph集群不仅需要大量的服务器资源,本身的复杂度也需要人力成本。但是在企业内部使用Kubemetes时,无论是在部署业务服务还是中间件服务,都能很明显地体会到Kubernetes的便利性和强大之处,所以我们在企业内部使用Kubernetes时,同时也会把中间件...

阅读全文>>

标签: k8s ceph rook

评论(0) (156)

K8S ingress 传递用户真实IP

2024-1-16 myluzh Kubernetes

0x01 前言 今天发现后端获取到的用户客户端ip都是内网地址 172.29.241.163。 访问逻辑为:用户访问->nginx->k8s-ingress->后端pod。 但是后端pod获取客户端的ip一直是172.29.241.163,原来这个ip的ingress的上游nginx的ip。 # nginx节点 root@iZbp12bkuvg20e1j3y9gtvZ:/etc/nginx/conf.d# ifconfig | grep 172 inet 172.29.241.163 netmask 255.255.240.0 broadcast 172.29.255.255 # nginx反向代理到k8s-ingress的配置文件 root@iZbp12bkuvg20e1j3y9gtvZ:/etc/nginx/conf.d# cat prd-all.conf upstream prd-nginx-server { server 172.29.241.160:80; server 172.30.82.215:80; keepalive 10; ...

阅读全文>>

标签: k8s nginx Ingress ip use-forwarded-headers X-Real-IP X-Forwarded-For

评论(0) (172)

K8S使用NodePort时,无法在主机上看到监听的端口 - 探究原因

2023-12-7 myluzh Kubernetes

0x00 前言 在新版K8S中,即便 Service 使用 nodeport 暴露,在 node 中使用netstat -anp 或者ss -nlt命令上也看不到 kube-proxy 监听的端口了,但是 nodeport 访问是正常的。 Kubernetes服务不是作为侦听特定端口的进程来实现的。取而代之的是使用iptables (或IPVS),服务基本上是iptables规则。这就是为什么它们不会出现在你的netstat中。 详细查看:https://kubernetes.io/docs/concepts/services-networking/service/#proxy-mode-iptables 0x01 你需要先了解kube-proxy的三种工作模式 1、userspace userspace模式是 kube-proxy 使用的第一代模式,该模式在 kubernetes v1.0 版本开始支持使用,该模式kube-proxy会为每一个Service创建一个监听端口,发向Cluster IP的请求被Iptables规则重定向到kube-proxy监听的端口上,kube-proxy根据LB算法选择一个...

阅读全文>>

标签: k8s kube-porxy iptables ipvs

评论(0) (397)

K8S滚动更新Java项目的一些踩坑经验分享

2023-12-4 myluzh Kubernetes

1、滚动更新之健康检查重要性 spec: containers: - name: my-container readinessProbe: tcpSocket: port: 9999 initialDelaySeconds: 60 periodSeconds: 10 livenessProbe: tcpSocket: port: 9999 initialDelaySeconds: 60 periodSeconds: 10 2、滚动更新之流量丢失解决方法(pod优雅退出) 这个操作的目的可能是为了在容器终止之前进行一些清理或收尾工作,例如保存临时数据或发送终止信号给其他进程。 spec: containers: - name: my-container lifecycle: preStop: exec: command: ...

阅读全文>>

标签: k8s pod java 滚动更新 流量丢失

评论(0) (126)

K8S HPA(Horizontal Pod Autoscaler)介绍

2023-11-23 myluzh Kubernetes

0x00 HPA基本介绍 Kubernetes 中的 Metrics Server 持续采集所有 Pod 副本的指标数据。HPA 控制器通过 Metrics Server 的 API(Heapster 的 API 或聚合 API)获取这些数据,基于用户定义的扩缩容规则进行计算,得到目标 Pod 副本数量。当目标 Pod 副本数量与当前副本数量不同时,HPA 控制器就向 Pod 的副本控制器(Deployment、RC 或 ReplicaSet)发起 scale 操作,调整 Pod 的副本数量,完成扩缩容操作。 在弹性伸缩中,冷却周期是不能逃避的一个话题, 由于评估的度量标准是动态特性,副本的数量可能会不断波动。有时被称为颠簸, 所以在每次做出扩容缩容后,冷却时间是多少。 HPA(Horizontal Pod Autoscaler):Pod个数自动扩/缩容。在 HPA 中,默认的扩容冷却周期是 3 分钟,缩容冷却周期是 5 分钟。可以通过调整kube-controller-manager组件启动参数设置冷却时间: - --horizontal-pod-autoscaler-downscale-delay :扩容冷却 - --...

阅读全文>>

标签: k8s hpa 弹性伸缩

评论(0) (184)