(第三章)资源管理

yaml语言介绍
资源管理方式介绍
方式1:命令式对象管理
方式2:命令式对象配置
方式3:声明式对象配置
配置方式总结
kubectl在node节点上执行

资源管理

本章节主要介绍yaml语法和kubernetes的资源管理方式
学习kubernetes的核心,就是学习如何对集群上的Pod、Pod控制器、Service、存储等各种资源进行操作
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-W4JFixu6-1651391374869)(en-resource://database/1603:1)]

yaml语言介绍

小提示:

​ 1 书写yaml切记: 后面要加一个空格

​ 2 如果需要将多段yaml配置放在一个文件中,中间要使用---分隔

​ 3 下面是一个yaml转json的网站,可以通过它验证yaml是否书写正确

​ https://www.json2yaml.com/convert-yaml-to-json

资源管理方式介绍
  • 命令式对象管理:直接使用命令去操作kubernetes资源

    kubectl run nginx-pod --image=nginx:1.17.1 --port=80

  • 命令式对象配置:通过命令配置和配置文件去操作kubernetes资源

    kubectl create/patch -f nginx-pod.yaml

  • 声明式对象配置:通过apply命令和配置文件去操作kubernetes资源

    kubectl apply -f nginx-pod.yaml (只进行创建和更新操作)

类型操作对象适用环境优点缺点
命令式对象管理对象测试简单只能操作活动对象,无法审计、跟踪
命令式对象配置文件开发可以审计、跟踪项目大时,配置文件多,操作麻烦
声明式对象配置目录开发支持目录操作意外情况下难以调试
命令式对象管理

kubectl是kubernetes集群的命令行工具,通过它能够对集群本身进行管理,并能够在集群上进行容器化应用的安装部署。kubectl命令的语法如下
kubectl [command] [type] [name] [flags]
comand:指定要对资源执行的操作,例如create、get、delete

type:指定资源类型,比如deployment、pod、service

name:指定资源的名称,名称大小写敏感

flags:指定额外的可选参数

常用的命令如下:
查看所有pod
kubectl get pod

查看某个pod
kubectl get pod pod_name
查看某个node
kubectl get node node-name

查看某个pod,以yaml格式展示结果
kubectl get pod pod_name -o yaml
kubectl get pod pod_name -o json 以JSON的方式查看结果数据

查看帮助命令:kubectl -help
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1E3tOq5w-1651391374870)(en-resource://database/1605:1)]

kubernetes中所有的内容都抽象为资源,
可以通过下面的命令进行查看:
kubectl api-resources

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nna5MElb-1651391374871)(en-resource://database/1607:1)]

方式2:命令式对象配置

存在配置文件XXX.yaml文件

命令式对象配置的方式操作资源,可以简单的认为:命令 + yaml配置文件(里面是命令需要的各种参数)

方式3:声明式对象配置

其实声明式对象配置就是使用apply描述一个资源最终的状态(在yaml中定义状态)
使用apply操作资源:
如果资源不存在,就创建,相当于 kubectl create
如果资源已存在,就更新,相当于 kubectl patch

总结

使用推荐: 三种方式应该怎么用 ?

创建/更新资源 使用声明式对象配置 kubectl apply -f XXX.yaml

删除资源 使用命令式对象配置 kubectl delete -f XXX.yaml

查询资源 (测试常用) 使用命令式对象管理 kubectl get(describe) 资源名称

node 节点上支持kubectl命令的方法

它的配置文件是$HOME/.kube,如果想要在node节点运行此命令,需要将master上的.kube文件复制到node节点上,即在master节点上执行下面操作:
scp -r HOME/.kube node1: HOME/

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐