k8s学习(一)——kubernetes重要基础概念概述

一,k8s介绍

Kubernetes(k8s)是Google开源的容器集群管理系统。在Docker技术的基础上,为容器化的应用提供部署运行、资源调度、服务发现和动态伸缩等一系列完整功能,提高了大规模容器集群管理的便捷性。

Kubernetes最主要的设计思想是,从更宏观的角度,以统一的方式来定义任务之间的各种关系,并且为将来支持更多种类的任务留足余地。

Kubernetes所擅长的,是按照用户的意愿和整个系统的规则,完全自动化地处理好容器之间的各种关系。这种功能,就是我们经常听到的一个概念:编排。

所以说,Kubernetes的本质,是为用户提供一个具有普遍意义的容器编排工具。

二,k8s中的几个重要的基础概念

(1)、Cluster

Cluster是 计算、存储和网络资源的集合,k8s利用这些资源运行各种基于容器的应用。

(2)、Master

Master是cluster的大脑,他的主要职责是调度,即决定将应用放在那里运行。master运行linux操作系统,可以是物理机或者虚拟机。为了实现高可用,可以运行多个master。

(3)、Node Node的职责是运行容器应用。node由master管理,node负责监控并汇报容器的状态,同时根据master的要求管理容器的生命周期。node运行在linux的操作系统上,可以是物理机或者是虚拟机。

(4)、pod

pod是k8s的最小工作单元。每个pod可以包含一个或者多个容器。pod中的容器会作为一个整体被master调度到一个node上运行。Pod有两种使用方式,运行单一容器和运行多个容器,运行单一容器是Kubernetes最常见的模型,即便是只有一个容器,Kuberetes 管理的也是 Pod 而不是直接管理容器。而pod中运行多个容器的话,哪些容器应该放到一个Pod中?答案是:这些容器联系必须非常紧密,而且需要直接共享资源。

(5)、controller

K8s不会直接创建pod.而是通过controller来管理pod的。controller中定义了pod的部署特性,比如有几个副本,在什么样的node上运行等。为了满足不同的业务场景,K8s提供了多种controler,包括ReplicationControler(RC)、ReplicaSet(RS)、Deployment、daemonsetstatefulset、job等。

RC是K8s集群中最早的保证Pod高可用的API对象,通过监控运行中的Pod来保证集群中运行指定数目的Pod副本。指定的数目可以是多个也可以是1个;少于指定数目,RC就会启动运行新的Pod副本;多于指定数目,RC就会杀死多余的Pod副本。即使在指定数目为1的情况下,通过RC运行Pod也比直接运行Pod更明智,因为RC也可以发挥它高可用的能力,保证永远有1个Pod在运行。

RC是K8s较早期的技术概念,只适用于长期伺服型的业务类型。比如提供高可用的Web服务。

(6)、ReplicaSet (RS)

RS是新一代RC,提供同样的高可用能力,区别主要在于RS后来居上,能支持更多种类的匹配模式。RS对象一般不单独使用,而是作为Deployment的理想状态参数使用。

使用deployment时会自动创建ReplicaSet,也就是说deployment是通过Replica Set来管理pod的多个副本的,我们通常不需要直接使用Replica Set .

(7)、deployment(部署)

Deployment表示用户对K8s集群的一次更新操作,它是一个比RS应用模式更广的API对象,可以是创建一个新的服务,更新一个新的服务,也可以是滚动升级一个服务。以K8s的发展方向,未来对所有长期伺服型的的业务的管理,都会通过Deplovment来管理。

(8)、daemonset(后台支撑型服务)

长期伺服型和批处理型服务的核心在业务应用,可能有些节点运行多个同类业务的Pod,有些节点上又没有这类Pod运行;而后台支撑型服务的核心关注点在K8s集群中的节点(物理机或虚拟机),要保证每个节点上都有一个此类Pod运行。节点可能是所有集群节点选定的一些特定节点。典型的后台支撑型服务包括,存储,日志和监控等在每个节点上支持K8s集群运行的服务。

(9)、statefuleset

能够保证pod的每个副本在整个生命周期中名称是不变的,而其他controller不提供这个功能。当某个pod发生故障需要删除并重新启动时,pod的名称不会发生变化,同时statefulset会保证副本按照固定的顺序启动、更新或者删除。

(10)、job

用于运行结束就删除的应用,而其他controller中的pod通常是长期持续运行的。

(11)、service

deployment可以部署多个副本,每个pod 都有自己的IP,外界如何访问这些副本那?答案是service。k8s的 service定义了外界访问一组特定pod的方式。service有自己的IP和端口,service为pod提供了负载均衡。k8s运行容器pod与访问容器这两项任务分别由controller和service执行

(12)、namespace

可以将一个物理的cluster逻辑上划分成多个虚拟cluster,每个cluster就是一个namespace。不同的namespace里的资源是完全隔离的。

Kubernetes默认创建了两个Namespace。

default--创建资源时如果不指定,将被放到这个 Namespace 中。

kube-system:Kubernetes 自己创建的系统资源将放到这个 Namespace 中。

相关推荐
起名真的太难了3 分钟前
Docker 项目部署
docker·容器·eureka
网络工程小王19 分钟前
【LLM开发实验】FastAPI 学习笔记
数据库·笔记·学习·mysql·fastapi
MrSYJ23 分钟前
Network Namespace 到底是个啥,别人再问你告诉他
docker·云原生·kubernetes
醉舞经阁半卷书11 小时前
量化交易基础之python库学习
学习
youm20031 小时前
【学习笔记】认识NoSQL——非关系型数据库
笔记·学习·nosql
传奇开心果编程1 小时前
【Rust入门知识点学与练】第11课:HashMap 键值对集合
开发语言·学习·rust
约克32 小时前
商水约克中央空调商用工程的行业洞察与落地要点
学习
王的宝库2 小时前
Linux 性能优化入门
linux·学习
公爵爱学习3 小时前
无人机定点飞行-介绍
开发语言·图像处理·python·学习·线性回归·无人机
浔溺3 小时前
al+大数据每日学习笔记33
大数据·笔记·学习