typora/note/devops/kubernetes/概述.md

68 lines
3.5 KiB
Markdown
Raw Normal View History

2024-12-11 21:48:55 -05:00
### 一、概述
Kubernetes通常缩写为K8s是一个开源的容器编排平台旨在自动化部署、扩展和管理容器化应用程序。最初由Google设计并捐赠给Cloud Native Computing FoundationCNCF它现在是云原生生态系统中最受欢迎的容器编排工具
### 二、Kubernetes核心功能
- **自动化容器部署和回滚**Kubernetes 允许用户声明式地定义容器应用的状态,自动化地部署和更新应用程序,并在更新不如预期时自动回滚到之前的状态
- **服务发现和负载均衡**Kubernetes 可以自动分配IP地址和DNS名称给容器并在容器组之间实现负载均衡。
- **存储编排**:自动挂载所选的存储系统,无论是本地存储、公有云提供商的存储服务,还是网络文件系统。
- **自动化容器排版**:根据资源需求和约束条件,自动选择合适的主机以运行容器
- **自我修复**:自动替换或重启失败的容器,杀死不响应用户定义的健康检查的容器,并且不向它们分发流量直到它们准备就绪
- **横向扩展**基于CPU使用率或其他选定的指标自动扩展或缩减应用副本数量
- **安全和访问控制**:提供细粒度的访问控制机制,包括用户认证、授权和秘密管理
### 三、Kubernetes架构组件
- **控制平面Control Plane**:控制平面的组件负责集群决策,比如调度和响应集群事件(如当节点失效时启动新的副本)
- **节点Nodes**:节点可能是一个虚拟机或物理机,它们是运行应用程序容器的工作机器
### 四、Kubernetes 基础组件
#### 主节点Master Node组件
1. **API服务器kube-apiserver**
- 提供Kubernetes API的终端是所有控制面组件的入口
- 处理API请求执行操作并更新etcd中的数据
2. **控制器管理器kube-controller-manager**
- 监控集群中的控制器,确保实际状态与期望状态一致
- 包括Node Controller、Replication Controller、Endpoint Controller等
3. **调度器kube-scheduler**
- 负责将Pod调度到可用的工作节点上
- 考虑资源需求、亲和性、反亲和性等因素进行智能调度
4. **etcd**
- 是一个分布式键值存储系统,用于保存整个集群的配置数据和状态
- 存储了所有的集群数据包括节点信息、Pod状态、服务信息等
#### 工作节点Node组件
1. **Kubelet**
- 运行在每个工作节点上,负责与主节点通信
- 管理节点上的容器确保它们按照Pod的规格运行
1. **Kube-Proxy**
- 负责维护节点上的网络规则处理Pod之间的网络通信
- 提供服务的负载均衡使得服务可以通过统一的IP地址和端口进行访问
1. **容器运行时Container Runtime**
- 负责在节点上运行容器与Kubelet进行通信
- 常见的容器运行时包括Docker、containerd、cri-o等
### Kubernetes生态系统
Kubernetes周围有一个庞大且不断增长的生态系统包括各种支持工具和服务这些工具和服务可以帮助用户更容易地部署、运行和管理Kubernetes集群。这包括网络插件、存储解决方案、CI/CD工具、监控和日志服务等
Kubernetes的设计目标之一是跨不同的环境中保持应用的便携性包括公有云、私有云和混合云。这使得它成为企业和开发人员构建、部署和管理现代应用程序的理想选择