初识kubernetes(k8s)

k8s简介

可移植、可扩展、开源的容器管理平台,是谷歌Bory的开源版本

1、k8s强大功能

批处理、弹性伸缩、故障自恢复、存储编排、机密和配置管理、自动部署和滚动升级、服务器发现和负载均衡

2、发展史

  • 2014.6 谷歌宣布开源kubernetes
  • 2014.9 第一个测试版本0.2发布
  • 2015.7 第一个正式版本1.0发布,加入到CNCF基金
  • 2018.3 从CNCF毕业,发布版本1.10
  • 2020.12.8 1.20版本发布,宣布不再支持docker(目前还支持docker)

3、k8s 架构

k8s的物理架构是master/node模式

k8s至少需要一个master节点和多个工作节点node,master节点是集群的控制节点,负责整个集群的管理和控制,主要用于暴露api、调度和节点管理。工作节点主要是运行容器。

4、k8s 组件

master 节点:

  •   api server : 提供k8s api,是整个系统的对外接口,提供资源操作的唯一入口,供客户端和其它组件调用,提供了k8s各类资源对象(pod,deployment,Service等)的增删改查,是整个系统的数据总线和数据中心,并提供认证、授权、访问控制、API注册和发现等机制,并将操作对象持久化到etcd中。
  •   scheduler: 负责k8s集群中pod的调度的 , scheduler通过与apiserver交互监听到创建Pod副本的信息后,它会检索所有符合该Pod要求的工作节点列表,开始执行Pod调度逻辑。调度成功后将Pod绑定到目标节点上,相当于“调度室”。
  •   controller-manager: 作为集群内部的管理控制中心,负责集群内的Node、Pod副本、服务端点(Endpoint)、命名空间(Namespace)、服务账号(ServiceAccount)、资源定额(ResourceQuota)的管理,当某个Node意外宕机时,Controller Manager会及时发现并执行自动化修复流程,确保集群始终处于预期的工作状态。
  •   etcd: 是一个高可用的键值数据库,存储k8s的资源状态信息和网络信息的,etcd中的数据变更是通过api server进行的。
  •   kubectl: 管理k8s的命令行工具,可以操作k8s中的资源对象,如增删改查等。
  •   calico: 是一套开源的网络和网络安全方案,用于容器、虚拟机、宿主机之前的网络连接,可以用在kubernetes、OpenShift、DockerEE、OpenStrack等PaaS或IaaS平台上。 
  •   docker:容器运行时,负责启动容器的,在k8s1.20版本之后建议废弃docker,使用container作为容器运行时

node 节点:

  •   kubelet: 每个Node节点上的kubelet定期就会调用API Server的REST接口报告自身状态,API Server接收这些信息后,将节点状态信息更新到etcd中。kubelet也通过API Server监听Pod信息,从而对Node机器上的POD进行管理,如创建、删除、更新Pod.
  •   kube-proxy: 提供网络代理和负载均衡,是实现service的通信与负载均衡机制的重要组件,kube-proxy负责为Pod创建代理服务,从apiserver获取所有service信息,并根据service信息创建代理服务,实现service到Pod的请求路由和转发,从而实现K8s层级的虚拟转发网络,将到service的请求转发到后端的pod上。
  •   calico: 是一套开源的网络和网络安全方案,用于容器、虚拟机、宿主机之前的网络连接,可以用在kubernetes、OpenShift、DockerEE、OpenStrack等PaaS或IaaS平台上。 
  •   coredns:CoreDNS 其实就是一个 DNS 服务,而 DNS 作为一种常见的服务发现手段,很多开源项目以及工程师都会使用 CoreDNS 为集群提供服务发现的功能,Kubernetes 就在集群中使用 CoreDNS 解决服务发现的问题。
  •   docker: 容器运行时,负责启动容器的,在k8s1.20版本之后建议废弃docker,使用container作为容器运行时

5、k8s 核心资源

Pod: k8s中最小调度单元,pod中运行着容器。同一个pod中共享网络和存储。(可以把pod看成虚拟机,每一个容器相当于一个进程)

label:k8s 中大多数资源可以打上标签,可以通过标签选择器(selector)来查询和筛选完成对资源的管理。

Deployment: replicaset是k8s中的副本控制器,管理pod,使pod副本的数量维持在预设的数量。deployment是管理replicaset和pod的副本控制器,deployment可以管理多个replicaset,比replicaset更高级。在创建deployment是会自动创建replicaset,由replicaset再创建pod,deployment对pod扩容、升级、回滚更新、维持pod的数量。

Service:定义了一个服务的访问入口,后端连接一个或多个pod,通过label selector实现关联。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值