Kubernetes学习笔记-更新中

Kubernetes容器编排平台

Kubernetes是Google团队发起的开源项目,主要实现语言为Go语言(现代版c语言)。它的目标是管理跨多个主机的容器,提供基本的部署,维护以及应用伸缩。(编排就是为了处理应用之间的关联动作)

Kubernetes特点:

  • 便携:支持公有云,私有云,混合云,以及多种云平台。
  • 可拓展∶模块化,可插拔,可任意组合
  • 自修复:自动重调度,自动重启,自动复制

主流容器编排平台及其特点

Swarm:和docker无缝集成,适合节点较少的集群,内置程度高,不用关心细节即可运行cluster,但是不好定制化,不好Debug,不好干预。

Mesos:适合超大集群规模,但是功能单一,就自身来讲是个不错的调度器,但并不是一个优秀的容器编排平台。

Kubernetes:模块划分细,功能丰富,松耦合结构,方便定制化,适合大规模集群,但是抽象概念很多,学习门槛高。

kubernetes和openstack

Kubernetes架构

一套Kubernetes架构是由一个或者多个MasterNode两种节点组成,每个节点可以是物理机也可以是虚拟机

Master节点(控制节点)提供集群控制

  • kube-apiserver:负责接收和处理用户的请求,集群的持久化数据由api处理后保存在etcd中。被设计为可以水平扩展,也就是可以集群部署,避免单点故障
  • kube-scheduler:负责任务调度,选择node节点应用部署
  • kube-cintroller-manager:运行控制器,负责容器编排,处理集群中常规任务的后台进程(每个控制器对应一个进程)
  • etcd:k8s的后端存储,所有集群数据都存放在这,始终为k8s集群的etcd数据提供备份计划

Node节点(计算节点)维护pod,和提供资源

  • kubelet:Master的狗腿子,管理本机容器,可以调用网络插件(CNI)和存储插件(CSI)配置网络和持久化存储
    • 功能:
    • 挂载Pod所需要的数据卷(Volume)。
    • 下载Pod的secrets。
    • 通过Docker(或通过rkt)运行Pod中的容器。
    • 周期性的对容器生命周期进行探测。
  • kube-proxy:提供网络代理,负载均衡等操作
  • 容器引擎:通常使用docker来运行容器,也可以使用rkt(近似于docker)

常用其他组件Add-ons

Kubernetes使用中通常需要一些额外的组件实现特定功能,常用的Add-ons包括:

  • Core-dns:为整个集群提供DNS服务
  • Ingress Controller:为Service提供外网访问入口 Dashboard:提供图形化管理界面
  • Heapster:提供集群资源监控
  • Flannel:为Kubernetes提供方便的网络服务

命名空间 - namespace

命名空间提供了良好的资源隔离,是在多个用户之间划分集群资源的一种方法(通过资源配额)

常用命令

kubectl get namespace   #查看存在哪些namespace
kubectl get pod -namespace=kube-system #查看命名空间中的pod
kubectl  get pod -n kube-system  #查看命名空间(命令简写)

常见的namespace

  • Kube-system: Kubernetes系统创建对象所使用的命名空间。
  • Default:没有指明使用其他命名空间的对象所使用的默认命名空间。

Kubernetes管理对象

Pod

PodKubernetes基本管理单元,每个Pod是一个或多个容器的一组集合,一个Pod作为一个整体运行在一个节点(node)上,Pod内的容器共享存储和网络

ReplicationController(RC)(老版本使用,只支持匹配单标签,RS和DP支持标签集合)

Kubernetes需要管理大量的Pod,使用大量的Pod组成一个简单应用。管理这些大量的Pod的一个方式就是RC

RC可以指定Pod的副本数量,并且在其中有Pod故障时可以自动拉起新的Pod,大大简化了管理难度。

ResplicaSet(RS)

ReplicaSet是新一代的RC,主要功能和RC一样,维持Pod的数量稳定,指定Pod的运行位置等使用方法也相似,主要区别是更新了api,支持更多功能。

ReplicaSet不建议直接使用,而是用更上层的概念Deployment调用ReplicaSet。

Deployment

目前最常用的控制器就是Deployment创建Deployment时也会自动创建ReplicaSet。Deployment可以管理一个或多个RS,并且通过RS来管理Pod。

从小到大的管理逻辑

容器<Pod<ReplicaSet<Deployment

通常情况下

  • Pod中包含一个容器,或关系特别紧密的几个容器。
  • 一个ReplicaSet中包含一个或多个相同的Pod。
  • Deployment中包含一个或几个不同的RS。

文章内容仅用于作者学习使用,如果内容侵犯您的权益,请立即联系作者删除,作者不承担任何法律责任。

×

喜欢就点赞,疼爱就打赏