概述

Kubernetes 是一个可移植、可扩展的开源平台,用于管理容器化的工作负载和服务,可促进声明式配置和自动化。 Kubernetes 拥有一个庞大且快速增长的生态,其服务、支持和工具的使用范围相当广泛。

Kubernetes 这个名字源于希腊语,意为“舵手”或“飞行员”。K8s 这个缩写是因为 K 和 s 之间有 8 个字符的关系。 Google 在 2014 年开源了 Kubernetes 项目。 Kubernetes 建立在 Google 大规模运行生产工作负载十几年经验的基础上, 结合了社区中最优秀的想法和实践。

为何需要?

使用 Kubernetes 可以帮助组织更高效、更可靠地管理和运行容器化的应用程序,提升开发和运维团队的生产力,并能够更快速地响应业务需求和市场变化

k8s 的核心组件

  • etcd:分布式键值存储,用于保存集群的配置信息。
  • kube-apiserver:提供 Kubernetes API 服务,是集群的统一入口。
  • kube-controller-manager:运行控制器,负责维护集群的状态,如副本控制器、节点控制器等。
  • kube-scheduler:负责调度 Pod 到合适的节点上运行。
  • kubelet:在每个节点上运行,负责管理 Pod 和容器。
  • kube-proxy:在每个节点上运行,负责网络代理和负载均衡。
  • kubectl:命令行工具,用于与 Kubernetes 集群进行交互。

k8s 的核心概念

  • Pod:最小的部署单元,可以包含一个或多个容器。
  • Node:集群中的工作节点,可以运行 Pod。
  • Namespace:用于将集群资源划分为不同的命名空间,实现资源隔离。
  • Service:定义了一组 Pod 的访问策略,提供稳定的网络访问。
  • Volume:存储卷,用于持久化存储数据。
  • PersistentVolume:持久化存储卷,用于长期存储数据。
  • PersistentVolumeClaim:用户对存储卷的请求,由系统自动分配合适的 PersistentVolume。
  • Deployment:用于管理无状态应用的部署。
  • StatefulSet:用于管理有状态应用的部署。
  • DaemonSet:用于在每个节点上运行一个 Pod 的副本。
  • Job:用于运行一次性的任务。
  • CronJob:用于定时运行任务。
  • ConfigMap:用于存储配置数据。
  • Secret:用于存储敏感数据,如密码、密钥等。
  • Ingress:用于管理外部访问集群的入口。
  • ServiceAccount:用于管理 Kubernetes 集群中的服务账号。
  • Role、RoleBinding、ClusterRole、ClusterRoleBinding:用于定义和授权访问集群资源的权限。