k8s与pod概念

此文章为学习过程中根据网上资源整合总结

文章目录

      • 1 为什么需要k8s
        • 1.1 应用部署模式的演进
          • 1.11 模式对比
          • 1.12 各模块介绍
        • 1.2 管理大量的容器----k8s
      • 2 ks8的集群架构
      • 3 pod---k8s调度的最小单元
        • 3.1 一个 pod 包含一组容器,一个 pod 不会跨越多个工作节点
        • 3.2 pod是什么

1 为什么需要k8s

1.1 应用部署模式的演进

1.11 模式对比

虚拟化模式:
k8s与pod概念_第1张图片
容器化模式:
k8s与pod概念_第2张图片

1.12 各模块介绍

【虚拟机】
是一种高度隔离的软件容器,它可以运行自己的操作系统和应用程序,就好像它是一台物理计算机一样。虚拟机的行为完全类似于一台物理计算机,它包含自己的虚拟(即*8基于软件实现**的)CPU、RAM 硬盘和网络接口卡 (NIC)。虚拟机完全由软件组成,不含任何硬件组件

【虚拟机的优势】:

  • 兼容性:虚拟机与所有标准的 x86 计算机都兼容,可在上面运行您在 x86 物理计算机上运行的所有相同软件。
  • 隔离:虚拟机相互隔离,就像在物理上是分开的一样,例如,如果在一台物理服务器上有四个虚拟机,而其中一个虚拟机崩溃了,其他三个虚拟机仍将可用。更有可用性和安全性
  • 封装:虚拟机将整个计算环境封装起来,其实质上是一个软件容器。封装 、使虚拟机具备超乎寻常的可移动性并且易于管理。例如,您可以将虚拟机从一个位置移动和复制到另一位置,就像移动和复制任何其他软件文件一样;也可以将虚拟 机保存在任何标准的数据存储介质上,从袖珍型的 USB 闪存卡到企业存储区域网络 (SAN),皆可用于保存。
  • 独立于硬件:虚拟机独立于底层硬件运行,例如,您可以为虚拟机配置与底层硬件上存在的物理组件完全不同的虚拟组件(例如,CPU、网卡、SCSI 控制器)。同一物理服务器上的各个虚拟机甚至可以运行不同类型的操作系统(Windows、Linux 等)。就是可以随意配置。

所以使用虚拟机可提高可用性、安全性和可管理性

【容器】:
它是一个独立的运行环境,类似于虚拟机,对应用程序及其关联性进行隔离,可高效使用计算机资源,提升能源效率和成本效益。本质上是一组受到资源限制,彼此间相互隔离的进程
【虚拟机vs容器】
此处参考:深入理解容器基础概念
容器和虚拟机之间的主要区别在于虚拟化层的位置操作系统资源的使用方式
k8s与pod概念_第3张图片
从上图可以看出,容器是没有自己的OS的,直接共享宿主机的内核,也没有hypervisor这一层进行资源隔离和限制。

虚拟机依赖于hypervisor,其通常被安装在“裸金属”系统硬件之上,其在某些方面被认为是一种操作系统。一旦 hypervisor安装完成, 就可以从系统可用计算资源当中分配虚拟机实例了,每台虚拟机都能够获得唯一的操作系统和负载(应用程序)。
简言之,虚拟机先需要虚拟一个物理环境,然后构建一个完整的操作系统,再搭建一层Runtime,然后供应用程序运行。
对于容器,直接将容器层(比如LXC或libcontainer)安装在主机操作系统(通常是Linux变种)之上。

【相比虚拟机和容器】

  • 容器更加轻量级,启动更快(秒级),因为没有hypervisor这一层 ,也没有自己的操作系统(guest os),自然占用资源很小,打出来的镜像文件也比虚拟机小很多。单个操作系统能够承载更多的容器。
  • 容器可移植性更好,但是只能被迁移到具有兼容操作系统内核的其他服务器当中,这样就会给迁移选择带来限制。

1.2 管理大量的容器----k8s

容器编排调度引擎,用来解决容器部署,调度,伸缩等。

  • 简化应用部署
  • 提高硬件资源利用率
  • 健康检查和自修复
  • 自动扩容缩容
  • 服务发现和负载均衡

2 ks8的集群架构

Kubernetes 是用来管理容器集群的平台。既然是管理集群,那么就存在被管理节点,针对每个 Kubernetes 集群都由一个 Master 负责管理和控制集群节点。
我们通过 Master 对每个节点 Node 发送命令。简单来说,Master 就是管理者,Node 就是被管理者
Node 可以是一台机器或者一台虚拟机在 Node 上面可以运行多个 Pod,Pod 是 Kubernetes 管理的最小单位,同时每个 Pod 可以包含多个容器(Docker)。

  • 主节点,承载 k8s 的控制和管理整个集群系统的控制面板
  • 工作节点,运行用户实际的应用
    k8s与pod概念_第4张图片
    通常我们都是通过 kubectl 对 Kubernetes 下命令(主节点)的,它通过 APIServer 去调用各个进程来完成对 Node 的部署和控制。

3 pod—k8s调度的最小单元

3.1 一个 pod 包含一组容器,一个 pod 不会跨越多个工作节点

k8s与pod概念_第5张图片

3.2 pod是什么

  • pod相当于逻辑主机,每个pod都有自己的ip地址
  • pod内的容器共享相同的ip和端口空间
  • 默认情况下,每个容器的文件系统与其他容器完全隔离
  • 可以理解为:容器组,同时pod相当于逻辑主机,进入pod后仿佛进入一个linux主机,命令都可用(linux系统下),该“主机”内又有很多容器,进入后又仿佛是又进了一个linux主机。

你可能感兴趣的:(项目部署构建java,运维)