k8s入门教程详解
一、 Kubernetes 概述
1. K8S 发展历史由来
·它前生是 谷歌的Borg 系统,后经过Go 语言重写,在 2014 年开源了 Kubernetes 项目,并捐献给CNCF 基金会开源,即 Kubernetes。
·它之所以简称 ‘k8s’,因为 Kubernetes 中间有 8个字母
2.K8S官网
-
kubernetes的github地址:
https://github.com/kubernetes/kubernetes -
kubernetes官方站点:
英文官方网址: https://kubernetes.io/
中文官方网站: https://kubernetes.io/zh/
英文官方文档: https://kubernetes.io/docs/
2.K8S 是什么
- Kubernetes 是一个可移植的、可扩展的 开源平台 ,用于 管理容器化的工作负载和服务,可促进声明式配置和自动化 Kubernetes 拥有一个庞大且快速增长的生态系统。Kubernetes 的服务、支持和工具广泛可用。
- Kubernetes 这个名字源于希腊语,意为“舵手”或“飞行员”
- 官网 :https://kubernetes.io/
- GitHub :https://github.com/kubernetes/kubernetes
- 具有 轻量级 、 消耗资源小 、 开源 、 弹性伸缩 、 负载均衡(IPVS) 的特点
3. K8s 优势及特点
3.1 K8S优势
- 自动装箱,水平扩展,自我修复
- 服务发现和负载均衡
- 自动发布和回滚
- 集中化配置管理和密钥管理
- 存储编排
- 批处理:提供一次性任务,定时任务;满足批量数据处理和分析的场景
3.2 K8S 特点
- 可移植 : 支持公有云,私有云,混合云,多重云(multi-cloud)
- 可扩展 : 可根据业务流量情况快速扩展kubernetes集群的节点数量。
- 自愈 : 自动发布,自动重启,自动复制,自动扩展
- 进程协同 :利用复合应用保证应用和容器一对一的模型。
4. K8s 集群架构与组件
4.1 K8s 集群架构
- 集群架构 Shell Kubernetes集群包含有节点代理
kubelet
和Master组件
(APIs, scheduler, etc),一切都基于分布式的存储系统。 一个kubernetes集群主要是由 控制节点(master)、工作节点(node)构成,每个节点上都会安装不同的组件。 下面这张图是Kubernetes的架构图。
控制节点:
ApiServer : 资源操作的唯一入口,接收用户输入的命令,提供认证、授权、API注册和发现等机制
Scheduler : 负责集群资源调度,按照预定的调度策略将Pod调度到相应的node节点上
ControllerManager : 负责维护集群的状态,比如程序部署安排、故障检测、自动扩展、滚动更新等
Etcd :负责存储集群中各种资源对象的信息(默认的数据库,自己可以配置修改的,比如配 mysql )
工作节点Node :
Kubelet : 负责维护容器的生命周期,即通过控制docker,来创建、更新、销毁容器
KubeProxy : 负责提供集群内部的服务发现和负载均衡
Docker : 负责节点上容器的各种操作
Shell # 大致工作原理
- 一个nginx服务的安装请求会首先被发送到master节点的apiServer组件
- apiServer组件会调用scheduler组件来决定到底应该把这个服务安装到哪个node节点上 在此时,Scheduler调度器会从etcd中读取各个node节点的信息