- 博客(194)
- 收藏
- 关注
原创 shell : git push ssh_exchange_identification: Connection closed by remote host fatal: Could not read
背景git push 代码报错ssh_exchange_identification: Connection closed by remote hostfatal: Could not read from remote repository.Please make sure you have the correct access rightsand the repository exists.解决办法:确认是否在git仓库上注册 ssh 公钥有可能是网络问题怎么检查是否网络问题?
2022-01-12 14:22:01
963
原创 k8s: rs的滚动更新
ReplicationController rolling update实现了pod的滚动更新 strategy: rollingUpdate: maxSurge: 25% maxUnavailable: 25% type: RollingUpdate.spec.strategy.rollingUpdate.maxSurge 表示Scale Up新的ReplicaSet时,按照比例计算出允许的MaxSurge.spec.strategy.rollingUpd
2021-12-23 08:49:07
509
原创 golang: interface 使用
Go 语言提供了另外一种数据类型即接口,它把所有的具有共性的方法定义在一起,任何其他类型只要实现了这些方法就是实现了这个接口。package maintype inter1 interface { F1()string}type inter2 interface { F2()string}type inter3 interface { F3()string}type inter0 interface { inter1 inter2}type inter interface {
2021-11-03 21:03:02
230
原创 golang :rsa加密
golang的 rsa加密可以参考如下func Sign(pk, context string) string { block, _ := pem.Decode([]byte(pk)) if block == nil { panic("私钥错误") } private, err := x509.ParsePKCS1PrivateKey(block.Bytes) if err != nil { panic("PrivateKey error") } h := crypto.Hash.N
2021-08-17 10:00:54
1425
原创 istio : 支持的filter类型
istio支持的所有的filter类型可以分为以下几类HTTP filter// Buffer HTTP filter Buffer = "envoy.filters.http.buffer" // CORS HTTP filter CORS = "envoy.filters.http.cors" // Dynamo HTTP filter Dynamo = "envoy.filters.http.dynamo" // Fault HTTP filter Fault = "envoy.fi
2021-07-20 14:09:32
344
原创 istio:VirutualService-默认gateway
VirutualService 没有指定 gateways 字段 istio 会默认加上一个叫 “mesh”的保留 Gateway,表示集群内部所有 Sidecar,此时只针对集群内的访问生效。集群外要访问需要显示指定gateway
2021-07-07 17:02:04
117
原创 istio :安装参数之outboundTrafficPolicy.mode
背景:Istio有一个安装选项meshConfig.outboundTrafficPolicy.mode,用于配置外部服务的sidecar处理,即那些未在Istio的内部服务注册表中定义的服务。如果此选项设置为ALLOW_ANY,则Istio代理允许对未知服务的调用通过。如果该选项设置为REGISTRY_ONLY,那么Istio代理将阻止没有在mesh中定义HTTP服务或服务条目的任何主机。ALLOW_ANY是默认值,无需控制对外部服务的访问。实验ALLOW_ANY情况下允许外部服务直接访问
2021-07-07 15:40:27
543
原创 istio :envoy的限制端口
Istio sidecar代理使用以下端口和协议。为避免端口与sidecar冲突,应用程序不应使用特使使用的任何端口。
2021-07-07 10:34:02
226
原创 golang:各种异步等待集合
golang中各种异步等待写法集合package waitimport ( "context" "errors" "math/rand" "sync" "time" "k8s.io/apimachinery/pkg/util/runtime")// For any test of the style:// ...// <- time.After(timeout):// t.Errorf("Timed out")// The value for ti
2021-06-02 18:22:15
788
原创 go:获取所有的系统环境变量
遍历读取所有的系统环境变量package mainimport ( "os" "strings")func getEnvs() { envs := os.Environ() for _, e := range envs { parts := strings.SplitN(e, "=", 2) if len(parts) != 2 { continue }else{ println(string(parts[0]),string(parts[1])) } }}
2021-05-07 15:39:28
1525
原创 kubernetes:Unable to connect to the server: x509
背景:Unable to connect to the server: x509: certificate is valid for 10.96.0.1, 10.0.1.76, not 119.28.78.191报错原因:Connection error: Get https://119.28.78.191:6443/api/v1/namespaces/default/pods?limit=500: x509: certificate is valid for 10.96.0.1, 10.0.1.7
2021-04-16 15:08:16
2751
原创 helm :helm3 添加 repo 仓库
helm3添加仓库helm repo add --username=pf --password=password myrepo https://demo.goharbor.io/chartrepo/helmcharts
2021-04-15 15:40:08
2218
原创 kubernetes : 取消lable
kubectl label namespaces XXX keyps:kubectl label namespaces kube-node-lease istio.io/rev-
2021-03-16 11:55:25
293
原创 kubernetes : cncf 项目代码搜索
cncf社区近期添加了一个非常好用的能力,项目代码全局搜索能力看看官方的说明:CNCF目前有一套非常强大的开发工具,可以让贡献者的工作更轻松。从特定于项目的工作流工具到通用的项目级监视工具,有许多工具可以帮助开发人员完成日常工作。我能想到的一个非常有价值的工具就是代码搜索CodeSearch正在成为开发人员工作流程中的一个重要工具,因为它使代码导航更容易、更容易访问和更快(通过浏览器)。当有多个存储库彼此之间有依赖关系时,它的重要性就更加复杂了(就像CNCF的情况一样)。它还可以很容易地理解哪些rep
2020-10-12 15:54:59
156
原创 kubernetes :list & watch 理解
参考资料:找到两篇比较好的文章https://juejin.im/post/6844903661689110535添加链接描述https://www.kubernetes.org.cn/3567.html添加链接描述
2020-10-10 14:56:44
845
原创 kubernetes : client-go 使用demo
背景使用 client-go与k8s交互前提k8s能外网访问,本地pc有kubeconfig文件代码package getResourceimport ( "flag" v1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/klog" "os" "path/filepath" "time" "k8s.io/client-go/kubernetes" "k8s.io/client-go/tools/clientcmd")fun
2020-10-10 11:09:03
803
原创 go : scp文件到指定服务器
使用代码 实现scp 拷贝文件到指定服务器、package mainimport ( "fmt" "io/ioutil" "log" "time" "github.com/mitchellh/go-homedir" "golang.org/x/crypto/ssh")func main() { sshHost := "" sshUser := "root" sshPassword := "" sshType := "" //password 或者 key sshKeyPa
2020-09-30 17:35:28
1058
原创 golang :追加写文件操作
go 怎么追加写文件?package mainimport ( "bufio" "fmt" "os")func main() { filePath := "/etc/hosts" file, err := os.OpenFile(filePath, os.O_WRONLY|os.O_APPEND, 0666) if err != nil { fmt.Println("文件打开失败", err) } defer file.Close() //写入文件时,使用带缓存的 *Wr
2020-09-04 17:02:14
3113
原创 Linux :关于git:您尚未完成合并(MERGE_HEAD存在)
push代码的时候,别人已经更新代码error: 您尚未结束您的合并(存在 MERGE_HEAD)。提示:请在合并前先提交您的修改。fatal: 因为存在未完成的合并而退出。解决办法git merge --abortgit reset --mergefelixpeng@FELIXPFCHEN-MB0 TKETest % git merge --abortfelixpeng@FELIXPFCHEN-MB0 TKETest % git reset --mergefelixpeng@FELI
2020-08-07 17:35:39
17372
5
原创 docker :删除/var/lib/docker/overlay2,容器启动失败
背景:服务器磁盘压力,删除了/var/lib/docker/overlay2 下的文件,导致重新启动容器失败上图完整模拟实验问题分析:关于overlay2存储可以参考https://www.lagou.com/lgeduarticle/70618.html解决办法: docker system prune -a我们看到什么东西都没有了重启docker systemctl restart docker然后启动一个容器试试问题完美解决ps: 如果不重启docker 还是
2020-07-31 12:49:28
5165
2
原创 go :如何优雅地超时退出
业务代码中,我们怎么让一段程序,在某个时间段内执行,然后优雅退出?本文给出一种办法:使用wait.pollpackage mainimport ( "fmt" "time" "k8s.io/apimachinery/pkg/util/wait" "k8s.io/klog")func main() { for { a := wait.Poll(time.Second, time.Second*5, func() (done bool, err error) { fmt.Pr
2020-07-23 20:31:25
476
原创 go :tag实现json字段转换
背景:我们都知道go的struct中,如果字段需要对外使用,就需要使用首字母大写的格式,但是如果API中约定要使用小写字母开头呢?比如:type CbsVolume struct { // cbs id CbsDiskId *string // fs类型 FsType *string // 是否只读 ReadOnly *bool }此时如果执行json.Marshal(),结构体会有三个字段CbsDiskId,FsType,ReadOnly,都是首字母大写的如果我们要想使
2020-07-13 15:25:07
944
原创 golang: import cycle not allowed
报错:import cycle not allowed原因:循环导包所致解决办法:分析代码,找到循环倒入的代码处,进行修改举例:我有两个包 cluster 和workloadcluster中有个test1 函数,test1中引入了workload的常量func test1(type string) { switch a { case workload.ClusterTypeDev: case workload.ClusterTypeTest: case workload.Cl
2020-06-12 19:45:53
338
原创 golang:自定义类型转换 non-interface type int32 on left
报错:non-interface type int32 on left要点:传进来的参数不是interface类型那么做类型断言都是回报 non-interface的错误需要借助interface{}()进行转换案例:type IntStr struct { int32 string}func test(){ var a int32 b:=interface{}(a).(IntStr) klog.Info(b)}...
2020-06-11 16:29:23
3862
原创 kubernetes:源码编译
1.golang环境搭建安装包下载三个地址任选 https://dl.google.com/go https://storage.googleapis.com/golang http://www.golangtc.com/static/go环境变量设置export GOROOT=/usr/local/goexport PATH=$PATH:$GOROOT/binexport GOPATH=/data/goexport PATH=$PATH:$GOPATHexport GOPRO
2020-05-21 17:31:45
352
原创 kubernetes: coredns故障 /etc/coredns/Corefile问题
现象 coredns挂掉查看日志报错/etc/coredns/Corefile:3 -Error during parsing: Unknow driective ‘ready’解决办法:找到 coredns 挂载 Corefile的cmkubectl describe pod/XXX -oyaml即可查看corefile文件发现第三行是个ready删除ready 即可恢复环境kubectl edit cm/coredns -n kube-system -oyaml
2020-05-14 19:20:01
5508
原创 ginkgo: ginkgo配合gomega demo
官方文档参考:http://onsi.github.io/ginkgo/https://onsi.github.io/gomega/#matchjsonjson-interface说明gomega 里面有很多断言判断的方法, 本文就是参考 官方文档实践的, 入门的同学可以参考以下代码代码test.gopackage testtype Farm struct { Animal [...
2020-04-30 16:30:04
774
1
原创 ginkgo:case打标签, 选择执行
背景,ginkgo编写的case如何打标签,选择执行package namespaces_testimport ( "fmt" . "github.com/onsi/ginkgo" . "github.com/onsi/gomega")var ( )var _ = Describe("ns test", func() { It("[create]测试", func...
2020-04-30 15:09:38
465
原创 ginkgo:初学者指南
什么是ginkgo:ginkgo是一个用go写的**BDD(Behavior Driven Development)**的测试框架,一般用于Go服务的集成测试。ginkgo的特点BDD的代码风格Describe("delete app api",func(){ It("should delete app permanently",func(){...}) It("shoul...
2020-04-10 11:52:39
7382
原创 云原生下的测试开发-初谈
背景:本人之前一直在做私有云环境下的devops,运维开发相关的工作,年初来到某厂开始了基于云原生下测试开发工作生涯,本着学习成长的态度,虽然工作性质有所改变,但是也坚持着自己喜欢的云原生方向,能从产品,安全的视角看到不一样的云产品,对自己的技术也是一次不一样的提升。对新的工作岗位上的自己有以下几点要求:1.对社区的技术热情不改之前做devops的时候视角比较宽泛,只要是社区的新技术,...
2020-04-10 09:54:03
538
原创 kubernetes:使用 kubectl patch 更新 API 对象
背景:对于已经发布的服务。如何做到在线更新呢?总结有这么几种办法:kubectl annotate, kubectl edit, kubectl replace, kubectl scale, 和 kubectl apply。本文介绍 kubectl patch的办法比如创建一个如下的podapiVersion: apps/v1 # for versions before 1.9.0 ...
2020-04-09 15:54:59
1523
原创 linux :关于 region zone vpc的理解
背景:在公有云场景下,一定会碰到这么几个词region zone vpc ,具体来说说名词解释region : 地域,顾名思义是标志地区用的,比如 西安,上海,广东 就是不通的regionzone:叫可用域 ,一般指的是 某个region下的可用域,一个region下有多个可用域 ,比如 北京1 ,北京2 ,北京3vpc:Virtual Private Cloud 虚拟私有云 与...
2020-04-07 11:24:47
1120
原创 istio: istio学习思维导图
istio作为优秀的servicemesh解决方案,目前炙手可热,如何系统学习istio呢,可以参考下面的思维导图
2020-03-15 17:56:20
259
原创 kubernetes:cs接口废弃,怎么来查看集群状态
kubernetes 在1.16版本的时候cs接口算是正式废弃掉了,表现如下bash-5.0# kubectl get csNAME AGEcontroller-manager <unknown>scheduler <unknown>etcd-2 <unknown>...
2020-03-13 21:54:07
970
4
原创 kubernetes: 修改node 角色
新安装的kubernetes环境有时候node节点的 roles会缺失,我们可以手动添加上去root@k8s-master:~# kubectl get nodesNAME STATUS ROLES AGE VERSIONk8s-master Ready master 50d v1.16.7k8s-node1 ...
2020-03-11 14:18:55
3561
原创 kubernetes: hpa实践
环境信息本文的实验环境是k3sENV:#[root@k8s-1 ~]# kubectl get nodes -o wide 确保metrics-server运行正常hpa配置apiVersion: autoscaling/v2beta1kind: HorizontalPodAutoscalermetadata: name: pod-hpaspec: scaleT...
2020-03-10 13:29:46
413
原创 linux : X.509数字证书
什么是X.509数字证书X.509是密码学里公钥证书的格式标准。X.509证书已应用在包括TLS/SSL在内的众多网络协议里,同时它也用在很多非在线应用场景里,比如电子签名服务。X.509证书里含有公钥、身份信息(比如网络主机名,组织的名称或个体名称等)和签名信息(可以是证书签发机构CA的签名,也可以是自签名)。对于一份经由可信的证书签发机构签名或者可以通过其它方式验证的证书,证书的拥有者就可以...
2020-03-10 08:19:40
1049
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人