摘要:
1、什么是Kubernetes Event Kubernetes的事件(Event)是一种资源对象(Resource Object),用于展示集群内发生的情况,Kubernetes系统中的各个组件会将运行时发生的各种事件上报给Kubernetes API Server。例如,调度器做了什么决定,某些 阅读全文
摘要:
判断文件是否存在,需要用到"os"包中的两个函数: os.Stat()和os.IsNotExit() func Stat(name string) (FileInfo, error) Stat返回描述文件f的FileInfo类型值。如果出错,错误底层类型是*PathError。 func IsNot 阅读全文
摘要:
1、概述 Golang是一种强类型语言,虽然在代码中经常看到i:=12这种写法,这其实是编译器在编译期间自动做了类型推断。编译器会对数据进行类型检查,不同类型的数据不能赋值,不能在函数中传参。强类型语言有一些优势,很多的错误会在编译期间被检查出来,不像php和python等弱类型语言,很多错误只有运 阅读全文
摘要:
1、概述 在Golang语言中,函数也是一种数据类型,可以赋值给一个变量,则该变量就是一个函数类型的变量了。通过该变量可以对函数调用。 2、Go语言函数变量详解 定义 func fun() { } var f func() f = fun 说明 我们首先定义了一个 fun 的函数,接着我们声明了一个 阅读全文
摘要:
1、问题 构建fluentbit-operator工程manager模块docker镜像时报如下错误: ....... Step 5/15 : RUN go mod download > Running in c54961171660 go: github.com/fsnotify/fsnotify 阅读全文
摘要:
1、概述 在Kubernetes中,为了实现组件高可用,同一个组件需要部署多个副本,例如多个apiserver、scheduler、controller-manager等,其中apiserver是无状态的,每个组件都可以工作,而scheduler与controller-manager是有状态的,同一 阅读全文
摘要:
1、自定义类型 在Go语言中有一些基本的数据类型,如string、整型、浮点型、布尔等数据类型,Go语言中可以使用type关键字来定义自定义类型。 自定义类型是定义了一个全新的类型。我们可以基于内置的基本类型定义,也可以通过struct或者函数类型来定义。 //将KubeInt定义为int类型 ty 阅读全文
摘要:
1、概述 Mutex 是一个互斥锁,可以创建为其他结构体的字段;零值为解锁状态。Mutex 类型的锁和线程无关,可以由不同的线程加锁和解锁。 type Mutex struct { state int32 sema uint32 } 2、方法 Lock func (m *Mutex) Lock() 阅读全文
摘要:
1、概述 1.1 基本概念 原子性:一个或多个操作在CPU的执行过程中不被中断的特性,称为原子性。这些操作对外表现成一个不可分割的整体,他们要么都执行,要么都不执行,外界不会看到他们只执行到一半的状态。 原子操作:进行过程中不能被中断的操作,原子操作由底层硬件支持,而锁则是由操作系统提供的API实现 阅读全文
摘要:
1、概述 在 Go 里有很多种定时器的使用方法,像常规的 Timer、Ticker 对象,以及经常会看到的 time.After(d Duration) 和 time.Sleep(d Duration) 方法。以上这些定时器的使用方法都来自Golang 原生 time 包,使用time包可以用来执行 阅读全文
摘要:
1、概述 应用启动过程中可能需要一些敏感信息,比如访问数据库的用户名密码或者密钥。将这些信息直接保存在容器镜像中显然不妥,Kubernetes 提供的解决方案是 Secret。Secret 会以密文的方式存储数据,避免了直接在配置文件中保存敏感信息。Secret 会以 Volume 的形式被 mou 阅读全文
摘要:
1、问题引入 oklog/run 包提供了一套非常简单、易用的 Go routine 编排框架。在介绍 oklog/run 前,我们先考虑以下问题: 假设我们有四个 Go routine 组件,如图所示,分别是运行一个状态机 sm.Run 、启动一个 HTTP 服务器、执行定时任务 cronJobs 阅读全文
摘要:
1、概述 在golang中有很多方法来处理命令行参数,简单情况下可以不使用任何库,直接使用os.Args;但是golang标准库提供了flag包来处理命令行参数;还有第三方提供的处理命令行参数的库cobra、cli等。 2、os.Args 如果你只是简单的想要获取命令行参数,可以像下面的代码示例一样 阅读全文
摘要:
1、概述 sort包实现了四种基本排序算法:插入排序、归并排序、堆排序和快速排序。 但是这四种排序方法是不公开的,它们只被用于sort包内部使用。所以在对数据集合排序时不必考虑应当选择哪一种排序方法,只要实现了sort.Interface定义的三个方法:获取数据集合长度的Len()方法、比较两个元素 阅读全文
摘要:
1、Golang 获取系统环境变量 Golang 要获取系统的环境变量需要导入"os"包,通过os包中的Getenv方法来获取。 func Getenv(key string) string { } 示例代码: package main import ( "fmt" "os" ) func main 阅读全文