二、Kubernetes的基本概念

Kubernetes是谷歌以Borg为前身,基于谷歌15年生产环境经验的基础上开源的一个项目,Kubernetes致力于提供跨主机集群的自动部署、扩展、高可用以及运行应用程序容器的平台。

一、资源对象概述

Kubernetes中的基本概念和术语大多是围绕资源对象(Resource Object)来说的,而资源对象在总体上可分为以下两类。

(1)某种资源的对象,例如节点(Node)、Pod、服务(Service)、存储(Volume)。
(2)与资源对象相关的事物与动作,例如标签(Label)、注解(Annotation)、命名空间(Namespace)、部署(Deployment)、HPA、PVC。

一些资源对象有自己的生命周期及相应的状态,比如Pod,我们通过kubectl客户端工具创建一个Pod并将其提交到系统中后,它就处于等待调度的状态,调度成功后为Pending状态,等待容器镜像下载和启动、启动成功后为Running状态,正常停止后为Succeeded状态,非正常停止后为Failed状态。同样,PV也是具有明确生命周期的资源对象。对于这类资源对象,我们还需要了解其生命周期的细节及状态变更的原因,这有助于我们快速排查故障。


二、集群类

集群(Cluster)表示一个由Master和Node组成的Kubernetes集群。

1.Master

Master指的是集群的控制节点。在每个Kubernetes集群中都需要有一个或一组被称为Master的节点,来负责整个集群的管理和控制。
Master通常占据一个独立的服务器(在高可用部署中建议至少使用3台服务器),是整个集群的“大脑”,如果它发生宕机或者不可用,那么对集群内容器应用的管理都将无法实施。

在Master上运行着以下关键进程。

  • ◎ Kubernetes API Server(kube-apiserver):提供HTTP RESTful API接口的主要服务,是Kubernetes里对所有资源进行增、删、改、查等 操作的唯一入口,也是集群控制的入口进程。
  • ◎ Kubernetes Controller Manager(kube-controller-manager):Kubernetes里所有资源对象的自动化控制中心,可以将其理解为资源对象的“大总管”。
  • ◎ Kubernetes Scheduler(kube-scheduler):负责资源调度(Pod 调度)的进程,相当于公交公司的调度室。

另外,在Master上通常还需要部署etcd服务。

在这里插入图片描述

  • Kube-APIServer:集群的控制中枢,各个模块之间信息交互都需要经过Kube-APIServer,同时它也是集群管理、资源配置、整个集群安全机制的入口。
  • Controller-Manager:集群的状态管理器,保证Pod或其他资源达到期望值,也是需要和APIServer进行通信,在需要的时候创建、更新或删除它所管理的资源。
  • Scheduler:集群的调度中心,它会根据指定的一系列条件,选择一个或一批最佳的节点,然后部署我们的Pod。
  • Etcd:键值数据库,报错一些集群的信息,一般生产环境中建议部署三个以上节点(奇数个)。建议用ssd磁盘,否则之后越来越大,影响etcd的性能。

2.Node

Kubernetes集群中除Mater外的其他服务器被称为Node,Node在较早的版本中也被称为Minion。与Master一样,Node可以是一台物理主机,也可以是一台虚拟机。Node是Kubernetes集群中的工作负载节点,每个Node都会被Master分配一些工作负载(Docker容器),当某个Node宕机时,其上的工作负载会被Master自动转移到其他Node上。在每个
Node上都运行着以下关键进程。

Worker、node节点、minion节点

  • ◎ kubelet:负责Pod对应容器的创建、启停等任务,同时与 Master密切协作,实现集群管理的基本功能。 负责监听节点上Pod的状态,同时负责上报节点和节点上面Pod的状态,负责与Master节点通信,并管理节点上面的Pod。
  • ◎ kube-proxy:实现Kubernetes Service的通信与负载均衡机制的服务。负责Pod之间的通信和负载均衡,将指定的流量分发到后端正确的机器上。
  • ◎ 容器运行时(如Docker):负责本机的容器创建和管理。

其他组件

  • Calico:符合CNI标准的网络插件,给每个Pod生成一个唯一的IP地址,并且把每个节点当做一个路由器。Cilium、eBPF
  • CoreDNS:用于Kubernetes集群内部Service的解析,可以让Pod把Service名称解析成IP地址,然后通过Service的IP地址进行连接到对应的应用上。
  • Docker:容器引擎,负责对容器的管理。

Node可以在运行期间动态增加到Kubernetes集群中,前提是在这个Node上已正确安装、配置和启动了上述关键进程。在默认情况下,kubelet会向Master注册自己,这也是Kubernetes推荐的Node管理方式。一旦Node被纳入集群管理范畴,kubelet进程就会定时向Master汇报自身的情报,例如操作系统、主机CPU和内存使用情况,以及当前有哪些Pod在运行等,这样Master就可以获知每个Node的资源使用情况,并实现高效均衡的资源调度策略。而某个Node在超过指定时间不上报信息时,会被Master判定为“失联”,该Node的状态就被标记为不可用(NotReady),Master随后会触发“工作负载大转移”的自动流程。


查看在集群中有多少个Node:

[root@k8s-master01 ~]#kubectl get node
NAME           STATUS   ROLES    AGE   VERSION
k8s-master01   Ready    <none>   73d   v1.28.0
k8s-master02   Ready    <none>   73d   v1.28.0
k8s-master03   Ready    <none>   73d   v1.28.0
k8s-node01     Ready    <none>   73d   v1.28.0
k8s-node02     Ready    <none>   73d   v1.28.0
[root@k8s-master01 ~]#kubectl describe node k8s-master01
Name:               k8s-master01
Roles:              <none>
Labels:             beta.kubernetes.io/arch=amd64
                    beta.kubernetes.io/os=linux
                    kubernetes.io/arch=amd64
                    kubernetes.io/hostname=k8s-master01
                    kubernetes.io/os=linux
                    node.kubernetes.io/node=
Annotations:        node.alpha.kubernetes.io/ttl: 0
                    projectcalico.org/IPv4Address: 10.1.2.21/16
                    projectcalico.org/IPv4IPIPTunnelAddr: 172.16.32.128
                    volumes.kubernetes.io/controller-managed-attach-detach: true
CreationTimestamp:  Sun, 25 Aug 2024 11:49:54 +0800
Taints:             <none>
Unschedulable:      false
Lease:
  HolderIdentity:  k8s-master01
  AcquireTime:     <unset>
  RenewTime:       Wed, 06 Nov 2024 15:11:49 +0800
Conditions:
  Type                 Status  LastHeartbeatTime                 LastTransitionTime                Reason                       Message
  ----                 ------  -----------------                 ------------------                ------                       -------
  NetworkUnavailable   False   Mon, 04 Nov 2024 09:37:29 +0800   Mon, 04 Nov 2024 09:37:29 +0800   CalicoIsUp                   Calico is running on this node
  MemoryPressure       False   Wed, 06 Nov 2024 15:11:56 +0800   Sun, 25 Aug 2024 11:49:54 +0800   KubeletHasSufficientMemory   kubelet has sufficient memory available
  DiskPressure         False   Wed, 06 Nov 2024 15:11:56 +0800   Sun, 25 Aug 2024 11:49:54 +0800   KubeletHasNoDiskPressure     kubelet has no disk pressure
  PIDPressure          False   Wed, 06 Nov 2024 15:11:56 +0800   Sun, 25 Aug 2024 11:49:54 +0800   KubeletHasSufficientPID      kubelet has sufficient PID available
  Ready                True    Wed, 06 Nov 2024 15:11:56 +0800   Sun, 25 Aug 2024 11:52:37 +0800   KubeletReady                 kubelet is posting ready status
Addresses:
  InternalIP:  10.1.2.21
  Hostname:    k8s-master01
Capacity:
  cpu:                8
  ephemeral-storage:  81880Mi
  hugepages-2Mi:      0
  memory:             8143976Ki
  pods:               
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Cyan_Jiang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值