kubernetes(1): kubernetes简介和组件
kubernetes(1):kubernetes简介和组件
http://k8s.unixhot.com/kubernetes/kubernetes-introduce.html
https://kubernetes.io/zh/docs/concepts/overview/what-is-kubernetes/
https://jimmysong.io/kubernetes-handbook/concepts/
https://github.com/opsnull/follow-me-install-kubernetes-cluster
- Kubernetes官方文档:https://kubernetes.io/docs/home/
- Kuernetes Github:https://github.com/kubernetes/
1 Kubernetes简介:
Kubernetes 源于希腊语,意为 “舵手” 或 “飞行员”,是用于自动部署,扩展和管理容器化应用程序的开源系统,由于K和S之间有8个字母,被简称为K8S。Kubernetes 构建在 Google 15 年生产环境经验基础之上,可以将Kubernetes看作为Google内部的容器管理平台Brog的开源版本,当然他们之间是有一些差异的。
Kubernetes 是一个跨主机集群的 开源的容器调度平台,它可以自动化应用容器的部署、扩展和操作 , 提供以容器为中心的基础架构。
使用 Kubernetes, 您可以快速高效地响应客户需求:
- 快速、可预测地部署您的应用程序
- 拥有即时扩展应用程序的能力
- 不影响现有业务的情况下,无缝地发布新功能
- 优化硬件资源,降低成本
目标是构建一个软件和工具的生态系统,以减轻您在公共云或私有云运行应用程序的负担。
Kubernetes 具有如下特点:
- 便携性: 无论公有云、私有云、混合云还是多云架构都全面支持
- 可扩展: 它是模块化、可插拔、可挂载、可组合的,支持各种形式的扩展
- 自修复: 它可以自保持应用状态、可自重启、自复制、自缩放的,通过声明式语法提供了强大的自修复能力
2 Kubernetes系统架构-组建
Kubernetes被设计为Master和Node两个角色,这类似于OpenStack的架构理念,Master为控制节点,Node为计算节点或者叫工作节点,在Master节点上有一个API Server服务,对外提供标准的RestAPI,这也是Kubernetes集群的入口,意外着只要和集群进行交互必须连接到API Server上。
2.1 Master节点组件
Kubernetes Master节点主要有4个组件,API Server、Scheduler、Controller、etcd。如下图所示
- API Server:提供Kubernetes API接口,主要处理 Rest操作以及更新Etcd中的对象。是所有资源增删改查的唯一入口。
- Scheduler:绑定Pod到Node上,主要做资源调度。
- Controller Manager:所有其他群集级别的功能,目前由控制器Manager执行。资源对象的自动化控制中心,Kubernetes集群有很多控制器。
- Etcd:所有持久化的状态信息存储在Etcd中,这个是Kubernetes集群的数据库
2.2 Node节点组件
Node节点是Kubernetes集群的工作节点,在Node节点上主要运行了Docker、Kubelet、kube-proxy三个服务(Fluentd请先忽略),如下图所示:
- Docker Engine:负责节点的容器的管理工作,最终创建出来的是一个Docker容器。
- Kubelet:安装在Node上的代理服务,用来管理Pods以及容器、镜像、Volume等,实现对集群对节点的管理。
- Kube-proxy:安装在Node上的网络代理服务,提供网络代理以及负载均衡,实现与Service通讯。
2.3 其他组件
除了核心组件,还有一些推荐的Add-ons:
- · kube-dns负责为整个集群提供DNS服务
- · Ingress Controller为服务提供外网入口
- · Heapster提供资源监控
- · Dashboard提供GUI
- · Federation提供跨可用区的集群
- · Fluentd-elasticsearch提供集群日志采集、存储不查询