Kubernetes(通常缩写为 K8s)是一个开源容器编排平台,用于自动化应用程序容器的部署、扩展和管理。最初由 Google 设计并捐赠给 Cloud Native Computing Foundation(CNCF)来维护,它现在是云原生应用部署和管理的事实标准。
Kubernetes 的核心特性包括:
- 容器编排:自动化部署和管理容器化应用程序。
- 服务发现和负载均衡:Kubernetes 可以使用 DNS 名称或自己的 IP 地址公开容器,并在容器之间自动负载均衡流量。
- 存储编排:自动挂载所选的存储系统,例如本地存储、公共云提供者等。
- 自我修复:自动替换、重新启动、复制和扩展出现故障的容器。
- 自动化滚动更新:逐渐替换旧版本的容器实例为新版本,无需停机即可更新应用。
- 自动扩展:根据 CPU 使用情况或其他选定的指标自动扩展容器数量。
- 安全和合规性:管理敏感信息,如密码、OAuth 令牌和 SSH 密钥。
- 跨主机集群调度:跨一组机器的集群调度和运行容器,优化资源利用率。
Kubernetes 的架构包括:
- Master节点:控制面组件,如 API Server、Scheduler、Controller Manager 等,它们管理集群的状态和调度容器运行。
- Worker节点:运行应用程序容器的地方,每个节点由 Kubelet 管理,这是在节点上运行的主要 Kubernetes 代理。
- Pods:Kubernetes 的部署单元,通常包含一个或多个容器,它们共享网络和存储资源。
- Service:抽象层,用于定义一组 Pod 和访问它们的策略。
- Deployment:用于描述应用的预期状态,Kubernetes 控制器会自动管理 Pod 和 ReplicaSet 来达到这个状态。
Kubernetes 提供了一个声明式 API,可以定义应用架构和配置,而 Kubernetes 会处理剩下的事情,以确保你声明的状态与实际运行状态相匹配。这使得 Kubernetes 成为运行分布式系统的强大工具,特别是在微服务架构中。