kubernetes学习(1)---基础知识

一、基础知识

  • Kubernetes 协调一个高可用计算机集群,每个计算机作为独立单元互相连接工作

  • Kubernetes 中的抽象允许您将容器化的应用部署到集群,而**无需将它们绑定到某个特定的独立计算机**

  • Kubernetes 以更高效的方式跨集群自动分发和调度应用容器

一个kubernetes集群包含两种类型的资源:

  • Master调度整个集群
  • Nodes负责运行应用
    在这里插入图片描述

二、kubernetes介绍

1)节点 (Master node and Worker node)

节点通常指的就是服务器,在k8s中有两种节点:

管理节点(Master Node)工作节点(Worker Node),具体如下表

节点描述
管理节点(Master Node)负责管理整个k8s集群,一般由3个管理节点组成HA的架构。是否需要高可用,需要看实际情况而定
工作节点(Worker Node)主要负责运行容器。

2)命名空间 (Namespace)

k8s命名空间主要用于隔离集群资源、隔离容器等,为集群提供了一种虚拟隔离的策略;默认存在3个名字空间,分别是默认命名空间 default、系统命名空间 kube-system 和 kube-public。

3)Object

k8s 对象(Object)是一种**持久化存储并且用于表示集群状态的实体**。k8s 对象其实就是k8s自己的配置协议,总之我们可以通过定义一个object让k8s根据object定义执行一些部署任务、监控任务等等

4)Pod

Pod是 Kubernetes 部署应用或服务的最小的基本单位。一个Pod 封装多个应用容器(也可以只有一个容器)、存储资源、一个独立的网络 IP 以及管理控制容器运行方式的策略选项。

5)副本集 (Replica Set,RS)

副本集 (Replica Set,RS)是一种控制器,负责监控和维护集群中pod的副本(replicas)数,确保pod的副本数是我们期望的样子。 目前好像不再使用这个资源,一般都是deployment、statefulset或者damonset

6)部署 (Deployment)

表示对k8s集群的一次更新操作,是k8s集群中最常用的Object,主要用于部署应用。支持滚动升级。

7)服务 (service)

服务 (service)是对应用的抽象,也是k8s中的基本操作单元,一个服务背后由多个pod支持,服务通过负载均衡策略将请求转发到容器中。

8)Ingress

Ingress是一种网关服务,可以将k8s服务通过http协议暴露到外部。同样的还有traefik

9)无状态应用 & 有状态应用

无状态应用指的是应用在容器中运行时候不会在容器中持久化存储数据,应用容器可以随意创建、销毁;如果一个应用有多个容器实例,对于无状态应用,请求转发给任何一个容器实例都可以正确运行。 <----- 例如web应用

有状态应用指的是应用在容器中运行时候需要稳定的持久化存储、稳定的网络标识、固定的pod启动和停止次序 <----- 例如数据库服务等

三、Kubernetes架构

Kubernetes(K8s)是多个组件组成,具体如下图

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BpoFAp8o-1647502809503)(D:\gaowen\最新工作\K8S学习\kubernetes基础知识整理\图片\k8s架构.png)]

1)Master组件

名称解释
API ServerK8S对外的唯一接口,提供HTTP/HTTPS RESTful API,即kubernetesAPI。所有的请求都需要经过这个接口进行通信。主要负责接收、校验并响应所有的REST请求,结果状态被持久存储在etcd当中,所有资源增删改查的唯一入口。
etcd负责保存k8s集群的配置信息和各种资源的状态信息,当数据发生变化时,etcd会快速地通知k8s相关组件。etcd是一个独立的服务组件,并不隶属于K8S集群。生产环境当中etcd应该以集群方式运行,以确保服务的可用性。etcd不仅仅用于提供键值数据存储,而且还为其提供了监听(watch)机制,用于监听和推送变更。在K8S集群系统中,etcd的键值发生变化会通知倒APIServer,并由其通过watch API向客户端输出。
Controller Manager负责管理集群各种资源,保证资源处于预期的状态。Controller Manager由多种controller组成,包括replicationcontroller、endpoints controller、namespace controller、serviceaccountscontroller等 。由控制器完成的主要功能主要包括生命周期功能和API业务逻辑,具体如下:生命周期功能:包括Namespace创建和生命周期、Event垃圾回收、Pod终止相关的垃圾回收、级联垃圾回收及Node垃圾回收等。API业务逻辑:例如,由ReplicaSet执行的Pod扩展等。
调度器(Schedule)资源调度,负责决定将Pod放到哪个Node上运行。Scheduler在调度时会对集群的结构进行分析,当前各个节点的负载,以及应用对高可用、性能等方面的需求。

2)Node组件

名称解释
Kubeletkubelet是node的agent,当Scheduler确定在某个Node上运行Pod后,会将Pod的具体配置信息(image、volume等)发送给该节点的kubelet,kubelet会根据这些信息创建和运行容器,并向master报告运行状态。
Container Runtime每个Node都需要提供一个容器运行时(ContainerRuntime)环境,它负责下载镜像并运行容器。目前K8S支持的容器运行环境,至少包括Docker、RKT、cri-o、Fraki等。
Kube-proxyservice在逻辑上代表了后端的多个Pod,外借通过service访问Pod。service接收到请求就需要kube-proxy完成转发到Pod的。每个Node都会运行kube-proxy服务,负责将访问的service的TCP/UDP数据流转发到后端的容器,如果有多个副本,kube-proxy会实现负载均衡,有2种方式:LVS或者Iptables。
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值