一、Kubernetes基本认识

      它是谷歌开源的容器集群管理系统。主要功能包括:

  • 基于容器的应用部署、维护和滚动升级
  • 负载均衡和服务发现
  • 跨机器和跨地区的集群调度
  • 自动伸缩
  • 无状态服务和有状态服务
  • 广泛的 Volume 支持
  • 插件机制保证扩展性

      由于容器体积小且启动快,因此可以在每个容器镜像中打包一个应用程序。不需要与外部的基础架构环境绑定, 因为每一个应用程序都不需要外部依赖。

      它比虚拟机透明,检测管理方便。

二、集群架构

Kubernetes权威指南 第5版 kubernetes书_Kubernetes权威指南 第5版


Kubernetes主要由以下几个核心组件组成:

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

三、基本概念

Pod

  • 一个Pod管理一或多个容器
  • pod生命周期短,用volume持久化数据
  • 对象都用yaml/json定义

Node

      至少运行docker(管镜像,容器运行)、kubelet(管生命周期)、kube-proxy(负载均衡)服务来管理pod

Kubernetes权威指南 第5版 kubernetes书_Pod_02


Namespace:

      一组资源和对象的集合;包括pods,services,replicationcontroller,deployments等属于一个namespace(默认default),node不属于namespace。

  • 指定namespace命令:
    Kubectl –namespace或者-n
  • 查询:
    Kubectl get namespaces
  • 创建:
    Kubectl create namespace new-namespace
  • 删除:
    Kubectl delete namespaces new-namespace

Service:

      为一组pod提供入口,用于负载均衡和服务发现(pod有生命周期,ip随pod消亡而消失,这样ip和端口号不确定,要稳定,就用service)

匹配labels(pod ip、端口列表),由kube-proxy服务将ip负载均衡到endpoint,服务发现

service自动分配cluster IP和DNS,其他容器可通过IP和DNS访问服务

Kubernetes权威指南 第5版 kubernetes书_Kubernetes权威指南 第5版_03


Annotations:

      Key/value注解,辅助应用部署、安全、调度。deployment用它记录rolling update的状态

保证支撑服务的pod的数量:RC、RS、Deployment:

  • ReplicationController:复制控制器
          保证pod高可用的API对象,监控集群中运行指定数量的pod,少于指定,启动新的pod,多余指定,杀死多余pod。
  • Replica Set:副本集RS
  • Deployment:
          对集群的一次更新操作(创建、更新或滚动升级一个服务),RS不好描述,用deployment描述

Job:
      控制任务的API对象

Ingress:

  • 提供外部入口及路由
  • 提供集群外部访问的URL、负载均衡、SSL终止、HTTP路由,部署一个Ingress Controller来配置规则,监听Ingress和Service的变化,并根据规则配置负载均衡并提供访问入口。

总结:

      遨游在知识的海洋里,需要学的东西还太多,刚开始研究,加油!