Myluzh Blog

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) (671)

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) (527)

MinIO多节点集群部署与负载均衡配置

2023-12-27 myluzh Kubernetes

0x01 MinIO单节点Docker部署 1、docker minio 单机挂载单盘 run起来后直接访问http9001就是面板 docker run -it -d --name minio \\ --restart=always \\ -p 9000:9000 \\ -p 9001:9001 \\ -v /data/minio/data:/data \\ -e "MINIO_ROOT_USER=admin" \\ -e "MINIO_ROOT_PASSWORD=admin123" \\ minio/minio server /data --console-address ":9001" 2、docker minio 单机挂载多盘 4块盘分别为 data1、data2、data3、data4。 docker run -it -d --name minio \\ --restart=always \\ -p 9000:9000 \\ -p 9001:9001 \\ -v /data/minio/data1:/data1 \\ -v /data/minio/data2:/data2 \\ ...

阅读全文>>

标签: docker 存储 minio 分布式 对象存储 负载均衡

评论(0) (779)

K8S部署Fluentd日志采集并推送到Elastic

2023-12-19 myluzh Kubernetes

0x01 前言 使用 fluentd 可以从每个容器收集 stdout/stderr 日志,以及在每个主机上 /var/log/containers/ 路径下的日志文件,日志将被发送到被选择的目标服务。 这里主要记录下Fluentd的部署过程,如何通过Fluentd把K8S集群Pod日志推送到Elastic上,Elastic和Kibana的部署不在这里赘述。 0x02 部署 Fluentd 1、fluentd-config-map.yaml 配置Fluentd日志收集器的配置文件。 apiVersion: v1 data: fluent.conf: |- <source> @type tail #path /var/log/containers/*.log path /var/log/containers/*xfshcloud-dxp*.log pos_file fluentd-docker.pos tag kubernetes.* #<parse> ...

阅读全文>>

标签: fluentd elastic kibana

评论(0) (469)

在使用Rancher2.5管理的K8S集群中,解决Rancher不可用时通过kubectl进行集群管理的问题

2023-12-15 myluzh Kubernetes

0x00 前言 最近在管理Rancher2.5部署的K8S集群发现一个问题,一旦Rancher Server不可用,直接在K8S master通过kubectl管理集群也会提示连接不到api提示不可用。 分析Rancher UI生成的kubeconfig文件可以发现,当kubectl访问K8S API SERVER的时候,请求是先发送到Rancher,然后再通过cluster agent转发给 K8S API SERVER。 所以需要开启“授权集群访问地址”,这样就算Rancher不可用,也可以通过kubectl --context 切换上下文,直接对集群直接进行管理。 0x01 启用Rancher授权集群访问地址 在rancher web面板中,找到集群,编辑,授权集群访问地址,启用,保存。 0x02 复制kubecfg配置 1、进入rancher面板,选择集群,在右上角打开“Kubeconfig文件”,复制kubeconfig文件内容。 可以看到kubecfg文件里面有两个上下文,第一个上下文就是先到rancher,再通过cluster agent转发到k8s api server的。 第二个上下文就...

阅读全文>>

标签: rancher kubectl 授权集群访问地址 上下文

评论(0) (349)

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) (1658)