golang学习笔记

一、golang基础知识

1、os包提供一些函数和变量,os.Args是一个字符串Slice,通过s[i]来访问

2、bufio包,可以简洁高效的处理输入和输出,最有用的为扫描器Scanner的类型

3、转义字符verb

%d 十进制整数

%x,%o,%b 十六进制,八进制,二进制

%f,%g,%e 浮点数

%t 布尔型

%c 字符(Unicode码点)

%s字符串

%q 带引号字符串

%v 内置格式的任何值

%T 任何值的类型

%% 百分号

4、for _, arg := range os.Args[1:] range产生一对值:索引和这个索引处元素的值

5、ioutil.ReadAll读取整个响应结果ioutil.ReadAll(resp.Body)

6、程序结构

函数名首字母大小写决定其可见性是否跨包

变量,短变量生命可以用来声明和初始化局部变量

指针的值是一个变量的地址。使用指针可以在无需知道变量名字的情况下,间接读取或更新变量的值

函数返回局部变量的地址是非常安全的。

因为一个指针包含变量的地址,所以传递一个指针参数给函数,能够让函数更新间接传递的变量值。

new函数,表达式new(T)创建一个未命名的T类型变量,初始化为T类型的零值,并返回其地址(地址类型为*T)

p := new(int)

fmt.Println(*p) //输出“0”

变量的生命周期,选择使用堆或者栈上的空间分配,不是基于使用var还是new声明变量,而是根据回收时间

7、包初始化从初始化包级别的变量开始,这些变量按照声明顺序初始化,在依赖已解析完毕的情况下,根据依赖的顺序进行。

8、func init() {/* .... */ } 这个init函数不能被调用和被引用,当程序启动的时候,init函数按照他们声明的顺序自动执行。

9、go语言数据类型基础类型、聚合类型、引用类型、接口类型。

10、基础类型,运算符&^是按位清除(AND NOT)表达式z=x&^y中,若y的某位是1,则z对应位为0;否则,它就等于x的对应位。

11、转义符

\a 警告或响铃

\b 退格符

\f 换页符

\n 换行符

\r 回车符

\t 制表符

\v 垂直制表符

\' 单引号

\" 双引号

\\ 反斜杠

字符串字面量,十六进制转义字符写成\xhh,h为十六进制且两位;八进制转义字符写成\ooo,必须使用三位八进制数字(0-7),且不能超过\377,字符串字面量的转义让我们用码点的值知名Unicode字符,有两种形式,\uhhhh表示16位码点值。\Uhhhhhhhh表示32位码点值,其中一个h代表一个十六进制数字。"\u4e16\u756e", "\U00004e16\U0000754c"

 

 

 

二、kubernetes相关

1、istio

Metrics

Collecting new metics

kubectl apply -f samples/bookinfo/telemetry/metrics.yaml

通过port-forward可以暴露出prometheus,通过9090端口访问:

kubectl -n istio-system port-forward -address 0.0.0.0 $(kubectl -n istio-system get pod -l app=prometheus -o jsonpath='{.items[0].metadata.name}') 9090:9090 &

杀掉port-forward进程:

killall kubectl

司令官Pilot

Pilot管理所有的Envoy,允许用户创建Envoy代理之间的流量转发路由规则,并配置故障恢复功能上报规则,例如超时、重试及熔断。还支持设置安全(认证、鉴权、策略控制)遥测上报等规则。xDS服务发现让每个Envoy都能了解上游服务信息。


 

2、Kubernetes

ServiceAccount

service account应用于pod访问api-server时认证授权,在namespace创建的时候会生成默认的default的service account,我们在这个namespace下创建pod的时候,如果没有指定serviceaccount,那么在spec下就会生成serviceAccount: default,表明当前pod使用default的SA,使用client-go下的in-cluster目录下的main生成镜像,对k8s的api进行操作时,默认会提示没有权限。因为现在只是有了SA,但是没有给SA赋权,赋权通过Rolebinding和clusterrolebinding来绑定SA和role或者clusterrole 的关系,因为k8s在创建的时候已经默认创建了一些不同权限的clusterrole,我这边首先需要读取API的权限,通过绑定clusterrole的view来获得读取权限:

kubectl create clusterrolebinding default-view --clusterrole=view --serviceaccount=default:default
如果要创建deployment或者service等资源时,需要有写的权限,简单期间可以直接绑定admin的clusterrole

kubectl create clusterrolebinding default-admin --clusterrole=admin --serviceaccount=default:default
下面是service account的详细介绍:

https://tonybai.com/2017/03/03/access-api-server-from-a-pod-through-serviceaccount/

3、client-go

https://www.bookstack.cn/read/huweihuang-kubernetes-notes/develop-client-go.md

kubernetes Informer

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值