2020年5月
-
吾八哥学Golang(九):Golang里的map和sync.map
map是一种无序的基于key-value的数据结构,Go语言中的map是引用类型,必须初始化才能使用,且不需要引入任何第三方库即可使用。map的基础用法map声明map类型声明方式如下:var 变量名 [key类型]value类型例如:var m map[string]intmap创建map变量创建可以使用如下方法:m := make(map[string]int) // 或指定存储长度 m := make(map[str...
-
apps/v1版本下使用client-go实现kubernetes回滚的方法
在extensions/v1beta1版本下,client-go的api接口下的deployment支持rollback方法来回滚,使用方法如下: ... rollback := &v1beta1.DeploymentRollback{ Name: name, Rollb...
-
使用client-go API来实现yaml文件的k8s部署
实现思路yaml文件先转为json格式,然后json反序列化为deployment对象实现代码package main import ( "context" "encoding/json" "fmt" "io/ioutil" "log" v1 "k8s.io/api/apps/v1" metav1 "k8s.i...
-
kubernetes扩容、缩容
扩容是用在高峰期访问量过大的情况下,当前deployment的pod数量已经无法支撑业务的时候,需要扩展更多的pod数量。缩容是指在业务空闲期只需要少数的pod即可满足业务需求,太多的pod是资源浪费,所以这个时候就需要缩容。手动扩缩容手动调整pod数量使用kubectl scale命令可以调整pod的副本数量,可以指定deployment的pod数量,使用方法如下:5bug-MacBook:~$ kubectl scale deployment k8s-demo ...
-
kubernetes滚动更新、回滚
什么是滚动更新?滚动更新是指允许通过使用新的实例逐步更新 Pod 实例,零停机进行 Deployment 更新。新的 Pod 将在具有可用资源的节点上进行调度,最大好处是零停机,整个更新过程始终有副本在运行,从而保证业务不宕机。滚动更新允许以下操作:将应用程序从一个环境提升到另一个环境(通过容器镜像更新)回滚到以前的版本持续集成和持续交付应用程序,无需停机Replication Controller 和 ReplicaSetReplication Controller用来确保容器应用的副本数始终保持在用户定义的副本...
-
golang里sync.Map包的使用方法
sync.Map简介在Go语言里内置的常规map是只支持并发读,但不支持并发写操作的,常见的错误信息:fatal error: concurrent map writes. 但在golang里已经提供了封装好的线程安全map的包sync.Map,可以看看sync.Map的定义:// Map is like a Go map[interface{}]interface{} but is safe for co...