k8s资源管理
▶ 资源管理介绍
kubernetes的本质上就是一个集群系统,用户可以在集群中部署各种服务,所谓的部署服务,其实就是在kubernetes集群中运行一个个的容器,并将指定的程序跑在容器中。
k8s最小的管理单元是pod而不是容器
▶ 资源管理方式
• 命令式对象管理
直接使用命令去操作k8s资源
kubectl run nginx-pod --image=nginx:1.17.1 --port=80
• 命令式对象配置
通过命令配置和配置文件去操作k8s资源
kubectl create/patch -f nginx-pod.yaml
• 声明式对象配置
通过apply命令和配置文件去操作k8s资源
kubectl apply -f nginx-pod.yaml
▶ 命令式对象管理
• k8s命令
kubectl [namespace] [command] [type] [name] [flags]
command:指定要对资源执行的操作,例如create、get、delete
type:指定资源类型,比如deployment、pod、service
name:指定资源的名称,名称大小写敏感
flags:指定额外的可选参数
• k8s资源类型
k8s中所有的内容都抽象为资源,可以通过下面的命令查看:
kubectl api-resources
显示资源的每一列的含义:
name| shortnames| apiversion| namespace| kind
---|---|---|---|---
pods| po| v1 apps/v1| true/false| Pod
资源的完整名称| 资源简写别名| 该资源所属API版本格式:组/版本| 是否名称空间隔离true:属于某个namespace必须指定命名空间false:集群级别资源,全局不属于任何namespace| 资源Kind类型yaml文件里kind:后面的值
▶ 命令式对象配置
• 创建一个nginxpod.yaml:
apiVersion: v1 #api版本
kind: Pod #类型
metadata: #元数据块,存放资源名字、命名空间、标签等信息
name: nginxpod #pod名字
namespace: dev #所属命名空间
spec: #期望状态,最重要的配置段,告诉k8s我要这个pod长什么样
containers:
- name: nginx-containers #容器名
image: nginx:1.17.1 #基于的镜像
#### • 执行create/patch命令,创建/更新资源
kubectl create/patch -f nginxpod.yaml
### ▶ 声明式对象配置
#### • 声明式对象配置跟命令式对象配置很相似,但是它只有一个命令apply
声明式对象配置就是使用apply描述一个资源最终的状态(在yaml中定义状态)
使用apply操作资源:
如果资源不存在,就创建,相当于kubectl create
如果资源已存在,就更新,相当于kubectl patch
许可协议:
CC BY 4.0