Go
文章平均质量分 84
云原生实战指南
小白也看得懂的云原生指南
展开
-
K8S Informer机制原理解读 | Reflector
Reflector用于监控指定资源的Kubernetes资源,当监控的资源发生变化时,触发相应的变更事件,例如Added(资源添加)事件、Updated(资源更新)事件、Deleted(资源删除)事件,并将其资源对象存放到本地缓存DeltaFIFO中。(2)listMetaInterface.GetResourceVersion用于获取资源版本号,ResourceVersion (资源版本号)非常重要,Kubernetes中所有的资源都拥有该字段,它标识当前资源对象的版本号。原创 2024-01-19 13:45:31 · 509 阅读 · 0 评论 -
K8S Informer机制原理解读 | Indexer
Indexer有4个非常重要的数据结构,分别是Indices、Index、Indexers及IndexFunc。items字段中存储的是资源对象数据,其中items的key通过keyFunc函数计算得到,计算默认使用MetaNamespaceKeyFunc函数,该函数根据资源对象计算出/格式的key,如果资源对象的为空,则作为key,而items的value用于存储资源对象。ThreadSafeMap是一个内存中的存储,其中的数据并不会写入本地磁盘中,每次的增、删、改、查操作都会加锁,以保证数据的一致性。原创 2024-01-19 13:42:40 · 481 阅读 · 0 评论 -
K8S Informer机制原理解读 | 架构设计
在Kubernetes系统中,组件之间通过HTTP协议进行通信,在不依赖任何中间件的情况下需要保证消息的实时性、可靠性、顺序性等。那么Kubernetes是如何做到的呢?答案就是Informer机制。Kubernetes的其他组件都是通过client-go的Informer机制与Kubernetes API Server进行通信的。原创 2024-01-18 15:57:55 · 1433 阅读 · 0 评论 -
我敢说!你没见过这么细的client-go讲解
类似于kubectl命令,通过ClientSet列出所有运行中的Pod资源对象,ClientSet Example代码示例如下:运行以上代码,列出default命名空间下的所有Pod资源对象的相关信息。首先加载kubeconfig配置信息,kubernetes.NewForConfig通过kubeconfig配置信息实例化clientset对象,该对象用于管理所有Resource的客户端。原创 2024-01-18 10:53:18 · 599 阅读 · 0 评论 -
保送阿里云的云原生学习路线
近期好多人都有咨询学习云原生有什么资料。与其说提供资料不如先说一说应该如何学习云原生。Linux基础知识:云原生技术通常在Linux环境中运行,因此建议首先掌握Linux的基础知识,包括命令行操作、文件系统、权限管理等。容器化技术:学习容器化技术是云原生的基础。理解Docker和容器的概念,学习如何构建、管理和部署容器,并了解容器镜像和容器编排工具(如Docker Compose)的使用。Kubernetes:学习Kubernetes是云原生领域的核心。原创 2024-01-16 17:03:59 · 1133 阅读 · 0 评论 -
看完此文,谁还敢说你不会创建k8s资源
我们都知道,K8S中一切皆资源,在使用K8S时,所有的pod或者controller都是通过yaml文件进行创建的。那么接下来,就和大家一起看一下K8S是如何创建资源的。原创 2024-01-16 17:03:25 · 398 阅读 · 0 评论 -
光K8S的目录结构就够你学一天!
由于Kubernetes项目全球开发者众多,这导致早期的代码包较多,尤其是kube-apiserver项目,其内部所引用的代码包特别多。随着Kubernetes系统版本的迭代,逐渐将部分包进行了合并,其中staging/目录为核心包暂存目录,该目录下的核心包多以软连接的方式链接到vendor/k8s.io目录。Go语言官方对项目的结构设计没有强制要求,早期的Go语言开发者都喜欢将包文件代码放置在项目的src/目录下,如nsqio开源项目,开发者喜欢将入口文件放入apps/目录。原创 2024-01-15 17:59:27 · 444 阅读 · 0 评论 -
关于K8S组件,你真正了解多少?
Kubernetes系统用于管理分布式节点集群中的微服务或容器化应用程序,并且其提供了零停机时间部署、自动回滚、缩放和容器的自愈(其中包括自动配置、自动重启、自动复制的高弹性基础设施,以及容器的自动缩放等)等功能。Kubernetes系统最重要的设计因素之一是能够横向扩展,即调整应用程序的副本数以提高可用性。设计一套大型系统,且保证其运行时健壮、可扩展、可移植和非常具有挑战性,尤其是在系统复杂度增加时,系统的体系结构会直接影响其运行方式、对环境的依赖程度及相关组件的耦合程度。原创 2024-01-15 17:32:36 · 969 阅读 · 0 评论 -
小公司也可以0成本构建统一的告警管理体系
使用Go语言编写,能够对接 Alertmanager 将告警信息发送至钉钉群。但无法发送短信、电话等告警。代码地址:https://github.com/timonwong/prometheus-webhook-dingtalk。原创 2024-01-12 15:50:09 · 795 阅读 · 0 评论 -
Docker实战10|实现volum数据卷
上一篇文章中,仔细讲解了Docker是如何改变当前的root文件系统以及mount等操作。本文继续讲解Docker是如何实现Volum数据卷的。原创 2024-01-10 13:57:15 · 1062 阅读 · 0 评论 -
Docker实战09|使用AUFS包装busybox
以上三篇主要实现了。接下来的时间会和大家一起学习Docker是如何构造镜像的。原创 2024-01-09 15:08:52 · 1110 阅读 · 0 评论 -
Docker实战08|Docker管道及环境变量识别
上一篇文章中,讲解了如何通过Go语言实现对Docker Cgroup的资源限制具体文章可见有需要的小伙伴可以回顾一下。接下来本文会详细介绍一下Docker 管道及环境变量识别。原创 2024-01-09 10:00:06 · 726 阅读 · 1 评论 -
Docker实战07|Docker增加容器资源限制
前几篇中,对Cgroups包含的3个概念进行了介绍,这里做如下简单回顾。• cgroup hierarchy中的节点,用于管理进程和subsystem的控制关系。• subsystem作用于hierarchy上的cgroup节点,并控制节点中进程的资源占用。• hierarchy将cgroup通过树状结构串起来,并通过虚拟文件系统的方式暴露给用户。根据上面3个概念的关系,先创建出如下的数据结构。见。原创 2024-01-08 12:53:08 · 1102 阅读 · 0 评论 -
Docker实战06|深入剖析Docker Run命令
Linux下的/proc文件系统是由内核提供的,它其实不是一个真正的文件系统,只包含了系统运行时的信息(比如系统内存、mount设备信息、一些硬件配直等),它只存在于内存中,而不占用外存空间。它以文件系统的形式,为访问内核数据的操作提供接口。实际上,很多系统工具都是简单地去读取这个文件系统的某个文件内容,比如lsmod,其实就是cat /proc/modules。当遍历这个目录的时候,会发现很多数字,这些都是为每个进程创建的空间,数字就是它们的PID。原创 2024-01-08 12:52:35 · 1501 阅读 · 0 评论 -
Docker实战05|Docker构建流程分析
在上一文中主要介绍了Cgroups基本原理以及实现。相信读完以后可以更加深入的了解Linux Cgroups的底层实现原理了。本文继续针对Docker 在构建时都干了哪些事情做一些详细的讲解。原创 2024-01-06 20:30:44 · 962 阅读 · 0 评论 -
Docker实战04|Union File System
在上一文中主要介绍了Cgroups基本原理以及实现。相信读完以后可以更加深入的了解Linux Cgroups的底层实现原理了。本文继续针对Docker 在构建时都干了哪些事情做一些详细的讲解。原创 2024-01-06 10:19:23 · 369 阅读 · 0 评论 -
Docker实战03|Cgroups
在上一文中,主要讲述了构建Linux容器的Namespace技术,它帮助进程隔离出自己单独的空间,但Docker是怎么限制每个空间的大小,保证它们不会互相争抢的呢?这就要用到Linux的Cgroups技术。Cgroups 是 Linux 下的一种将进程按组进行管理的机制,它提供了对一组进程及将来子进程的资源限制控制和统计的能力。这些资源包括 CPU、内存、存储、网络等。通过 Cgroups 可以方便地限制某个进程的资源占用,并且可以实时地监控进程的监控与统计信息。原创 2024-01-04 14:53:13 · 1441 阅读 · 0 评论 -
Docker实战02|Namespace
我们经常听到,Docker是一个使用了LinuxNamespace和Cgroups的虚拟化工具。但是,什么是LinuxNamespace,它在Docker内是怎么被使用的?说到这里,很多人就会迷茫。下面就先来介绍一下LinuxNamespace及它们是如何在容器中使用的。原创 2024-01-03 19:08:17 · 973 阅读 · 0 评论 -
Docker实战01|容器与开发语言
Docker 是一个开源工具,它可以将你的应用打包成一个标准格式的镜像,并且以容器的方式运行。Docker 容器将一系列软件包装在一个完整的文件系统中,这个文件系统包含应用程序运行所需要的一切:代码、运行时工具、系统工具、系统依赖,几乎有任何可以安装在服务器上的东西。这些策略保证了容器内应用程序运行环境的稳定性,不会被容器外的系统环境所影响。Docker 容器具有以下 3 个特点。轻量级:在同一台宿主机上的容器共享系统 Kernel,这使得它们可以迅速启动而且占用内存极少。原创 2024-01-03 12:06:57 · 862 阅读 · 0 评论 -
在线 Go 语言教程 —— Go 语言之旅(gotour)
Go 语言之旅,支持在线敲代码练习的官方入门教程原创 2023-05-04 15:46:27 · 845 阅读 · 0 评论 -
简单的Go语言爬虫模拟登陆,Cookie
Go语言爬虫,模拟登陆,Cookie存储,获取页面原创 2021-12-06 15:44:40 · 2184 阅读 · 0 评论