当前位置: 首页 > news >正文

Kubernetes学习

背景

传统部署:通过物理服务器运行应用,无法限制物理服务器上各个应用资源使用,有资源分配问题。(解决方案就是每个应用部署在独立的物理服务器上,但当资源利用率不高时,产生浪费)

虚拟化部署:单个物理机的CPU上运行多个VM,更好的利用了物理服务器资源。

容器部署:更轻量级的VM,可以跨云和OS移植。

Kubernetes集群

定义

Kubernetes是一个生产级别的开源平台, 可编排在计算机集群内和跨计算机集群的应用容器的部署(调度)和执行。

Kubernetes 协调一个高可用计算机集群,每个计算机互相连接之后作为同一个工作单元运行。 Kubernetes 中的抽象允许你将容器化的应用部署到集群,而无需将它们绑定到某个特定的独立计算机。 为了使用这种新的部署模型,需要以将应用与单个主机解耦的方式打包:它们需要被容器化。 与过去的那种应用直接以包的方式深度与主机集成的部署模型相比,容器化应用更灵活、更可用。 Kubernetes 以更高效的方式跨集群自动分布和调度应用容器。 Kubernetes 是一个开源平台,并且可应用于生产环境。

控制面和节点

一个Kubernetes集群包含控制平面(control plane)和节点(Nodes)两种资源。

(1)控制平面组件(control plane):调度整个集群。监测,响应集群事件。

    ○ kube-apiserver:前端,负责处理接受请求工作。
    ○ etcd:所有集群的后台数据库,键值对存储。
    ○ kube-scheduler:监视新创建、未指定运行Node的Pods。
    ○ kube-controller-manager:负责运行控制器进程。
    ○ cloud-controller-manager

(2)节点组件(Nodes):负责维护运行的Pod并提供kubernetes运行时环境。(负责运行应用)

    ○ kubelet:保证容器都运行在Pod中。
    ○ kube-proxy(可选):网络代理。
    ○ 容器运行时:负责管理容器的执行和生命周期。

应用

一旦运行了 Kubernetes 集群, 就可以在其上部署容器化应用。 Deployment 指挥 Kubernetes 如何创建和更新应用的实例。 创建 Deployment 后,Kubernetes 控制平面将 Deployment 中包含的应用实例调度到集群中的各个节点上。

Pod 是 Kubernetes 平台上的原子单元。当我们在 Kubernetes 上创建 Deployment 时, 该 Deployment 会创建其中包含容器的 Pod(而不是直接创建容器)每个 Pod 都与被调度所在的节点绑定,并保持在那里直到(根据重启策略)终止或删除。 如果节点发生故障,则相同的 Pod 会被调度到集群中的其他可用节点上。

Pod和Node

Node:Node是Kubernetes中的工作机器,可以是虚拟机或物理机,具体取决于集群。每个Kubernetes节点至少运行:kubelet、容器运行时。
● kubelet:负责控制面和节点之间通信的进程。它管理机器上运行的Pod和容器。
● 容器运行时:负责从镜像仓库中拉去容器镜像、解压缩容器以及运行应用。

Pod:Pod是一个或多个容器的组合,并且包含共享的存储(卷)、IP地址和有关如何运行它们的信息(例如容器镜像版本或要使用的特定端口)。Pod是Kubernetes抽象出来的。

Node和Pod之间的关系Node可以有多个Pod。一个 Pod 总是运行在某个 Node 上。每个Node都由控制面管理。控制面会自动处理在集群中的节点上调度Pod。控制面的自动调度考量了每个节点上的可用资源。

公开的暴露你的应用

Service:抽象概念,定义的是Pod的一个逻辑集合,并为这些Pod支持外部流量公开、负载均衡和服务发现。

常用命令

# 查看现存Pod
kubectl get pods# 查看Pod内有那些容器以及使用了那些镜像来构建这些容器
kubectl describe pods# 列出Deployment
kubectl get deployments

Kubernetes学习地址:Kubernetes 文档 | Kubernetes

http://www.dtcms.com/a/319542.html

相关文章:

  • 安卓开发:网络状态监听封装的奥秘
  • 根据浏览器语言判断wordpress访问不同语言的站点
  • 计算机视觉前言-----OpenCV库介绍与计算机视觉入门准备
  • Python 偏函数(functools.partial)详解
  • MySQL ORDER BY 语句详细说明
  • SVG组件
  • 96-基于Flask的酷狗音乐数据可视化分析系统
  • 微信小程序常见功能实现
  • OpenCV 入门教程:开启计算机视觉之旅
  • uwsgi 启动 django 服务
  • Next.js 15 重磅发布:React 19 集成 + 性能革命,开发者必看新特性指南
  • CentOS 7 安装 Anaconda
  • 秋招笔记-8.7
  • Redis的三种特殊类型
  • 硬盘哨兵pe版本 v25.70.6 中文免费版
  • 【R语言】 高清美观的 MaxEnt 刀切图(Jackknife)绘制——提升论文质量
  • 基于Qt的Live2D模型显示以及控制
  • DAY33打卡
  • 【Unity输入系统】自定义与双击不冲突的单击Interaction
  • 【第八章】函数进阶宝典:参数、返回值与作用域全解析
  • RedisBloom使用
  • 任务进度状态同步 万能版 参考 工厂+策略+观察者设计模式 +锁设计 springboot+redission
  • itextPdf获取pdf文件宽高不准确
  • 设计模式-装饰模式 Java
  • 客户端利用MinIO对服务器数据进行同步
  • VN1 供应链销量预测建模竞赛技巧总结与分享(七)
  • 四边形面积
  • 极简 5 步:Ubuntu+RTX4090 源码编译 vLLM
  • JavaWeb03——基础标签及样式(表单)(黑马视频笔记)
  • 八、基于GD32 Embedded Builder开发GD32VW553(蓝牙广播)