Kubernetes 简介
了解 Kubernetes 及其特性。
什么是 Kubernetes?
“Kubernetes” 是一个希腊词,意为“舵手”或船的掌舵者。Kubernetes 的图标代表了舵轮(船舶的操控装置)。Kubernetes 也常被称为 K8s。如果我们仔细观察,“K” 和 “s” 之间恰好有八个字母,因此得名 K8s。
Kubernetes 最初由 Google 开发,之后捐赠给了云原生计算基金会(CNCF)。目前由 CNCF 进行维护。它是一款用 Golang 编写的开源软件。
在现实世界中,单个容器无法满足我们的全部需求。大型组织通常采用包含数百个容器的复杂架构,以确保高可用性、负载均衡,并能根据用户流量动态扩展或缩减。
Kubernetes 是一个开源的容器编排平台,能够自动化部署、管理和扩展容器化应用过程中涉及的大量手动操作。换句话说,我们可以将一组运行容器的主机集群化,Kubernetes 将帮助我们轻松高效地管理这个集群。
让我们了解一些关于 Kubernetes 的重要信息:
- Kubernetes 本身不会直接启动应用程序,它仅协助容器来启动应用。
- 它不直接使用容器,而是将容器封装在一个称为 Pod 的容器中。Pod 是一个带有额外信息或元数据的容器。这些数据由 Kubernetes 自身用于资源管理。
我们需要一种基础设施来管理我们的应用及其相关资源,以部署应用。如果我们的应用运行在容器技术上,一旦容器发生故障,就无法恢复应用状态。因此,为了管理和监控容器,我们需要一些工具。Kubernetes 就是其中之一。
Kubernetes 提供了所有这些功能,因此被称为容器管理工具。课程编写时的稳定版本为 v1.20。
Pods 和节点
在 Kubernetes 中,我们不直接与容器交互。容器被封装在一个名为 Pod 的功能单元中。一个 Pod 可以包含一个或多个容器。Pod 被部署在节点上。节点 可以承载一个或多个 Pod。
一个 Pod 包含以下内容:
- 应用容器(有时为多个容器)
- 存储资源
- 唯一的网络 IP 地址
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 命令。