k8s 2. 重要概念

参考《每天5分钟玩转kubernetes》 ColdMan著。

一、概念

1. Cluster

cluster是计算、存储和网络资源的集合, k8s使用这些资源运行基于容器的应用

 

2. Master

cluster的大脑,主要职责是调度,决定将应用放在哪里运行。在linux上运行(物理机or虚拟机)。为了高可用,可运行多个master。

 

3. Node

职责是运行容器应用。由master管理,监控、汇报容器状态,要据master要求管理容器生命周期。运行于linux(物理机or虚拟机)

 

4. Pod

最小工作单元,每个pod包含1个or多个容器。作为整体被master调度到node上运行。

4.1 引入pod(比容器更高层次的抽象)的目的:

(1) 可管理性。

将需要一起工作的(紧密联系的)容器封装到同一个部署单元,以pod为最小单位进行调度、扩展、共享资源、管理生命周期。

(2) 通信和资源共享。

pod中所有容器使用同一个网络namespace(相同ip+port),可直接用localhost通信。共享存储,k8s挂载volume到pod,本质是将volume挂载到pod中的每个容器。

4.2 Pods的2种使用方式

(1) 运行单一容器

one-container-per-Pod, 只将单个容器简单封装成pod.

(2) 运行多个容器

紧密联调并需要共享资源的容器放到一个Pod中。

 

5. Controller

定义了pod的部署特性,比如几个副本、在什么样的node上运行。k8s(不直接创建pod)通过controller管理pod。提供Deployment, ReplicaSet, DaemonSet, StatefulSet, Job等controller来满足不同业务场景。

5.1 Deployment: 最常用,可以管理Pod的多个副本,确保pod按照期望的状态运行。

5.2 ReplicaSet: Deployment通过ReplicaSet来管理pod的多个副本,使用deployments时会自动创建replicaset(不需要直接使用ReplicaSet)。实现了pod的多副本管理。

5.3 DaemonSet: 通常用于运行daemon, 每个node最多只运行1个pod副本的场景。

5.4 StatefullSet: 保证pod的每个副本在整个生命周期中名称不变。当某个Pod发生故障需要删除并重启时,pod名称会发生变化。保证副本按照固定的顺序启动、更新或删除。

5.5 Job: 用于运行结束就删除的应用。其他Controller中的pod通常是长期持续运行。

 

6. Service

Pod销毁和重启后,ip可能会发生变化。deployment部署多个副本,每个pod都有自己的ip。

Service提供外界访问一组特定pod的方式。service有自己的ip和port,为pod提供负载均衡。

k8s运行pod: Controller

k8s访问pod: Service

 

7. Namespace

将同一个k8s cluster中多个用户或项目组的Controller和Pod等资源分开。

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

k8s默认创建2个namespace: 

default: 创建资源时如果不指定namespace,则为default。

kube-system: k8s自己创建的系统资源

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值