胡伟煌

个人博客

置顶 kube-controller-manager源码分析(三)之 Informer机制

kube-controller-manager源码分析(三)之 Informer机制 以下代码分析基于 kubernetes v1.12.0 版本。 本文主要分析k8s中各个核心组件经常使用到的Informer机制(即List-Watch)。该部分的代码主要位于client-go这个第三方包中。 此部分的逻辑主要位于/vendor/k8s.io/client-go/tools/cache......

置顶 kubelet源码分析(五)之 syncPod

kubelet源码分析(五)之 syncPod 以下代码分析基于 kubernetes v1.12.0 版本。 本文主要分析kubelet中syncPod的部分。 1. managePodLoop managePodLoop通过读取podUpdateschannel的信息,执行syncPodFn函数,而syncPodFn函数在newPodWorkers的时候赋值了,即kubelet.sy......

k8s版本记录

1.27 参考: Kubernetes 在 v1.27 中移除的特性和主要变更 https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.27.md#changelog-since-v1260 202304 | K8s 1.27 正式发布 - DaoCloud Enterprise (......

如何开发一个Operator

开发一个k8s operator组件主要会用到以下几个仓库或工具: kubebuilder/operator-sdk:主要用于创建CRD对象。 controller-manager:主要用于实现operator的controller逻辑。 本文以kubebuilder的工具和controller-manager example为例。 1. 准备工具环境及创建项目 安装kubebu......

金丝雀发布

Deployment配置金丝雀发布 金丝雀发布是指控制更新过程中的滚动节奏,通过“暂停”(pause)或“继续”(resume)更新发布操作。通过一小部分的版本发布实例来观察新版本是否有异常,如果没有异常则依次发布剩余的实例。 1. 设置发版节奏 主要是两个字段的设置: maxSurge:最大发版实例数,可以创建的超出期望 Pod 个数的 Pod 数量。可以是百分比或者是数字。 maxUn......

OpenYurt之TunnelServer源码分析

本文以commit id:180282663457080119a1bc6076cce20c922b5c50, 对应版本tag: v1.2.1 的源码分析tunnel-server的实现逻辑。 1. Tunnel-server简介 云与边一般位于不同网络平面,同时边缘节点普遍位于防火墙内部,采用云(中心)边协同架构,将导致原生 K8s 系统的运维监控能力面临如下挑战: K8s 原生运维能......

Grafana部署

Docker部署 1docker run -d -p 3000:3000 grafana/grafana:latest K8S部署 helm部署 123helm repo add grafana https://grafana.github.io/helm-chartshelm search repo grafana 参考: Install Grafana | Grafana docum......

kube-prometheus-stack的使用

1. kube-prometheus-stack简介 kube-prometheus-stack是prometheus监控k8s集群的套件,可以通过helm一键安装,同时带有监控的模板。 各组件包括 grafana kube-state-metrics prometheus alertmanager node-exporter 2. 安装kube-prometheus-stack 执行以......

OpenYurt之Tunnel-Agent源码分析

1. Tunnel-Agent简介 tunnel-agent是通过daemonset部署在每个worker节点,通过grpc协议与云端的tunnel-server建立连接。以下分析tunnel-agent的源码逻辑。 常用的启动参数: 1234567- args: - --node-name=$(NODE_NAME) - --node-ip=$(POD_IP) - --tunnelse......

kubeconfig的使用

1. kubeconfig说明 默认情况下,kubectl 在 $HOME/.kube 目录下查找名为 config 的文件。 你可以通过设置 KUBECONFIG 环境变量或者设置 --kubeconfig参数来指定其他 kubeconfig 文件。 kubeconfig内容示例: 以下证书以文件的形式读取。 12345678910111213141516171819apiVersion:......