云计算K8s组件系列—- 存储CSI

CSI是Container Storage Interface的简称,旨在能为容器编排引擎和存储系统间建立一套标准的存储调用接口,实现解耦,通过该接口能为容器编排引擎提供存储服务。


云计算K8s组件系列(八)---- 存储

Kubernetes 和 Docker 类似,也是通过 Volume 的方式提供对存储的支持。但是Kubernetes对容器存储做了一层自己的抽象,相比docker的存储来讲,K8S的存储抽象更全面,更面向应用,体现在如下几个方面:

  • 提供卷生命周期管理
  • 提供“声明”式定义,将使用者和提供者分离
  • 提供存储类型定义

云计算容器系列---- Docker image 优化

我们一般都是使用dockerfile来制作镜像。但是在镜像制作中,也有着很多的注意点,比如优化构建后的体积,还要优化构建速度,时区,证书等等。



云计算K8s系列---- K8s informer

client-go中的informer机制可以说是客户端交互中一种比较特别的机制,适用于像k8s这种控制器的各种模式。


云计算K8s系列---- K8s client

client-go就是字面意思,一个go的client库,用于和k8s的各种资源对象进行交互,但是它比传统的api客户端库多了很多高级的交互机制,比如informer,dynamic机制,这些也和k8s机制有一定的关系。


云计算K8s系列---- K8s autoscaler

Pod 水平自动伸缩(Horizontal Pod Autoscaler)和垂直扩展(Vertical Pod Autoscaler)以及CA( cluster-autoscaler)特性,可以说是很实用的特性,完全自动化实现了资源的充分利用,所以单独拿出来说说。


云计算K8s系列---- kruise

OpenKruise 是阿里云开源的大规模应用自动化管理引擎,在功能上对标了 Kubernetes 原生的 Deployment / StatefulSet 等控制器,但 OpenKruise 提供了更多的增强功能如:优雅原地升级、发布优先级/打散策略、多可用区workload抽象管理、统一 sidecar 容器注入管理等,都是经历了阿里巴巴超大规模应用场景打磨出的核心能力。这些 feature 帮助我们应对更加多样化的部署环境和需求、为集群维护者和应用开发者带来更加灵活的部署发布组合策略。


云计算K8s系列---- 网络CNI

CNI(Container Network Interface)是 CNCF 旗下的一个项目,最早是由CoreOS发起的容器网络规范,由一组用于配置 Linux 容器的网络接口的规范和库组成,同时还包含了一些插件。


云计算K8s系列---- K8s controller

pod只是运行的最小单元,我们一般不会直接使用pod。大部分情况下我们都是使用deployment(RS),deamonset,statefulset,job等控制器来完成部署调度使用。


云计算K8s组件系列(一)---- K8s apiserver 详解

apiserver是集群的核心,是k8s中最重要的组件,因为它是实现声明式api的关键。

kubernetes API server的核心功能是提供了kubernetes各类资源对象(pod、RC 、service等)的增、删、改、查以及watch等HTTP Rest接口。


云计算K8s组件系列(四)---- K8s kubelet 详解

kubelet用于处理master节点下发到本节点的任务,管理Pod以及Pod中的容器。每个kubelet进程会在API Server上注册节点信息,定期向master节点汇报节点资源的使用情况,并通过cAdvisor监控容器和节点的资源。


云计算容器系列---- Docker network

容器网络的建立和控制是一种结合了network namespace、iptables、linux网桥、route table等多种Linux内核技术的综合方案,在宿主机和容器内分别创建虚拟接口,并让它们彼此连通。

  • network namespace:主要提供了关于网络资源的隔离,在网络栈中,包括网卡(Network Interface)、回环设备(Loopback Device)、路由表(Routing Table)和 iptables 规则、IPv4和IPv6协议栈、/proc/net目录、/sys/class/net目录、端口(socket)等。
  • linux Bridge:功能相当于物理交换机,为连在其上的设备(容器)转发数据帧。如docker0网桥。
  • iptables:主要为容器提供NAT以及容器网络安全。
  • veth pair:两个虚拟网卡组成的数据通道。在Docker中,用于连接Docker容器和Linux Bridge。一端在容器中作为eth0网卡,另一端在Linux Bridge中作为网桥的一个端口。

云计算K8s组件系列(五)---- K8s proxy 详解

kube-proxy是Kubernetes的核心组件,部署在每个Node节点上,它是实现Kubernetes Service的通信与负载均衡机制的重要组件; kube-proxy负责为Pod创建代理服务,从apiserver获取所有server信息,并根据server信息创建代理服务,实现server到Pod的请求路由和转发,从而实现K8s层级的虚拟转发网络。


云计算K8s组件系列(二)---- K8s scheduler 详解

kube-scheduler是 kubernetes 系统的核心组件之一,主要负责整个集群资源的调度功能,根据特定的调度算法和策略,将 Pod 调度到最优的工作节点上面去,从而更加合理、更加充分的利用集群的资源。


云计算K8s系列---- istio

istio是一款 Service Mesh 模式的落地实现,是目前servicemesh实现使用最多的一个方案,istio本身和平台无关,但是一般都是和k8s结合使用,首先k8s服务间通信和流控的相关操作。



云计算K8s组件系列—- 容器运行时CRI

CRI就是kubelet 把对容器的操作,统一地抽象成一个接口。这样,kubelet 就只需要跟这个接口打交道了。而作为具体的容器项目,比如 Docker、 rkt、runV,它们就只需要自己提供一个该接口的实现,然后对 kubelet 暴露出 gRPC 服务即可。


云计算K8s系列---- K8s API

为了方便查阅 API 接口的详细定义,Kubernetes 使用了 swagger-ui 提供 API 在线查询功能,其官网为http://kubernetes.kansea.com/docs/reference/, Kubernetes开发团队会定期更新、生成 UI 及文档。

运行在 Master 节点上的 API Server 进程同时提供了 swagger-ui 的访问地址:http://: /swagger-ui/。假设我们的 API Server 安装在 192.168.1.128 服务器上,绑定了 8080 端口,则可以通过访问 http://192.168.1.128:8080/swagger-ui/ 来查看 API 信息。

Swagger UI 是一款 REST API 文档在线自动生成和功能测试软件,关于 Swagger 的内容请访问官网 http://swagger.io。




云计算K8s系列---- K8s Principle

很多的集群管理项目(比如 Yarn、Mesos,以及 Swarm)所擅长的,都是把一个容器,按照某种规则,放置在某个最佳节点上运行起来。这种功能,我们称为“调度”。

Kubernetes 项目所擅长的,是按照用户的意愿和整个系统的规则,使用声明式api,完全自动化地处理好容器之间的各种关系。这种功能,就是我们经常听到的一个概念:编排。

所以说,Kubernetes 项目的本质,是为用户提供一个具有普遍意义的容器编排工具。



云计算K8s系列---- operator

Operator 是指一类基于 Kubernetes 自定义资源对象(CRD)和控制器(Controller)的云原生拓展服务,其中 CRD 定义了每个 operator 所创建和管理的自定义资源对象,Controller 则包含了管理这些对象所相关的运维逻辑代码。

其实operator和控制器是差不多,只不过operator是针对特定应用程序的控制器,比如数据库etcd,需要结合很多etcd的专业部署运维知识做逻辑处理。


云计算K8s系列---- K8s Tutorial

kubernetes是一种容器管理开源项目,用于管理容器化的工作负载和服务,可促进声明式配置和自动化,支持容器自身的不足。

  • 解决了容器安全问题:密钥与配置管理
  • 容器管理:部署,升级回滚,扩缩容,自愈等。
  • 网络问题:服务发现和负载均衡