Myluzh Blog

Strive to become a dream architect.

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)

Zabbix6配置邮件告警

2023-12-6 myluzh Zabbix

0x01 配置发送邮件服务器 面板路径:"管理->媒介->Email"。点击"Email"后配置smtp服务器、端口、发信邮箱跟密码。完成后点击右侧"测试"测试下发信是否正常 0x02 配置用户来接受告警信息 面板路径:"管理->用户"。选择默认admin用户,在"报警媒介"中点击"添加",类型选择"Email",添加收件人邮箱,勾选已启用。 0x03设置触发器报警后的动作 面板路径:"配置->动作->触发器工作"。 1、创建动作,名称为”邮件告警“,添加触发条件为"触发器示警度->大于等于->信息" 2、添加操作 (1)添加"操作",选择需要发送给的用户或者用户组,选择仅发送到"Email",自定义消息内容如下 # 主题 故障{TRIGGER.STATUS},服务器:{HOSTNAME1}发生: {TRIGGER.NAME}故障! # 消息 告警主机:{HOSTNAME1} 告警时间:{EVENT.DATE} {EVENT.TIME} 告警等级:{TRIGGER.SEVERITY} 告警信息: {TRIGGER.NAME} 告警项目:{TRI...

阅读全文>>

标签: zabbix 邮件告警

评论(0) (125)

Docker部署Zabbix6 Server/Agent

2023-12-4 myluzh Zabbix

1、 部署mysql # mysql docker pull mysql:8.0 docker volume create -d local mysql_data # 存放mysql数据 docker volume create -d local mysql_logs # 存放mysql日志 docker volume create -d local mysql_conf # 存放mysql配置文件 docker run --name mysql-server \ -v mysql_data:/var/lib/mysql \ -v mysql_logs:/var/log/mysql \ -v mysql_conf:/etc/mysql \ -e MYSQL_DATABASE="zabbix" \ -e MYSQL_USER="zabbix" \ -e MYSQL_PASSWORD="zabbix_pwd" \ -e MYSQL_ROOT_PASSWORD="123456" \ --restart=unless-stopped \ -d mysql:8.0 \ --character-s...

阅读全文>>

标签: docker zabbix

评论(0) (110)

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 基于Metrics Server CPU指标的pod弹性伸缩(HPA)

2023-11-23 myluzh Kubernetes

0x00 前置条件 1、开启K8S API聚合。关于API聚合:https://kubernetes.io/zh-cn/docs/concepts/extend-kubernetes/api-extension/apiserver-aggregation/ 2、集群中安装Metrics Server。 0x01 开启Kubernetes API Aggregation 在 Kubernetes 1.7 版本引入了聚合层,允许第三方应用程序通过将自己注册到kube-apiserver上,仍然通过 API Server 的 HTTP URL 对新的 API 进行访问和操作。为了实现这个机制,Kubernetes 在 kube-apiserver 服务中引入了一个 API 聚合层(API Aggregation Layer),用于将扩展 API 的访问请求转发到用户服务的功能。 ![](https://k8s-1252881505.cos.ap-beijing.myqcloud.com/k8s-2/aggergation.png) 当你访问 apis/metrics.k8s.io/v1beta1 的时候,实际上访问到...

阅读全文>>

评论(0) (236)

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)