Kubernetes 基础知识总结
本文内容
- 前提关联知识
- k8s 是什么
- 怎么使用 k8s 部署一个 hello world 的Docker
Kubernetes 相关知识
- 分布式系统基础
- 因为 k8s 的各个部分从原生设计上就是分布式,杂合了很多分布式系统的知识
- linux 系统基础
- K8s部署和操作都推荐 使用 linux操作
- Docker 基础 (重点)
- K8s 本质上是一个Docker管家,为应对大量docker容器的管理而生
- 学习精神
- 阅读英文文档,才能得到完整的、最新的文档
- 因环境不同,部署常常造成许多问题,保持一个进取和冷静的心才能快速解决问题
K8s 是什么
- K8s 是 Kubernetes的缩写,因为 ubernete 是8个字母,因而被称为 K8s
- K8s 是 Google 公司的一个内部系统(Borg)开源而来,近来在各种管理 Docker 的软件中脱颖而出,占据多数份额
- K8s 类似于一个软件系统,它的目的是 灵活高效的管理 Docker容器,K8s 不仅可以管理Docker容器,还可以管理其他 虚拟化容器
直接使用Docker 部署服务带来的问题
- 随着部署在 Docker容器中的 服务越来越来多,手动启动或暂停多个Docker 容器的效率过于低下
- 如何监控所有Docker 容器的状态,或者当Docker 容器所需要的资源已经不需要满足时,动态灵活地扩充或缩减资源
- Docker 搭建集群后,如何对所有Docker容器 进行负载均衡
面对这些问题,K8s 如何解决
- K8s 首先面对的问题,就是对多个容器进行控制,Docker 服务除了使用命令行执行,也可以使用API 进行控制
- K8s 自带一个网页,也就是可以通过网页点击管理容器,K8s 接管所有Docker 服务,暴露出 命令和API
- 有了 K8s ,可以不直接操作 Docker 也能完成服务部署,这就是 k8s 的核心功能
K8s 管理硬件资源和状态监控
- K8s 引入插件 Prometheus 进行可视化监控,也可以使用 dashboard 进行查看状态
- K8s 引入一个 Pods 的概念,Pod 相当于一个独立的资源,以前docker 是一个独立的资源,现在 Pod 是 K8s 中的最小管理单元
- Pod中通常只放一个容器,也可以放多个容器,此时这几个容器应该是关联性非常强的
- Pod拥有独立的CPU、内存、网络、存储资源
- 查看官网对Pod的介绍
- K8s 通过对 pod 进行操作,就可以对Docker容器进行控制了
- 在用户层面使用特定格式的 yaml 文件进行声明,K8s 会按照文件内容部署Pod
- 以前我们部署 Docker 在一台机器上,K8s 引入一个 nodes 的概念,这台部署Docker 服务的机器就是一个 node, K8s 会把pod 部署在 node上,如下图
- 右下角中 nodes 就是一台台服务器,也就是说,K8s 的管理不仅是多个docker容器,还是多个服务器上的多个docker容器
- 右下角中 nodes 就是一台台服务器,也就是说,K8s 的管理不仅是多个docker容器,还是多个服务器上的多个docker容器
- 总结
concept | 意思 | 关联 | 备注 |
---|---|---|---|
pod | K8s 管理的最小单元 | 容器部署在pod中 | pod 可容纳一个或多个有紧密联系的容器 |
node | K8s 中的部署服务器 | pod部署在node中 | node 可部署多个 pod |
K8s 的大脑 K8s 控制层
K8s 抢救容器
K8s