一、资源管理介绍
在 Linux 中拥有一切皆文件的概念,在 JAVA 中有一切皆对象的概念,而在 Kubernetes 中含有一切皆资源的概念。
其实Kubernetes 本质上是一组服务器组成的集群系统,用户可以在该集群之中部署各种服务,所谓各种服务其实就是运行在 pod 中的一个个容器资源,并且将指定的程序运行到 pod 之中,例如在 pod 中含有一个 MySQL 容器对外提供服务。
Kubernetes 中最小的管理单元是 pod 而不是容器,所以我们只能将容器运行在 pod 之中,而且 Kubernetes 一般也不会直接操控 pod 而是通过 pod 控制器对 pod 进行管理操控。
当容器成功的在 pod 之中运行,我们就需要思考如何访问这个容器,在 Kubernetes 之中提供了 service 资源来帮我忙进行容器的访问。
如果 pod 中程序的数据需要持久化,Kubernetes还提供了各种存储系统。
二、资源管理方式
(1)命令式对象管理:直接使用命令去操作kubernetes资源
kubectl run nginx-pod --image=nginx:1.17.1 --port=80
(2)命令式对象配置:通过命令配置和配置文件去操作kubernetes资源
Kubectl create/path -f nginx-pod.yml
(3)声明式对象配置:通过apply和配置文件去操作kubernetes资源
Kubectl apply -f nginx-pod.yml
类型 | 操作对象 | 适用环境 | 优点 | 缺点 |
---|---|---|---|---|
命令式对象管理 | 对象 | 测试 | 简单 | 只能操作活动对象,无法审计、跟踪 |
命令式对象配置 | 文件 | 开发 | 可以审计、跟踪 | 项目大时,配置文件多,操作麻烦 |
声明式对象配置 | 目录 | 开发 | 支持目录操作 | 意外情况下难以调试 |
1、命令式对象管理
Kubectl命令
Kubectl是kubernetes集群的命令行工具,通过它能够对集群本身进行管理,并能够在集群上进行容器化应用的安装部署。Kubectl命令的语法如下:
Kubectl [command] [type] [name] [flags]
- Command: 指定要对资源执行的操作,比如:create、get、delete
- Type:指定资源类型,比如deployment、pod、service
- Name:指定资源的名称,名称大小写敏感
- Flags:指定额外的可选参数