K8s小白入门

文章目录


前言

Kubernetes(K8s)是一个开源的容器编排平台,用于自动化容器化应用的部署、扩展和管理。是支持云原生部署的一个平台,它前生是谷歌的Borg系统,后经过Go语言重写,在2014 年开源了 Kubernetes 项目,并捐献给CNCF 基金会开源,即Kubernetes,之所以简称K8s,因为 Kubernetes 中间有 8个字母。


一、特性

  1. 自动化部署和回滚:K8s 允许用户声明应用的期望状态,并自动将实际状态调整为期望状态。这意味着可以自动部署新版本的应用,并在出现问题时自动回滚到之前的版本。

  2. 服务发现和负载均衡:K8s 可以使用 DNS 名称或自己的 IP 地址来暴露容器。如果进入容器的流量很大,K8s 可以负载均衡并分配网络流量,从而使部署稳定。

  3. 存储编排:K8s 允许自动挂载用户选择的存储系统,例如本地存储、公共云提供商等。

  4. 自动完成装箱计算:K8s 提供了资源调度功能,能够根据容器的资源需求,将其分配到合适的节点上,优化资源利用率。

  5. 自我修复:K8s 能够自动重启失败的容器、替换容器、杀死不响应用户定义的健康检查的容器,并且在准备好服务之前不将其通告给客户端。

  6. 密钥与配置管理:K8s 允许存储和管理敏感信息,例如密码、OAuth 令牌和 SSH 密钥。可以在不重建容器镜像的情况下部署和更新密钥和应用程序配置,也无需在堆栈配置中暴露密钥。

  7. 水平扩缩:K8s 支持根据 CPU 使用率或其他自定义指标,自动对应用进行扩展或缩减,确保应用在不同负载下都能高效运行。

  8. 可移植性和灵活性:K8s 支持在多种环境中运行,包括本地数据中心、公有云和混合云,提供一致的操作体验。

二、集群的结构

集群的结构主要由控制平面(Control Plane)和工作节点(Node) 两部分组成。

控制平面内部组件

Kubernetes 的控制平面(Control Plane)是集群的核心,负责管理和协调所有节点,确保集群处于期望的状态。控制平面由以下关键组件组成:

  1. API 服务器(kube-apiserver)

    • 功能:作为 Kubernetes 控制平面的前端,提供集群的 RESTful API 接口,处理所有的 API 请求,包括认证、授权、数据校验和集群状态变更。
    • 作用:所有其他组件都通过 API 服务器进行通信,是集群的统一入口。
  2. etcd

    • 功能:一个分布式、一致性、高可用的键值存储,用于保存集群的所有配置信息和状态数据。
    • 作用:作为集群的唯一数据源,存储了所有的集群数据,包括节点信息、Pod 状态、配置数据等。
  3. 调度器(kube-scheduler)

    • 功能:监视新创建且未指定运行节点的 Pod,并根据资源需求、硬件/软件/策略约束、亲和性/反亲和性规范等因素,将其分配到合适的节点上。
    • 作用:确保工作负载在集群中的合理分布,优化资源利用率。
  4. 控制器管理器(kube-controller-manager)

    • 功能:运行各种控制器进程,每个控制器负责维护集群的不同方面,确保实际状态与期望状态一致。

    • 常见控制器

      • 节点控制器:负责在节点出现故障时进行通知和响应。
      • 副本控制器:确保每个副本集(ReplicaSet)具有正确数量的 Pod 副本。
      • 端点控制器:填充 Endpoint 对象,维护服务与 Pod 之间的映射关系。
  5. 云控制器管理器(cloud-controller-manager)

    • 功能:嵌入特定云提供商的控制逻辑,允许将集群与云提供商的 API 集成。
    • 作用:管理与云平台相关的控制器,如节点控制器、路由控制器和服务控制器,处理云资源的创建、更新和删除。

Node内部组件

在 Kubernetes 集群中,节点(Node) 是实际运行容器化应用的工作单元。每个节点包含以下关键组件:

  1. kubelet

    • 功能:节点上的核心代理,负责与控制平面通信,确保容器按照定义正确运行。
    • 作用:接收并执行来自 API 服务器的 Pod 指令,监控 Pod 和容器的状态,报告节点和 Pod 的状态信息。
  2. kube-proxy

    • 功能:节点上的网络代理,负责维护网络规则,处理服务的网络代理和负载均衡。
    • 作用:实现 Kubernetes 服务的通信与负载均衡机制,确保网络流量正确路由到相应的 Pod。
  3. 容器运行时(Container Runtime)

    • 功能:负责实际运行容器的底层软件。
    • 作用:管理容器的生命周期,包括创建、启动、停止和删除容器。常见的容器运行时包括 Docker、containerd、CRI-O 等。

这些组件共同协作,确保节点能够高效地运行和管理容器化的应用程序,提供稳定的运行环境。

三、Docker与K8s的关系

互补性: Docker 提供了容器化的技术基础,使应用程序可以在任何地方以一致的方式运行;而 Kubernetes 则提供了容器编排和管理的能力,帮助更轻松地管理和扩展应用程序。

集成性: Kubernetes 可以使用 Docker 作为容器运行时接口的一部分。这意味着 Kubernetes 可以利用 Docker 来运行容器,但 Kubernetes 也可以与其他容器运行时(如 containerd、CRI-O 等)一起工作。

抽象层: Kubernetes 提供了一层抽象,使得用户无需关心底层基础设施的具体细节,而是专注于应用的部署和服务管理。


总结

K8s的概念较为复杂,但基本的结构就是这些。如今K8s是现代云原生应用的首选平台。

相关推荐
摸鱼也很难1 小时前
Docker 镜像加速和配置的分享 && 云服务器搭建beef-xss
运维·docker·容器
鸠摩智首席音效师4 小时前
Docker 中如何限制CPU和内存的使用 ?
docker·容器
Michaelwubo4 小时前
Docker dockerfile镜像编码 centos7
运维·docker·容器
好像是个likun5 小时前
使用docker拉取镜像很慢或者总是超时的问题
运维·docker·容器
暴富的Tdy7 小时前
【快速上手Docker 简单配置方法】
docker·容器·eureka
魏 无羡7 小时前
linux CentOS系统上卸载docker
linux·kubernetes·centos
Karoku0668 小时前
【k8s集群应用】kubeadm1.20高可用部署(3master)
运维·docker·云原生·容器·kubernetes
豆豆豆豆变8 小时前
docker之compose篇
docker·容器·自动化运维
凌虚9 小时前
Kubernetes APF(API 优先级和公平调度)简介
后端·程序员·kubernetes
saynaihe9 小时前
安全地使用 Docker 和 Systemctl 部署 Kafka 的综合指南
运维·安全·docker·容器·kafka