Blog

Docker 1.13安装和新功能

2017-01-24
Docker

Docker 1.13新功能 #

Docker 1.13在去年年底发布,是一个重要的版本。以下是Top 10新增功能:

  1. 正式支持服务栈: docker stack
  2. 正式支持插件: docker plugin
  3. 添加在Swarm集群环境下对密码、密钥管理的secret管理服务docker secret
  4. 增加docker system命令
  5. 可以直接使用docker-compose.yml进行服务部署
  6. 添加docker service滚动升级出现故障后回滚的功能
  7. 增加强制再发布选项docker service update --force
  8. 允许docker service create映射宿主端口,而不是边界负载均衡网络端口
  9. 允许docker run炼乳制定的swarm mode的overlay网络
  10. 解决中国GFW墙掉docker-engine apt/yum源的问题

Docker 1.13安装 #

官方的安装文档在内容也做了更新。

...

Linux系统启动过程及用户环境初始化

2017-01-23
Linux

系统启动可以分为以下六个阶段:BIOS, MBR, GRUB, Kernel, Init, Runlevel

linux-boot-process

BIOS #

BIOS(基本输入输出系统),是计算机启动时加载的第一个软件。

计算机在通电后首先由BIOS对自身的硬件环境进行自检,这就是POST(Power On Self Test开机自检),这个过程主要是硬件环境自检,例如检查CPU, 内存, 主板等设备是否有故障存在。

...

Go语言中关于JSON的整理

2017-01-22
Go

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上使用Elasticsearch+Fluentd+Kibana集中管理日志

2017-01-21
Kubernetes

Kubernetes和EFK #

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

...

在Kubernetes上部署有状态服务

2017-01-20
Kubernetes

Kubernetes对于无状态服务的支持已经十分成熟,有状态服务需要保存状态,Kubernetes提供了Volume和Persistent Volume用于服务的状态保存。 很多有状态服务都是以集群形式部署的,因此在在Kubernetes上部署有状态服务时还需要考虑集群管理的需求。针对这个需求Kubernetes提供了StatefulSet(在Kubernetes 1.5之前是PetSet)。

...

Kubernetes集群安全:Api Server认证

2017-01-19
Kubernetes

Kubernetes提供了三种级别的客户端认证方式:

  • HTTPS证书认证,是基于CA根证书签名的双向数字证书认证方式,是最严格的认证
  • HTTP Token认证,通过Token识别每个合法的用户
  • HTTP Basic认证

HTTP Token认证和Http Basic认证是相对简单的认证方式,Kubernetes的各组件与Api Server的通信方式仍然是HTTPS,但不再使用CA数字证书。

...

Kubernetes资源对象之Persistent Volumes

2017-01-19
Kubernetes, Ceph

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核心组件:Api Server

2017-01-18
Kubernetes

kube-api-server提供Kubernetes各种资源的CRUD和Watch相关的Http Restful Api,是整个集群的中心。

Kubernetes的Restful Api #

Api简介 #

kube-api-server以静态Pod的形式运行在master节点上,内置容器使用hostNetwork。默认监听master节点的8080端口(对应--insecure-port),HTTPS的端口默认为6443(对应--secure-port)。 使用kubectl命令时实际上也是和kube-api-server的restful api交互的。

...

在Kubernetes Pod中使用Ceph RBD Volume

2017-01-18
Kubernetes, Ceph

Ceph集群上的操作 #

创建Ceph Pool #

Ceph集群安装完成后,默认的Pool是rbd:

1ceph osd lspools
20 rbd,

一个Ceph集群可以有多个pool,pool是逻辑上的存储池。不同的pool可以有不一样的数据处理方式,例如replica size, placement groups, crush rules,snapshot等等。

...

Kubernetes服务的滚动升级

2017-01-17
Kubernetes

当需要升级集群中的某个服务时,需要停止该服务相关的Pod,pull最新的docker镜像,然后重新启动。 如果一下把所有Pod都停止,服务在升级的时间内会不可用。因此,Kubernetes提供了滚动升级的功能。

kubectl rolling-update命令滚动升级 #

集群中有下面的RC:

...

© 2024 青蛙小白