资源管理介绍
在kubernetes中,所有的内容都抽象为资源,用户通过操作资源来管理kubernetes
kubernetes资源有Pod、Service、Deployment、存储等。
Pod:kubernetes管理的最小单元,里面可以跑多个容器(container)
Service:对集群外部提供访问端口
Deployment:控制Pod的副本数量、更新和回滚等操作
存储(PV、PVC):Pod程序中的数据持久化
学习kubernetes的核心就是学习如何对集群上的Pod、Service、存储等各种资源进行操作。
这些资源大多以yaml文件为格式,不了解的可以自行了解一下,这里不再介绍了。
资源管理方式
分为下面三种形式(了解即可,多操作下面的不用记)
- 命令式对象管理:直接使用命令操作kubernetes资源
kubectl run nginxpod --image=nginx --port=80
- 命令式对象配置:通过命令和配置文件操作kubernetes资源
kubectl create/patch -f nginxpod.yaml
- 声明式对象配置:通过apply命令和配置文件操作kubernetes资源
kubectl apply -f nginxpod.yaml
下面分别介绍下三种方式具体使用方法:
命令式对象管理
kubectl [command] [type] [name] [flags]
command:指定要对资源执行的操作,例如create、get、delete
type:指定资源类型,比如deployment、pod、service
name:指定资源的名称,大小写敏感
flags:指定额外的可选参数
常见命令:
命令分类 | 命令 | 命令作用 |
---|---|---|
基本命令 | create | 创建一个资源 |
get | 获取一个资源 | |
delete | 删除一个资源 | |
运行和调试 | run | 在集群中运行一个指定的镜像 |
expose | 暴露资源为Service | |
describe | 显示资源内部信息 | |
logs | 输出容器在pod中的日志 | |
exec | 执行容器中的一个命令 | |
cp | 在Pod内外复制文件 | |
rollout | 管理资源的发布 | |
scale | 扩缩容Pod的数量 |
#查看所有pod
kubectl get pod
#查看某个pod
kubectl get pod pod_name
#查看某个pod,以yaml格式展示结果
kubectl get pod pod_name -o yaml
#查看pod的详细信息(这样可以查看pod部署在哪个节点,IP等信息)
kubectl get pod -o wide
资源类型可以通过下面的命令查看:
kubectl api-resources
常见资源类型有;
资源分类 | 资源名称 | 缩写 | 资源作用 |
---|---|---|---|
集群级别资源 | nodes | no | 节点 |
namespaces | ns | 隔离pod | |
pod资源 | pods | po | 装载容器 |
pod资源控制器 | deployments | deploy | 控制pod资源 |
statefulsets | sts | 控制pod资源 | |
replicasets | rs | 控制pod资源 | |
服务发现资源 | services | svc | 统一pod对外接口 |
ingress | ing | 统一pod对外接口 | |
存储资源 | persistentvolumes | pv | 存储 |
persistentvolumeclaims | pvc | 存储 | |
配置资源 | configmaps | cm | 配置 |
secrets | 配置 |
常用命令示例:
kubectl create namespace dev //创建名为dev的命名空间
kubectl get ns //获取命名空间
kubectl run nginxpod --image=nginx -n dev //创建一个nginx的pod,分配到dev空间
kubectl get pod -n dev
kubectl delete pod pod_name -n dev(不指定命名空间,默认是default)
命令式对象配置
可以简单理解为命令+yaml文件(常见命令上面已经介绍过)
创建一个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
创建资源:
kubectl create -f nginxpod.yaml
namespace/dev created
pod/nginxpod created
执行get命令查看资源:
kubectl get -f nginxpod.yaml
删除资源:
kubectl delete -f nginxpod.yaml
声明式对象配置
kubectl apply -f nginxpod.yaml
这种方式只能用来部署服务(部署更新),如果想删除资源,用第二种方式,即命令式对象配置。
其实不管哪种方式,操作多了用自己最熟练的方式就行。
使用推荐:三种方式应该怎么用?
创建/更新 资源使用声明式对象配置 kubectl apply -f xxx.yaml
删除资源 使用命令式对象配置 kubectl delete -f xxx.yaml
查询资源 使用命令式对象管理 kubectl get(describe)资源名称