1. Kubernetes基础
1.1 概述
Kubernetes是开源的容器编排工具。它提供了应用部署、规划、更新、维护的一系列机制,让应用容器化部署更加简洁和高效。
1.2 特性
自动装箱、自我修复、水平扩展;服务发现、负载均衡;自动发布、自动回滚;集中化配置管理和密钥管理;存储编排;任务批处理等。
1.3 组件
1.3.1 Master节点
Kubernetes里的Master指的是集群控制节点,在每个Kubernetes集群里都需要有一个Master来负责整个集群的管理和控制,基本上Kubernetes的所以控制命令都发给它,它负责具体的执行过程,后面执行的所有命令基本都是在Master上运行。
Master节点的关键进程包括:
- Kubernetes API Server的核心功能是提供Kubernetes各类资源对象的增、删、改、查及Watch等HTTP Rest接口,成为集群内各个功能模块之间数据交互和通信的中心枢纽,是整个系统的数据总线和数据中心。此外,它是集群管理的API入口、是资源配额控制的入口、提供完备的集群安全机制;
- Kubernetes Controller Manager是Kubernetes里所有资源对象的自动化控制中心;
- Kubernetes Scheduler是负责资源调度(主要是Pod调度)的进程;
- ETCD服务用于存储Kubernetes里所有资源对象的数据。
1.3.2 Node节点
Kubernetes里的Node指的是集群中的工作负载节点,每个Node都会被Master分配一些工作负责。当某个Node宕机时,其上的工作负载会被Master自动转移到其他Node上。
Node节点的关键进程包括:
- kubelet负责Pod对应容器的创建、启停等任务,同时与Master密切协作,实现集群管理的基本功能;
- kube-proxy实现Kubernetes Service的通信与负载均衡机制的重要组件;
- Docker引擎负责本机的容积创建和管理工作。
1.3.3 其他组件
- flannel/calico:CNI网络插件;
- CoreDNS:可以为集群中的SVC创建一个域名IP的对应关系解析;
- Ingress Controller:实现七层代理(官方只能实现四层代理);
- Treafik:服务暴露用插件;
- Dashboard:给K8s集群提供一个B/S结构的访问体系;
- Promethues:提供一个K8s集群的监控能力;
- ELK:提供K8s集群日志统一分析接入平台。