自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(196)
  • 收藏
  • 关注

原创 go设计模式 : 工厂模式

【代码】go设计模式 : 工厂模式。

2023-04-03 10:50:48 150 1

原创 go : 支持的设计模式

go 支持的设计模式

2023-04-03 10:46:49 371

原创 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 1500

原创 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 696

原创 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 299

原创 git diff:只展示变化文件名

git diff --name-only也可以带参数 ,分支名或者 commitid

2021-10-08 17:28:37 3705

原创 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 1706

原创 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 458

原创 istio:VirutualService-默认gateway

VirutualService 没有指定 gateways 字段 istio 会默认加上一个叫 “mesh”的保留 Gateway,表示集群内部所有 Sidecar,此时只针对集群内的访问生效。集群外要访问需要显示指定gateway

2021-07-07 17:02:04 238

原创 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 750

原创 istio :envoy的限制端口

Istio sidecar代理使用以下端口和协议。为避免端口与sidecar冲突,应用程序不应使用特使使用的任何端口。

2021-07-07 10:34:02 314

原创 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 1319

原创 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 2019

原创 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 3557

原创 helm :helm3 添加 repo 仓库

helm3添加仓库helm repo add --username=pf --password=password myrepo https://demo.goharbor.io/chartrepo/helmcharts

2021-04-15 15:40:08 2520

原创 kubernetes : 取消lable

kubectl label namespaces XXX keyps:kubectl label namespaces kube-node-lease istio.io/rev-

2021-03-16 11:55:25 385

原创 kubernetes : cncf 项目代码搜索

cncf社区近期添加了一个非常好用的能力,项目代码全局搜索能力看看官方的说明:CNCF目前有一套非常强大的开发工具,可以让贡献者的工作更轻松。从特定于项目的工作流工具到通用的项目级监视工具,有许多工具可以帮助开发人员完成日常工作。我能想到的一个非常有价值的工具就是代码搜索CodeSearch正在成为开发人员工作流程中的一个重要工具,因为它使代码导航更容易、更容易访问和更快(通过浏览器)。当有多个存储库彼此之间有依赖关系时,它的重要性就更加复杂了(就像CNCF的情况一样)。它还可以很容易地理解哪些rep

2020-10-12 15:54:59 274

原创 kubernetes :list & watch 理解

参考资料:找到两篇比较好的文章https://juejin.im/post/6844903661689110535添加链接描述https://www.kubernetes.org.cn/3567.html添加链接描述

2020-10-10 14:56:44 1022

原创 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 1045

原创 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 1482

原创 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 5045

原创 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 20838 6

原创 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 5733 3

原创 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 629

原创 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 1056

原创 git:显示所有冲突文件

git ls-files -u | cut -f 2 | sort -u

2020-07-02 19:26:05 4988

原创 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 439

原创 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 4592

原创 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 436

原创 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 6605

原创 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 1018 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 623

原创 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 8885

原创 云原生下的测试开发-初谈

背景:本人之前一直在做私有云环境下的devops,运维开发相关的工作,年初来到某厂开始了基于云原生下测试开发工作生涯,本着学习成长的态度,虽然工作性质有所改变,但是也坚持着自己喜欢的云原生方向,能从产品,安全的视角看到不一样的云产品,对自己的技术也是一次不一样的提升。对新的工作岗位上的自己有以下几点要求:1.对社区的技术热情不改之前做devops的时候视角比较宽泛,只要是社区的新技术,...

2020-04-10 09:54:03 623

原创 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 1663

原创 linux :关于 region zone vpc的理解

背景:在公有云场景下,一定会碰到这么几个词region zone vpc ,具体来说说名词解释region : 地域,顾名思义是标志地区用的,比如 西安,上海,广东 就是不通的regionzone:叫可用域 ,一般指的是 某个region下的可用域,一个region下有多个可用域 ,比如 北京1 ,北京2 ,北京3vpc:Virtual Private Cloud 虚拟私有云 与...

2020-04-07 11:24:47 1366

原创 istio: istio学习思维导图

istio作为优秀的servicemesh解决方案,目前炙手可热,如何系统学习istio呢,可以参考下面的思维导图

2020-03-15 17:56:20 321

原创 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 1165 4

原创 linux :一张git的思维导图

git大家都经常使用,但是偶尔有一些生僻命令还是要查询,那么看这张思维导图就足够了

2020-03-13 20:47:17 199

原创 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 3982

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除