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> ...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的。 第二个上下文就...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
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: ...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 的时候,实际上访问到...