/images/hugo/avatar.png

go 基础数据类型

Go 的类型系统

1. Go 中的数据类型

Go语言将数据类型分为四类:基础类型、复合类型、引用类型和接口类型。基础类型,包括:数字、字符串和布尔型。复合数据类型包括数组和结构体(通过组合简单类型,来表达更加复杂的数据结构)。引用类型包括指针、切片、字典、函数、通道,虽然数据种类很多,但它们都是对程序中一个变量或状态的间接引用。函数和通道并不属于我们通常所说的数据类型,我们放在后面相关章节来介绍。

go 变量及流程控制

Golang Hello World!

1. Hello World

抛开数据结构,代码封装和复杂的库文件,我们接触一门新语言的第一步可能就是学会这门语言的基础语法。下面是我写的 go 的一个 “Hello World” 程序。在这个简单的代码中包含了很多 Go 基础语法的内容:

go 入门开篇

如果编程的世界是海贼王里的"大航海时代", go 语言可能就是"草帽海贼团"

1. 要去学 Go 了

学习和使用 Python 有三四年,好想学一门新语言,打算学 Go。为什么是 Go,其实更想学 Rust。但是 Go 有谷歌这个大佬,背靠k8s,显然学 Go 好处大大的。其实也无所谓,哪天想学 Rust,就拿来看看对比着学可能更快。当然学 Go 还有另一个重要原因,想转运维开发。

容器网络

1. 容器网络

所谓“网络栈”,就包括了:

  1. 网卡(Network Interface)
  2. 回环设备(Loopback Device)
  3. 路由表(Routing Table)
  4. iptables 规则。

对于一个进程来说,这些要素,其实就构成了它发起和响应网络请求的基本环境。在大多数情况下,我们都希望容器进程能使用自己 Network Namespace 里的网络栈,即:拥有属于自己的 IP 地址和端口。这时候,一个显而易见的问题就是:这个被隔离的容器进程,该如何跟其他 Network Namespace 里的容器进程进行交互呢?

自定义存储插件:FlexVolume与CSI

在 Kubernetes 中,存储插件的开发有两种方式:FlexVolume 和 CSI。

1. PV和PVC 的绑定

在 Kubernetes 中,实际上存在着一个专门处理持久化存储的控制器,叫作 Volume Controller。这个 Volume Controller 维护着多个控制循环,其中有一个循环,扮演的就是撮合 PV 和 PVC 的“红娘”的角色。它的名字叫作 PersistentVolumeController。PersistentVolumeController 会不断地查看当前每一个 PVC,是不是已经处于 Bound(已绑定)状态。如果不是,那它就会遍历所有的、可用的 PV,并尝试将其与这个“单身”的 PVC 进行绑定。

PV、PVC

1. PV/PVC

PV 描述的,是持久化存储数据卷。这个 API 对象主要定义的是一个持久化存储在宿主机上的目录,比如一个 NFS 的挂载目录。通常情况下,PV 对象是由运维人员事先创建在 Kubernetes 集群里待用的。