一、资源管理方式
资源管理方式有三种:
#命令式对象管理:直接用命令操作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 资源名称
》》》博主长期更新学习心得,推荐点赞关注!!!
》》》若有错误之处,请在评论区留言,谢谢!!!
版权声明:本文不是「本站」原创文章,版权归原作者所有 | 原文地址: