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

0%

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 本身并不清楚各种类代表的什么。这个类的概念在其他存储系统中有时被称为 “配置文件”。

参考文档:

阅读全文 »

Volume简介

Container 中的文件在磁盘上是临时存放的,这会带来两个问题:1)当容器崩溃时文件会丢失;2)同一Pod中运行多个容器并共享文件时,容器重启时状态丢失。Kubernetes 卷(Volume) 这一抽象概念能够解决这两个问题。

Docker卷的本质是目录,存在与一个或多个容器中,由docker挂载到容器,但不属于联合文件系统,因此能够绕过“联合文件系统”提供一些用于持续存储或共享数据的特性。
K8S卷的本质也是目录,其中可能存有数据,Pod 中的容器可以访问该目录中的数据。 所采用的特定的卷类型将决定该目录如何形成的、使用何种介质保存数据以及目录中存放的内容。

Kubernetes中的卷分为两类:临时卷和持久卷。临时卷会遵从 Pod 的生命周期,和Pod一起创建和删除;持久卷的生命周期独立于pod的生命周期。

Kubernetes中常用的卷类型包括:

  • configMap:临时卷/投射卷,常用来存储配置数据
  • secret:临时卷/投射卷,常用来存储配置数据,使用base64加密数据
  • downwardAPI:临时卷/投射卷,让 Pod 里的容器能够直接获取到这个 Pod API 对象本身的信息。
  • emptyDir:临时卷,存储pod中的数据,pod删除时数据会被删除
  • hostPath:持久卷,将主机节点上的文件或目录挂载到pod中(存在许多安全风险,尽量避免使用)
  • local:持久卷,创建pv时指定pv所在节点,使用pvc的pod会被调度到指定节点,将主机节点上的文件或目录挂载到pod中
  • nfs:持久卷,将 NFS (网络文件系统) 挂载到的pod中。
  • persistentVolumeClaim:持久卷申领,不需要知道持久卷细节。
  • projected:投射卷能将多个卷来源映射到同一目录上。

持久卷(PersistentVolume,PV) 是集群中的一块存储,可以由管理员事先制备, 或者使用存储类(Storage Class)来动态制备。 持久卷是集群资源,就像节点也是集群资源一样。PV 持久卷和普通的 Volume 一样, 也是使用卷插件来实现的,只是它们拥有独立于任何使用 PV 的 Pod 的生命周期。 此 API 对象中记述了存储的实现细节,无论其背后是 NFS、iSCSI 还是特定于云平台的存储系统。

持久卷申领(PersistentVolumeClaim,PVC) 表达的是用户对存储的请求。概念上与 Pod 类似。 Pod 会耗用节点资源,而 PVC 申领会耗用 PV 资源。Pod 可以请求特定数量的资源(CPU 和内存);同样 PVC 申领也可以请求特定的大小和访问模式 (例如,可以要求 PV 卷能够以 ReadWriteOnce、ReadOnlyMany 或 ReadWriteMany 模式之一来挂载,参见访问模式)。

PVC与PV是一一对应关系,不能一个PVC挂载多个PV,也不能一个PV挂载多个PVC。

参考文档:

阅读全文 »

CoreDNS简介

CoreDNS是一个灵活的、插件化的DNS服务器,能够响应来自容器、虚拟机或任何需要DNS服务的设备的查询。
CoreDNS具有强大的插件机制,可以按需添加功能。它是云原生计算基金会的一个顶级项目,并且是Kubernetes的默认DNS解析器。

参考文档:

阅读全文 »