关于 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](https://www.notion.so/image/https%3A%2F%2Ffile.notion.so%2Ff%2Ff%2F19e70c3d-bb81-4c2b-8a13-4b3cac21334b%2F165edc25-1e3d-499c-b059-9d391df7e0c7%2FUntitled.png%3Ftable%3Dblock%26id%3D5de5b724-9307-427d-b319-ef03eb3aad5e%26spaceId%3D19e70c3d-bb81-4c2b-8a13-4b3cac21334b%26expirationTimestamp%3D1737172800000%26signature%3DMkh7q7U2vWUZvYH2sn727xUa6nQWY_U-fLUt-xCnuHs?table=block&id=5de5b724-9307-427d-b319-ef03eb3aad5e&cache=v2)
- Helm: K8s 的包管理工具