一、Kubernetes

kubernetes是google2014年开源的一个容器集群管理系统

官方网站:https://kubernetes.io/

中文社区:https://www.kubernetes.org.cn/k8s

在这里插入图片描述

> 用于容器化应用程序的部署,扩展和管理
> 提供了容器编排,资源调度,弹性伸缩,部署管理,服务发现等
> 目标是让部署容器化应用简单高效

(1)Kubernetes组件

  • etcd 保存了整个集群的状态;
  • apiserver 提供了资源操作的唯一入口,并提供认证、授权、访问控制、API注册和发现等机制;
  • controller manager 负责维护集群的状态,比如故障检测、自动扩展、滚动更新等;
  • scheduler 负责资源的调度,按照预定的调度策略将Pod调度到相应的机器上;
  • kubelet 负责维护容器的生命周期,同时也负责Volume(CVI)和网络(CNI)的管理;
  • Container runtime 负责镜像管理以及Pod和容器的真正运行(CRI);
  • kube-proxy 负责为Service提供cluster内部的服务发现和负载均衡;

(2)Kubernetes主要用途

  • 自动化部署、扩展和管理容器应用
  • 资源调度
  • 部署管理
  • 服务发现
  • 扩容缩容
  • 监控

(3)Kubernetes优点

微服务架构

>单体服务拆分成很多小的互相连接的微服务
>实例副本数量根据负载进行调整
>每个微服务的开发者可以自由选择开发技术
>使得系统具备很高的稳定性和快速迭代进化能力

超强的横向扩容能力

>横向扩容能力是互联网业务系统的关键指标
>支持在线完成集群扩容

(4)Kubernetes系统框架和计算模型

在这里插入图片描述

> 管理员操作顺序:先进行管理员身份验证,然后通过API Server控制其他组件进行操作,并且将数据写入ETCD中
> 操作pod需要kubelet接收到API Server的指令进行代理执行
> 外网操作顺序:用户使用外网通过防火墙,到达Kube-proxy进行网络代理映射到服务中

(5)Kubernetes 认证方式

在 Kubernetes 中包含多个以独立进程形式运行的组件
这些组件之间通过 HTTP/GRPC 相互通信,以协同完成集群中应用的部署和管理工作。

组件之间的相互调用都是通过网络进行的。

在进行网络通信时,通信双方需要验证对方的身份,以避免恶意第三方伪造身份窃取信息或者对系统进行攻击。

为了相互验证对方的身份,通信双方中的任何一方都需要做下面两件事情

  • 向对方提供标明自己身份的一个证书
  • 验证对方提供的身份证书是否合法,是否伪造的?

证书的作用如下:

etcd 集群中各个节点之间相互通信使用的证书。
由于一个 etctd 节点既为其他节点提供服务,又需要作为客户端访问其他节点,因此该证书同时用作服务器证书和客户端证书。

etcd 集群向外提供服务使用的证书。该证书是服务器证书。
kube-apiserver 作为客户端访问 etcd 使用的证书。该证书是客户端证书。
kube-apiserver 对外提供服务使用的证书。该证书是服务器证书。
kube-controller-manager 作为客户端访问 kube-apiserver 使用的证书,该证书是客户端证书。
kube-scheduler 作为客户端访问 kube-apiserver 使用的证书,该证书是客户端证书。
kube-proxy 作为客户端访问 kube-apiserver 使用的证书,该证书是客户端证书。
kubelet 作为客户端访问 kube-apiserver 使用的证书,该证书是客户端证书。
管理员用户通过 kubectl 访问 kube-apiserver 使用的证书,该证书是客户端证书。
kubelet 对外提供服务使用的证书。该证书是服务器证书。
kube-apiserver 作为客户端访问 kubelet 采用的证书。该证书是客户端证书。
kube-controller-manager 用于生成和验证 service-account token 的证书。
Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐