关于 K8s

date
Feb 6, 2022
slug
kubectl
status
Published
tags
使用笔记
summary
k8s 是 Kubernetes 的缩写,是因为 k 和 s 之间有八个字符的关系。
type
Post

Kubernetes 是什么

K8s 是用于 管理容器化 的工作负载和服务。

容器化历程

传统部署时代:
特点:在物理服务器上直接运行应用程序
缺点:由于无法合理的进行 资源分配,当运行多个程序时,则会出现 资源争夺,影响程序的稳定和安全性。
 
虚拟化部署时代:
特点:支持在单个物理服务器的 CPU 上 运行多个虚拟机,并且运行程序之间相互隔离。
缺点:每个虚拟机都是一台 完整的计算机,拥有独立的 操作系统,占用宿主机资源
 
容器化部署时代
特点:
  • 容器类似于虚拟机,但是它们具有 被放宽的隔离属性,应用程序之间可以 共享操作系统,相对来说 更轻量
  • 具有自己的文件系统、CPU、内存、进程空间等
优势:
  • 可快捷的创建和部署
  • 持续开发、集成和部署
  • 可观察性、一致性、拓展性、资源隔离、资源利用
  • ...

为什么需要 K8s ?

容器发生故障时,则启动另一个容器,以此保证不会停机,如何操作才会更容易?
K8s 就是用来解决这些问题的,提供的功能:
  • 服务发现和负载均衡
  • 存储编排
  • 自动部署和回滚:可以描述已部署容器的 所需状态
  • 自动完成装箱计算:指定每个容器所需 CPU 和内存
  • 自我修复:重新启动失败容器、替换容器、杀死不响应用户定义的运行状况检查的容器
  • 密钥与配置管理
  • ...
 

K8s 架构和组件

K8s 利用了 “期望状态” 原则,会始终调整至该状态。

定义 K8s 的重要组件。

初次设置 K8s 时,你会创建一个集群,所有 其他组件 都是集群的一部分。
你也可以创建多个虚拟集群,称为命名空间 (namespace),它们是同一个 物理集群 的一部分。与物理服务器上创建多个虚拟机的方式非常相似。
 
K8s 运行在节点 (node) 上,节点是集群中的 单个机器
节点是部署你的应用或服务的地方,是 K8s 工作的地方。
有 2 种类型的节点 ——master 节点和 worker 节点,所以说 K8s 是 主从结构。
每个节点都包含 API Server ,以此来进行节点间的通信
  • master 节点 管控 其他所有节点
  • worker 节点 真正干活 的节点
 
Kubernetes主要由以下几个核心组件组成: 

1. etcd: 保存整个集群的状态
2. APIServer: 提供了资源的唯一入口,并提供认证、授权、访问控制、API注册和发现等
3. Controller Manager: 负责维护集群的状态,比如故障检测、自动扩展、滚动更新等
4. Scheduler: 负责资源的调度,按照预定的调度策略将Pod调度到相应的机器上
5. Kubelet: 负责维护容器的生命周期,同时也负责Volume(CVI)和网络(CNI)的管理
6. Container runtime: 负责镜像的管理以及Pod和容器的真正运行(CRI)
7. Kube Proxy: 负责为Service提供cluster内部的服务发现和负载均衡
8. Kube DNS: 负责为整个集群提供DNS服务
9. Ingress Controller: 为服务提供外网入口
10. Heapster: 提供资源监控
11. Dashboard: 提供GUIFederation提供跨可用区的集群
12. Fluentd Elasticsearch: 提供集群日志采集,存储与查询
notion image
 
  • Helm: K8s 的包管理工具
 
 

© jianxiaoBai 2021 - 2022