Kubernetes容器网络
容器是什么容器其实是一种沙盒技术。顾名思义,沙盒就是能够像一个集装箱一样,把你的应用“装”起来的技术。这样,应用与应用之间,就因为有了边界而不至于相互干扰;而被装进集装箱的应用,也可以被方便地搬到任何地方运行。对于大多数如Docker、RKT,等Linux容器,其实就是利用Linux Namespace技术创建隔离的进程空间、文件系统、网络命名空间、用户空间、主机名的一组进程。
所以说,容器,其实是一种特殊的进程而已。
一个“容器”,实际上是一个由 Linux Namespace、Linux Cgroups 和 rootfs 三种技术构建出来的进程的隔离环境。
容器优势
开销更少,无需像虚拟化一样虚拟完整的内核以及初始化环境,和启动一些多余的系统进程。
可移植性强,容器可以轻松在不同平台移植,如直接运行docker run -d --name nginx -p 80:80 nginx
高效率,开发打完包构建容器后,可以更快部署,发布
敏捷开发,更快的移植,无需担心依赖的环境不一致的问题
….
Kebernetesk8s 是什么?为什么要引入 k8s,kubernetes 其实是goo ...
Go语言基础之接口
接口(interface)定义了一个对象的行为规范,只定义规范不实现,由具体的对象来实现规范的细节。
接口接口类型在Go语言中接口(interface)是一种类型,一种抽象的类型。
interface是一组method的集合,是duck-type programming的一种体现。接口做的事情就像是定义一个协议(规则),只要一台机器有洗衣服和甩干的功能,我就称它为洗衣机。不关心属性(数据),只关心行为(方法)。
为了保护你的Go语言职业生涯,请牢记接口(interface)是一种类型。
为什么要使用接口1234567891011121314type Cat struct{}func (c Cat) Say() string { return "喵喵喵" }type Dog struct{}func (d Dog) Say() string { return "汪汪汪" }func main() { c := Cat{} fmt.Print ...
Go语言基础之map
Go语言中提供的映射关系容器为map,其内部使用散列表(hash)实现。
mapmap是一种无序的基于key-value的数据结构,Go语言中的map是引用类型,必须初始化才能使用。
map定义Go语言中 map的定义语法如下:
1map[KeyType]ValueType
其中,
KeyType:表示键的类型。
ValueType:表示键对应的值的类型。
map类型的变量默认初始值为nil,需要使用make()函数来分配内存。语法为:
1make(map[KeyType]ValueType, [cap])
其中cap表示map的容量,该参数虽然不是必须的,但是我们应该在初始化map的时候就为其指定一个合适的容量。
map基本使用map中的数据都是成对出现的,map的基本使用示例代码如下:
12345678func main() { scoreMap := make(map[string]int, 8) scoreMap["张三"] = 90 scoreMap["小明"] = 100 fmt.Println(scoreMap) ...
Go语言基础之结构体
Go语言中没有“类”的概念,也不支持“类”的继承等面向对象的概念。Go语言中通过结构体的内嵌再配合接口比面向对象具有更高的扩展性和灵活性。
类型别名和自定义类型自定义类型在Go语言中有一些基本的数据类型,如string、整型、浮点型、布尔等数据类型, Go语言中可以使用type关键字来定义自定义类型。
自定义类型是定义了一个全新的类型。我们可以基于内置的基本类型定义,也可以通过struct定义。例如:
12//将MyInt定义为int类型type MyInt int
通过type关键字的定义,MyInt就是一种新的类型,它具有int的特性。
类型别名类型别名是Go1.9版本添加的新功能。
类型别名规定:TypeAlias只是Type的别名,本质上TypeAlias与Type是同一个类型。就像一个孩子小时候有小名、乳名,上学后用学名,英语老师又会给他起英文名,但这些名字都指的是他本人。
1type TypeAlias = Type
我们之前见过的rune和byte就是类型别名,他们的定义如下:
12type byte = uint8type rune = int32
类型定义和类型 ...
