青蛙小白
#Go

Go语言中关于JSON的整理

JSON作为一种在不同平台间的数据交换格式,Go的标准包encoding/json中实现了对json的编码(marshal)和解码(unmarshal)功能。 json.Marshal json.Marshal函数实现Json的编码: 如果给定的值不等于nil并且实现了json.Marshaler接口,调用json.Marshaler的MarshalJSON方法完成编码 如果没有实现json.Marshaler接口,而是实现了encoding.TextMarshaler,将调用其MarshalText完成编码 否则将按照下面的默认情况进行编码: bool 编码为 JSON boolean 整形,浮点型等数值 编码为 JSON number string 编码为 JSON string array和slice编码为JSON array, []byte作为例外会被编码成base64 string map[string]interface{}编码为JSON object struct编码为JSON object(只适用struct的可导出字段) nil编码为JSON null json tag定制struct编码 json:"-"忽略字段

#Kubernetes

在Kubernetes上使用Elasticsearch+Fluentd+Kibana集中管理日志

Kubernetes和EFK 我们使用Kubernetes作为微服务架构的基础,在我们的系统中每个微服务都有多个副本,每个副本的数量以及所在的Node都是可变的。因此对于日志需要集中化管理,在使用Kubernetes之前,我们的系统使用ELK(Elasticsearch+Logstash+Kibana)实现日志的聚集、查询和展现。由于Kubernetes推荐使用Fluentd,所以我们尝试使用EFK(Elasticsearch+Fluentd+Kibana)作为我们的日志集中管理组件。

#Kubernetes #Ceph

Kubernetes资源对象之Persistent Volumes

PV和PVC的概念 Kubernetes的Persistent Volume是对存储的抽象,这个抽象包含两个资源: 持久化卷 PersistentVolume,后边简称PV 持久卷申请PersistentVolumeClaim,后边简称PVC PV是集群中的一块网络存储,也是Kubernetes集群的一种资源。 Pod的Volume与PV的区别是:Volume的生命周期和Pod相同,Pod被删除时,Volume和保存在Volume中的数据就被删除了;对于PV,即使挂载PV的Pod被删除了,PV仍然存在,PV上的数据也还在。

#Kubernetes

从集群外部访问Kubernetes Service

Kubernetes通过Service资源在Kubernetes集群内针对容器实现了服务发现和负载均衡。 如果服务要暴露到集群外部,从集群外部访问服务,需要借助一些集群外部提供的负载均衡策略。 先来看一下Kubernetes Service的类型: Kubernetes Service类型 ClusterIp:默认类型,自动分配集群内部可以访问的虚拟IP, ClusterIp NodePort:基于ClusterIp提供的功能,为Service在Kubernetes集群的每个Node上绑定一个端口,即NodePort,集群外部可基于任何一个NodeIP:NodePort的形式来访问Service。Service在每个Node的NodePort端口上都可用。 LoadBalancer:基于NodePort提供的功能,借助云服务供应商提供的外部负载均衡器,将请求转发到各个NodeIp:NodePort。只有特定的云服务商和GCE(Google Container Engine)支持该方案。 Service提供的负载均衡功能,但在使用上有以下限制:

在Kubernetes上运行SonarQube

文本描述如何在Kubernetes上运行一个Sonarqube和MySQL。 准备 kubernetes集群构成如下,这里是单机的试验环境。 kubectl get nodes NAME STATUS AGE cent0 Ready,master 1h mysql的pod mysql-rc.yaml apiVersion: v1 kind: ReplicationController metadata: name: mysql spec: replicas: 1 selector: app: mysql template: metadata: labels: app: mysql spec: containers: - name: mysql image: mysql:5.7 ports: - containerPort: 3306 env: - name: MYSQL_ROOT_PASSWORD value: "123456" - name: MYSQL_DATABASE value: sonardb - name: MYSQL_USER value: sonar - name: MYSQL_PASSWORD value: sonar 创建RC