Myluzh Blog

K8S 部署单节点EMQX4

2025-3-11 myluzh Kubernetes

0x01 部署单节点emqx 1、部署yaml apiVersion: apps/v1 kind: StatefulSet metadata: name: emqx namespace: base spec: serviceName: "emqx-headless" replicas: 1 selector: matchLabels: app: emqx template: metadata: labels: app: emqx spec: containers: - name: emqx image: 172.30.82.223:5443/base/emqx/emqx:4.4.1 ports: - containerPort: 1883 name: mqtt - containerPort: 8083 name: mqtt-ws - conta...

阅读全文>>

标签: k8s emqx emqx4

评论(0) (99)

K8S 删除命名空间一直卡在Terminating解决方案(移除finalizers,强制删除命名空间)

2025-3-5 myluzh Kubernetes

0x01 前言 Kubernetes 命名空间一直处于 Terminating 状态,无法删除。 通常是由于该命名空间中的资源对象被设置了终结器(finalizers)。终结器是一种机制,用于确保某些操作在对象被删除之前完成。例如,某些控制器可能会设置终结器以确保在删除命名空间之前清理相关资源或执行特定的清理逻辑。如果这些清理任务未完成或者出现了错误,命名空间将一直保持在“Terminating”状态。 0x02 解决方案 方案1:排查并解决阻塞资源问题 命名空间无法删除是因为其中包含了一些特殊的资源(如自定义资源定义CRD、持久卷声明PVC等),这些资源的存在阻止了命名空间的删除过程。检查命名空间下的所有资源:根据输出结果逐一排查是否有异常资源未被正确清理,并采取相应措施(如手动删除资源)。 # 列出指定命名空间中所有类型的资源 kubectl api-resources --verbs=list --namespaced -o name | xargs -n 1 kubectl get --show-kind --ignore-not-found -n <namespace> 方案2:移除命名...

阅读全文>>

标签: k8s kubernetes Namespace ns terminating finalizers

评论(0) (283)

GitOps:ArgoCD 部署与使用

2025-3-3 myluzh CI/CD

0x01 前言 Argo CD仓库地址:https://github.com/argoproj/argo-cd/releases 什么是Argo CD?: Argo CD 是一个基于 GitOps 的 Kubernetes 持续交付工具,通过自动化同步 Git 仓库中的配置到 Kubernetes 集群,实现高效、可靠的应用部署和管理。 GitOps 的核心原则: 1、声明式配置:Kubernetes 的部署配置(如 deployment.yaml)以声明式的方式存储在 Git 仓库中。ArgoCD 通过读取这些配置文件来同步 Kubernetes 集群的状态。 2、Git 作为唯一事实来源(Single Source of Truth):所有的 Kubernetes 资源配置都存储在 Git 仓库中,Git 仓库是唯一的事实来源。Jenkins 在构建镜像后,会更新 Git 仓库中的镜像标签,确保 Git 仓库始终反映最新的期望状态。 3、自动化同步:ArgoCD 会持续监控 Git 仓库的变化,并在检测到更新时自动同步 Kubernetes 集群的状态。这种自动化确保了集群状态与 Git 仓库中的声明式...

阅读全文>>

标签: k8s argocd cd gitops

评论(0) (165)

在Nginx和Ingress-Nginx中配置WebSocket(WS/WSS)

2025-2-26 myluzh Kubernetes

0x01 Nginx server { listen 443 ssl; server_name example.com; ssl_certificate /path/to/your/certificate.crt; ssl_certificate_key /path/to/your/private.key; location /ws/ { proxy_pass http://backend_server; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "Upgrade"; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; ...

阅读全文>>

标签: k8s nginx ingress-nginx ws wss

评论(0) (154)

K8S 存储卷使用总结

2025-1-15 myluzh Kubernetes

使用场景 推荐方式 持久化存储(文件、数据库等) PVC 或 volumeClaimTemplates 配置和凭据管理 ConfigMap 和 Secret 临时数据存储 EmptyDir 访问主机文件 HostPath 动态云存储卷分配 CSI 0x01 PersistentVolumeClaim (PVC) 最通用的持久化存储方式。适用于绝大多数需要持久化数据的场景,例如数据库存储、文件共享。与各种存储插件兼容。 典型场景:数据库(MySQL、PostgreSQL、MongoDB)。 volumes: - name: app-data persis...

阅读全文>>

标签: k8s pvc csi

评论(0) (179)

K8S 使用临时容器(Ephemeral Containers)

2024-12-4 myluzh Kubernetes

0x01 前言 临时容器主要用于调试和排查问题。当 Pod 中的容器镜像很小,缺少常用工具(如 netstat、curl、ping 等)时,临时容器可以帮助你在不改变 Pod 原有配置的情况下,快速加载这些工具进行诊断。临时容器是独立于 Pod 主容器的,不会影响其运行,可以在需要时添加并删除,便于实时调试和故障排除。 0x02 使用临时容器debug 1、前置条件 (1)临时容器功能是在 Kubernetes v1.16 版本中引入的,确保自己的集群版本号支持:kubectl version --short (2)编辑 kube-apiserver 的配置文件,并添加 --feature-gates=EphemeralContainers=true,然后重启 API server。         要检查是否启用了 EphemeralContainers,你可以运行以下命令:kubectl api-resources | grep ephemeral         如果启用,该命令的输出将包含 ephemeralconta...

阅读全文>>

标签: k8s kubectl debug 临时容器 EphemeralContainers

评论(0) (288)