Logo
Section 1 / 10

Kubernetes 简介

了解 Kubernetes 及其特性。

导入

Kubernetes 简介

了解 Kubernetes 及其特性。

什么是 Kubernetes?

“Kubernetes” 是一个希腊词,意为“舵手”或船的掌舵者。Kubernetes 的图标代表了舵轮(船舶的操控装置)。Kubernetes 也常被称为 K8s。如果我们仔细观察,“K” 和 “s” 之间恰好有八个字母,因此得名 K8s。

Kubernetes 最初由 Google 开发,之后捐赠给了云原生计算基金会(CNCF)。目前由 CNCF 进行维护。它是一款用 Golang 编写的开源软件。

在现实世界中,单个容器无法满足我们的全部需求。大型组织通常采用包含数百个容器的复杂架构,以确保高可用性、负载均衡,并能根据用户流量动态扩展或缩减。

Kubernetes 是一个开源的容器编排平台,能够自动化部署、管理和扩展容器化应用过程中涉及的大量手动操作。换句话说,我们可以将一组运行容器的主机集群化,Kubernetes 将帮助我们轻松高效地管理这个集群。

...
Kubernetes

让我们了解一些关于 Kubernetes 的重要信息:

  • Kubernetes 本身不会直接启动应用程序,它仅协助容器来启动应用。
  • 它不直接使用容器,而是将容器封装在一个称为 Pod 的容器中。Pod 是一个带有额外信息或元数据的容器。这些数据由 Kubernetes 自身用于资源管理。

我们需要一种基础设施来管理我们的应用及其相关资源,以部署应用。如果我们的应用运行在容器技术上,一旦容器发生故障,就无法恢复应用状态。因此,为了管理和监控容器,我们需要一些工具。Kubernetes 就是其中之一。

Kubernetes 提供了所有这些功能,因此被称为容器管理工具。课程编写时的稳定版本为 v1.20。

Pods 和节点

在 Kubernetes 中,我们不直接与容器交互。容器被封装在一个名为 Pod 的功能单元中。一个 Pod 可以包含一个或多个容器。Pod 被部署在节点上。节点 可以承载一个或多个 Pod。

一个 Pod 包含以下内容:

  • 应用容器(有时为多个容器)
  • 存储资源
  • 唯一的网络 IP 地址
...
Pods 和 Nodes

kubectl

kubectl 用于管理 Kubernetes 集群。它具备管理集群中节点的能力。通过 kubectl 命令,我们可以与 Kubernetes 对象及集群进行交互和管理。

基本 kubectl 命令

命令用途
kubectl version查看 kubectl 的版本
kubectl cluster-info显示集群主控节点和各项服务的端点信息
kubectl get namespaces列出所有命名空间
kubectl get pods列出所有 Pod
kubectl get nodes列出所有节点
kubectl get rc列出所有副本控制器

让我们尝试执行一些基本的 kubectl 命令。

Terminal

Docker

Kubernetes 的特性 - 自动化部署与回滚:Kubernetes 可以自动部署应用,并在出现问题时自动回滚到之前的稳定版本。 - 自动化容器编排:根据资源需求和约束条件,Kubernetes 能够智能地调度和管理容器的运行位置。 - 服务发现与负载均衡:Kubernetes 提供内置的服务发现机制,能够自动为服务分配网络地址,并实现流量的负载均衡。 - 存储编排:支持动态挂载各种存储系统(如本地存储、云存储等),并能根据需要自动配置存储资源。 - 自我修复能力:当容器或节点出现故障时,Kubernetes 会自动重启失败的容器,替换故障节点上的容器,确保应用持续可用。 - 水平扩展:支持根据 CPU 使用率或其他指标自动扩展应用实例数量,实现弹性伸缩。 - 密钥与配置管理:提供安全的密钥和配置信息管理功能,避免将敏感信息硬编码在镜像中。 - 批处理任务支持:可以定义和运行批处理作业,例如定时任务或一次性任务。 - 多环境支持:可在物理机、虚拟机、公有云、私有云等多种环境中运行,具备良好的可移植性。 - 命名空间支持:通过命名空间对集群资源进行逻辑隔离,便于多团队或多项目共享同一集群。 - 配置与策略管理:支持通过声明式配置文件定义应用状态,并可通过策略控制访问权限和资源使用。 - 可观测性:集成日志、监控和追踪功能,帮助用户了解应用运行状态和性能表现。