云开发
文章平均质量分 51
SeasonRun
君子不器
展开
-
prometheus直方图实践
Prometheus提供了Counter、Gauge、Histogram、Summary四类指标(详见),可以通过"github.com/prometheus/client_golang/prometheus"自定义采集指标、注册、采集数据、发布URL,以上步骤即构成exporter,发布后创建Service、ServiceMonitor即可。原创 2023-07-24 22:05:00 · 1167 阅读 · 0 评论 -
阿里云NAS存储部署简介
阿里云上申请NAS存储原创 2022-12-02 16:41:01 · 1988 阅读 · 1 评论 -
一点一滴积累
历程中一点一滴积累,好记忆不如烂笔头原创 2022-07-21 10:22:36 · 242 阅读 · 0 评论 -
Operator实践(一)
k8s原生资源是有限的,当遇到某些场景时会发现不够用,此时CRD(Custom Resource Definition,自定义资源)就会派上用场。用户注册自定义的CRD,然后创建对应的资源实例(称为Custom Resource,简称CR),而后通过自己编写Controller来不断地检测当前k8s中所定义的CR的状态,如果状态和预期不一致,则调整。换句话说operator是针对自定义资源的控制器。要构建operator步骤如下:1.安装operator-sdk;安装方式见https://sdk原创 2021-07-12 23:10:58 · 408 阅读 · 0 评论 -
Podman&Buildah
2020年12月k8s宣布后续版本弃用docker,对于长期使用docker的用户该如何应对呢?本文简要分析了使用Podman&Buildah替换docker,基本上能够无缝衔接,快速切换到Podman&Buildah。Skopeo也是作为容器“三剑客”之一被推荐的,其主要提供了远程仓库的管理能力,这一点是docker所不具备的,详情如下:更多详情请参考:https://github.com/containers/.原创 2021-01-10 21:49:24 · 271 阅读 · 0 评论 -
harbor无法访问之重启COMPOSE_HTTP_TIMEOUT
Harbor突然无法访问,采用重启大法解决。步骤如下:登录harbor服务器,进入到harbor安装目录(/var/opt/harbor/harbor); 执行docker-compose restart; 如遇到以下报错, ERROR: for harbor-ui UnixHTTPConnectionPool(host='localhost', port=None): Read timed out. (read timeout=60)ERROR: for registry UnixHT原创 2021-01-07 21:31:54 · 1601 阅读 · 0 评论 -
CI/CD实践之gitlab-runner
sonar-scanner-4.5.0.2216-linux需要java11,原创 2020-12-26 00:02:26 · 319 阅读 · 0 评论 -
k8s 资源对象因ownerReferences指定跨namespace owner被删除问题
场景:使用operator自动创建资源对象的时候ownerReferences中指定了另外一个namespace下的资源对象作为owner,结果资源一旦创建立即被删除,watch到资源被删除,operator又执行创建,于是不断重复创建-删除过程。原因分析:k8s从1.16版本开始,不再支持跨namespace指定属主,即ownerReferences中的name和UID字段不能指定其它namespace中的资源,只能是同一个namespace下的。原文请参考:https://kuberne原创 2020-12-18 14:42:52 · 3063 阅读 · 0 评论 -
golang json.Marshal & json.Unmarshal
json.Marshal:将某种数据结构生成为json字符串json.Unmarshal:将json字符串转换为其他数据结构package mainimport ( "encoding/json" "fmt")type Stu struct { Name string `json:"Name"` Age int Sex string Class *Class `json:"Class"`}type Class struct { Name string Gr原创 2020-12-02 14:43:29 · 1069 阅读 · 0 评论 -
golang基础知识总结
继承继承通过结构体中的匿名字段实现,示例如下,Add和Sub引用了BaseNum结构体,所以Add和Sub是BaseNum的子类。type Add struct { BaseNum}type Sub struct { BaseNum }type BaseNum struct { num1 int num2 int}封装...原创 2020-11-26 22:25:17 · 282 阅读 · 0 评论 -
容器健康检查
Pod 通过两类探针检查容器的健康状态:(1) LivenessProbe 探针:用于判断容器是否健康,告诉 Kubelet 一个容器什么时候处于不健康的状态。如果 LivenessProbe 探针探测到容器不健康,则 Kubelet 将删除该容器,并根据容器的重启策略做相应的处理。如果一个容器不包含 LivenessProbe 探针,那么 Kubelet 认为该容器的 LivenessProbe 探针返回的值永远是 “Success”; (2)ReadinessProbe:用于判断容器是否启动完成且原创 2020-10-21 08:43:25 · 585 阅读 · 0 评论 -
golang Channel学习小结
Golang 里的并发指的是能让某个函数独立于其他函数运行的能力。当一个函数创建为 goroutine 时,Golang 会将其视为一个独立的工作单元。这个单元会被调度到可用的逻辑处理器上执行。Golang 的并发同步模型来自一个叫作通信顺序进程(Communicating Sequential Processes,CSP)的范型(paradigm)。Golang的并发同步通过CSP(一种消息传递模型)在 goroutine 之间传递数据来传递消息,而不是对数据进行加锁来实现同步访问。用于在 gorou原创 2020-10-20 14:07:06 · 286 阅读 · 0 评论 -
golang生成大小写字母数字随机数
package mainimport ( "fmt" "math/rand" "time")var letters = []rune("0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ")func randSeq(n int) string { b := make([]rune, n) r:=rand.New(rand.NewSource(time.Now().UnixNano())).原创 2020-10-09 14:57:24 · 2468 阅读 · 0 评论 -
SSL/TLS协议简介
SSL(Secure Sockets Layer 安全套接字协议),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议。TLS与SSL在传输层与应用层之间对网络连接进行加密。SSL协议位于TCP/IP协议与各种应用层协议之间,为数据通讯提供安全支持。SSL协议可分为两层: SSL记录协议(SSL Record Protocol):它建立在可靠的传输协议(如TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能的支持。 SSL原创 2020-10-09 10:47:40 · 1071 阅读 · 2 评论 -
RESTful架构初探
RESTful架构是目前较为流行的一种互联网软件架构,最早由Roy Thomas Fielding在他2000年的博士论文中提出,它结构清晰、符合标准、易于理解、扩展方便,所以正得到越来越多网站的采用。RESTful架构通常包含以下设计规则:Endpoint(终点,即API的具体网址)在RESTful架构中,每个网址代表一种资源,网址中不允许出现动词,只能有名词,所用的名词常与数据库表的字段相对应,一般而言,数据库表都是同种记录的集合,所以API中的名词应该使用复数。动作使用HTTP动词来表达。原创 2020-10-07 15:42:39 · 190 阅读 · 0 评论 -
golang map初始化
package mainimport "fmt"func main() { var str0 map[string]string fmt.Println(str0) if str0==nil{ fmt.Println("str0 is nil") } //str0["hello"]="world" str1 := make(map[string]string) fmt.Println(str1) if len(str1)==0{ fmt.Println("str1 is .原创 2020-09-06 12:37:17 · 361 阅读 · 0 评论 -
jwttoken解析逻辑
拿到JWTtoken可以先到https://jwt.io进行解析,只要输入jwttoken即可看到解析结果,便于编码时获取自己需要的结果。func Getnssa(jwttoken string) (ns, sa string) { //SecretKey是自己定义的一个常量 claims, err := ParseToken(jwttoken, []byte(SecretKey)) claim := claims.(jwt.MapClaims) var namespace in原创 2020-08-30 20:38:10 · 505 阅读 · 0 评论 -
vault 操作mapping逻辑
1.新增vault新增vault时需要先读取已存在的vault进行mapping ,得到最终的vault data,下述代码中existsecret为已存在的vault,requestBody为新传入的vault。代码同样包含了update逻辑,即当新传入的key与已有的key相等时,则将value更新为新传入的value。m := make(map[string]interface{})datas := make(map[string]interface{})//first verify i原创 2020-08-28 11:45:03 · 258 阅读 · 0 评论 -
golang模糊查询
下面介绍使用fuzzy.Find和string.Contains分别进行模糊查询package mainimport( "github.com/lithammer/fuzzysearch/fuzzy" "strings" "fmt")func main() { //fuzzy words := []string{"cartwheel", "foobar", "wheel", "baz"} match1 :=fuzzy.Find("whl", words) // [cartwhe原创 2020-08-22 22:17:05 · 4114 阅读 · 0 评论 -
golang 访问HTTPS请求跳过证书验证
import "net/http"func main(){ url := "https://XXXXX" user := XXXX paasswd := XXXX payload := strings.NewReader("{\n\t\"username\":" + `"` + user + `"` + ",\n\t\"password\":" + `"` + passwd + `"` + "\n}") req, err :.原创 2020-08-22 21:43:14 · 3834 阅读 · 1 评论 -
openshift3.11更新router证书
本文主要参考https://docs.openshift.com/container-platform/3.11/install_config/redeploying_certificates.html#redeploying-custom-registry-or-router-certificates,但实际执行过程中遇到不少问题,下面下面介绍下实际执行步骤:1.申请证书 openssl req -new -newkey rsa:2048 -sha256 -nodes -subj '/C=CN..原创 2020-07-14 22:19:01 · 1422 阅读 · 0 评论 -
postman报Could not get any response
今天在进行接口测试时遇到以下报错,Could not get any responseThere was an error connecting to https://xxx.com/api/v1/virtualmachine/namespacesWhy this might have happened:The server couldn't send a response:Ensure that the backend is working properlySelf-signed SSL原创 2020-07-01 22:26:07 · 2430 阅读 · 0 评论 -
openshift日志管理---续
前文提到可以通过fluentd将日志发给syslog server,而需要使用该功能需要用到fluent-plugin-remote-syslog-1.1插件,如何确认你安装的fluentd是否包含此插件呢,可按照如下方式操作。docker run -it ose-logging-fluentd:latest /bin/bash...原创 2020-06-23 22:50:45 · 340 阅读 · 0 评论 -
openshift日志管理(二)---fluentd-rsyslog-日志管理平台
上一篇介绍了openshift日志管理,最近需要将openshift日志接入到企业级日志管理平台,参考上文采用了rsyslog server作为中间层传递。本次配置环境为openshift4.2。1.fluentd端配置一开始,只在daemon sets-fluentd环境变量中添加了REMOTE_SYSLOG_HOST字段,但rsyslog server端始终收不到数据,查询发现还需要增加以下字段如果是4.3则不能按照以上配置,请参照以下方式,因为此处有bug。...原创 2020-06-23 19:56:35 · 938 阅读 · 0 评论 -
Openshift日志管理
通常采用EFK进行openshift集群日志管理。EFK集群:Elasticsearch、Fluentd 和 Kibana 的组合那么如果需要将openshift日志发给外部系统呢,当然有很多方法,比如通过Flentd或者Elasticsearch发送。下面介绍通过Fluentd发送日志给外部日志服务器:1.首先,要修改集群日志管理状态为“Unmanaged”,命令如下,修改 managementState: Unmanagedoc edit ClusterLogging in...原创 2020-05-30 21:19:37 · 1215 阅读 · 1 评论 -
禁用 ssl/tls v1和1.1 协议
PCI DSS合规标准于2018年6月30日生效,该标准要求禁用SSL协议和低版本TLS协议。具体如何操作呢,针对haproxy代理服务器和openshift router分别进行讲解。1.haproxy服务器需要修改/etc/haproxy/haproxy.cfg,如下图,添加no-sslv3 no-tlsv10 no-tlsv11重启haproxy服务,systemctl restart haproxy2.opesnhift router禁用低版本协议haproxy route.原创 2020-05-26 21:27:53 · 6064 阅读 · 3 评论 -
error: pathspec ch did not match any file known to git.
今天在git qie切换分支时遇到以下报错$ git checkout cherror: pathspec 'cjh' did not match any file(s) known to git.查看gitlab上确定有ch分支查看本地发现本地没有该分支$ git branch -a应该是本地与远端不同步导致的,于是执行$ git fetch执行完,再执行$ git branch -a此时该分支已经有了,接着执行git checkout ch成功。...原创 2020-05-12 08:48:51 · 364 阅读 · 0 评论 -
openshift在主机节点上操作pod文件
参照前文https://blog.csdn.net/haiziccc/article/details/105658231获取containerIDoc describe pod pod-name -n namespace-name|grep node //获取该pod运行在哪个节点登录到该节点docker ps -a|grep pod-name //获取containID(这个是con...原创 2020-05-08 16:47:56 · 741 阅读 · 0 评论 -
postman测试小结
需要注意的几点:1.Headers里会有一些默认参数,这个不影响测试,无需删除,如有重复会自动以你定义的为准;2.如果报401,请检查下图2中的Authorization是否定义好了,此处需要选择认证方式;...原创 2020-05-07 22:59:45 · 214 阅读 · 0 评论 -
Kubernetes API certificate is expiring in less than 7 days
openshift遇到以下报错,Kubernetes API certificate is expiring in less than 7 days但并不清楚是什么证书过期引发的报警,网上的资料也查看了一些(https://github.com/kubernetes/kubernetes/issues/89611)。最后通过以下方式解决,参照(https://docs.openshif...原创 2020-04-26 11:46:38 · 829 阅读 · 0 评论 -
openshift开启anyuid-pod未使用应用指定账户操作,无权限问题
经常遇到有应用报镜像部署的时候报权限不够,或者应用部署后发现某个功能没权限执行,这是因为openshift默认会分配一个uid 1000920000的用户作为应用运行的账户,如果需要使用指定的账户运行,则需要开启anyuid,而anyuid默认是关闭的。开启方式如下:登录到master,执行oc project porject-name,会提示已经切换到porject-name;...原创 2020-04-24 14:51:55 · 1021 阅读 · 0 评论 -
haproxy证书替换
证书都有有效期,需要定期进行更换,更换步骤如下:cd /etc/haproxy //进入/etc/haproxy目录ls //找到待更换证书名称cp apps.com.cer apps..com.cer.bak //备份证书上传新证书systemctl restart haproxy //重启haproxy服务systemctl status haproxy //查看ha...原创 2020-04-23 15:41:37 · 1228 阅读 · 0 评论 -
openshift常用命令总结-每天学一条-持续更新
oc get nodes //获取集群所有节点oc describe node node-name //查看对应节点详细信息,可以看到运行在该节点下的podoc get pods -n namespace-name //查看对应namespace下podoc describe pod pod-name -n namespace-name //查看pod详细信息oc get limitr...原创 2020-04-21 16:28:41 · 6209 阅读 · 0 评论 -
openshift 获取pod log总结
openshift获取pod log参照如下步骤:oc describe pod pod-name -n namespace-name|grep node //获取该pod运行在哪个节点登录到该节点docker ps -a|grep pod-name //获取containID(这个是containID前12位)docker inspect -f '{{.ID}}' containI...原创 2020-04-21 15:01:26 · 1493 阅读 · 0 评论 -
vscode运行程序时报go: cannot find main module, but found Gopkg.lock
从git上clone代码到本地运行时,报如下错误go: cannot find main module, but found Gopkg.lock in d:\go\src\appserver to create a module there, run: cd ..\.. && go mod initexit status 1Process exiting with ...原创 2020-04-18 21:31:43 · 9787 阅读 · 2 评论 -
openshift修改limitrange
openshift中我们通常会针对namespace设置limitrange,用以限制每个pod的资源使用。在管理界面Resources-quota中可以看到当前namespace的limitrange设置。同样可以通过命令行在服务器上查询,#获取到limitrange对象oc get limitrange -n namespace-name#查看limitrange设置o...原创 2020-04-17 23:35:45 · 458 阅读 · 0 评论 -
openshift权限管理
openshift中创建账户的默认角色是self-provisioner,而该角色是拥有创建project权限的。https://docs.openshift.com/container-platform/4.2/authentication/using-rbac.html但我们并不希望每个用户都拥有该权限,故需要对此进行调整。 oc describe clusterrole.r...原创 2020-04-11 21:02:38 · 449 阅读 · 0 评论 -
持久化存储Reclaim Policy配置
最近需要部署一个MySQL容器,因为数据库存放的数据需要一直保存,就涉及到持久化的概念。容器本身是无状态的,出现问题后随时可销毁,但保存数据的的卷不能被销毁,需要创建一个持久卷。持久卷删除时有三种回售模式,保持(Retain):删除PV后后端存储上的数据仍然存在,如需彻底删除则需要手动删除后端存储volume 删除(Delete):删除被PVC释放的PV和后端存储volume 回收(Rec...原创 2020-03-31 13:14:19 · 8171 阅读 · 0 评论 -
jQuery select下拉框赋值
本文介绍给下拉框和输入框赋值,代码如下:<!DOCTYPE html><html><head><meta charset="utf-8"><title>select</title></head><body> <label class="w3-label">请求领域<...原创 2020-03-27 15:17:31 · 659 阅读 · 0 评论 -
docker镜像源设置,私有源访问设置
配置/etc/docker/daemon.json 文件# vi /etc/docker/daemon.json{ "registry-mirrors": ["http://hub-mirror.c.163.com","https://registry.docker-cn.com","https://docker.mirrors.ustc.edu.cn"], "insecure-reg...原创 2020-03-22 20:25:43 · 1460 阅读 · 1 评论