一个计算机技术爱好者与学习者

0%

问题简述

怎样在K8S集群中发布一个新的项目?怎样判断一个项目是发布成功了还是失败了?怎样访问一个项目?怎样实现灰度发布?怎样实现发布过程中的并发度控制、暂停、继续、取消?怎样实现回滚?

本文中,会努力寻求这些问题的答案。

参考文档:

阅读全文 »

Golang包管理工具简介

大一点的项目,通常会依赖很多第三方包。Golang把所有的第三方包都放在GOPATH/src目录下,且每个包仅保留一个版本。如果两个项目依赖不同版本的第三方包,就会产生问题。

为了解决这个问题,go在1.5版本引入了vendor属性(默认关闭),并在1.6版本中默认开启了vendor属性。简单来说,vendor属性就是让go编译时,优先从项目源码树根目录下的vendor目录查找代码(可以理解为切了一次GOPATH),如果vendor中有,则不再去GOPATH中去查找。

但是vendor目录又带来了新的问题:
(1)vendor目录中依赖包没有版本信息。这样依赖包脱离了版本管理,对于升级、问题追溯,会有点困难。
(2)如何方便的得到本项目依赖了哪些包,并方便的将其拷贝到vendor目录下?

为了解决这些问题,开发者在vendor基础上开发了多个管理工具,比较常用的有godep、govendor、glide,以及官方的dep和gomod。
本文中,我们来了解一下godep、govendor和gomod,并重点学习gomod。

参考文档:

阅读全文 »

client-go简介

直观上看,用户可以使用kubectl、客户端库或者REST请求来访问K8S API。
而实际上,无论是kubectl还是客户端库,都是封装了REST请求的工具。

client-go作为一个客户端库,能够调用K8S API,实现对K8S集群中资源对象(包括deployment、service、ingress、replicaSet、pod、namespace、node等)的增删改查等操作。

源码地址:kubernetes/client-go
接口文档:kubernetes - GoDoc

阅读全文 »

Helm简介

Helm is the best way to find, share, and use software built for Kubernetes.

helm是k8s的包管理工具,就像yum之于centos,apt之于ubuntu。不同的是,yum管理的是软件包,helm管理的是配置好的k8s资源包。这种配置好的k8s资源包,按照chart的包格式进行包装。以下是wordpress的chart包结构:

1
2
3
4
5
6
7
8
9
10
wordpress/
Chart.yaml # A YAML file containing information about the chart
LICENSE # OPTIONAL: A plain text file containing the license for the chart
README.md # OPTIONAL: A human-readable README file
requirements.yaml # OPTIONAL: A YAML file listing dependencies for the chart
values.yaml # The default configuration values for this chart
charts/ # A directory containing any charts upon which this chart depends.
templates/ # A directory of templates that, when combined with values,
# will generate valid Kubernetes manifest files.
templates/NOTES.txt # OPTIONAL: A plain text file containing short usage notes

Helm2包括两个组件:客户端(Helm Client)和服务端(Tiller)。Helm发送指令给Tiller(gRPC协议),Tiller主要用于管理各种应用发布的版本,并且与k8s进行交互。
不过,在 Helm3 中 Tiller 被移除掉了,Helm直接与k8s进行交互,版本相关的数据存储在k8s中。

Helm3中命令也发生了变化:

  • helm delete 更名为 helm uninstall
  • helm inspect 更名为 helm show
  • helm fetch 更名为 helm pull

旧的命令依然可以使用。

参考文档:

阅读全文 »

StorageClass简介

StorageClass 为管理员提供了描述存储 “类” 的方法。 不同的类型可能会映射到不同的服务质量等级或备份策略,或是由集群管理员制定的任意策略。 Kubernetes 本身并不清楚各种类代表的什么。这个类的概念在其他存储系统中有时被称为 “配置文件”。

参考文档:

阅读全文 »