(十七)Kubernetes资源管理

一、资源管理方式

资源管理方式有三种:

#命令式对象管理:直接用命令操作kubernetes资源
kubectl run nginx --image=nginx:1.17.1 --port=80
#命令式对象配置:通过命令配置和配置文件去操作kubernetes资源
kubectl cteate/patch -f nginx-pod.yaml
#声明式对象配置:通过apply命令和配置文件去操作kubernetes资源
kubectl apply -f nginx-pod.yaml

在这里插入图片描述
1. 命令式对象管理
kubectl命令
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
#查看某个pod,l以yaml格式展示结果
kubectl get pod pod_name -o yaml
#以json格式显示
kubectl get pod pod_name -o json
#详细信息
kubectl get pod pod_name -o wide

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

kubectl api-resources

经常使用的资源有下面这些:
在这里插入图片描述
kubernetes允许对资源进行多种操作,可以通过kubectl --help查看详细的操作命令
命令类型
在这里插入图片描述
下面以一个namespace/pod的创建和删除简单演示下命令的使用:

#创建一个namespace
kubectl create namespace dev

#查看namespace
kubectl get ns

#在这个namespace下面跑一个pod
kubectl run pod --image=nginx:1.17.1 -n dev

#查询该命名空间下的pod, 不加-n dev 默认查的是default下面的
kubectl get pods -n dev

#查看pod创建详情
kubectl describe pods pod-cbb995bbf-ddrq8 -n dev

#删除pod
kubectl delete pods pod-cbb995bbf-ddrq8 -n dev

#删除命名空间
kubectl delete ns dev

2. 命令式对象配置
命令式对象配置是使用命令配合配置文件一起来操作kubernetes资源
(1) 创建一个nginxpod.yaml, 内容如下:

apiVersion: v1
kind: Namespace
metadata:
	name: dev
---
apiVersion: v1
kind: Pod
metadata:
	name: nginxpod
	namespace: dev
spec:
	containers:
	- name: nginx-containers
	  image: nginx:1.17.1

(2)执行create命令,创建资源

kubectl create -f nginxpod.yaml

此时发现创建了两个,一个是namespace,一个是pod
(3)根据配置文件删除

kubectl delete -f nginxpod.yaml

此时发现pod和namespace都被删除了

3. 声明式对象配置
声明式对象配置和命令式对象配置十分相似,但是他只有一个命令apply

#首先执行一次kubectl apply -f yaml文件,发现创建了资源
kubectl apply -f nginxpod.yaml

#再次执行kubectl apply -f yaml文件,发现资源没有变动
kubectl apply -f nginxpod.yaml

#修改yaml文件nginx版本为1.17.2版本,再次执行命令,会发现镜像有改变
kubectl apply -f nginxpod.yaml

在这里插入图片描述
总结:
使用apply操作资源,如果资源不存在,则创建,相当于create;如果资源存在,在相当于patch更新。

扩展:
kubectl 可以在node节点上运行吗?

[root@node1 ~]# kubectl get node
The connection to the server localhost:8080 was refused - did you specify the right host or port?

会发现被拒绝。
kubectl运行是需要配置文件的,他的配置文件是$HOME/.kube,如果想在node节点运行此命令,需要将master上的.kube文件复制到node节点上,即在master节点上执行下面操作:

scp -r ~/.kube node1: ~/

在这里插入图片描述
在node1使用命令:
在这里插入图片描述
使用哪种资源管理方式更好?推荐方案如下:
创建/更新资源 使用声明式对象配置 kubectl apply -f xxx.yaml
删除资源 使用命令式对象配置 kubectl deletre -f xxx.yaml
查询资源 使用命令式对象管理 kubectl get/describe 资源名称

》》》博主长期更新学习心得,推荐点赞关注!!!
》》》若有错误之处,请在评论区留言,谢谢!!!

猜你喜欢

转载自blog.csdn.net/qq_41622739/article/details/113875983