资源管理介绍
在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)资源名称
2128

被折叠的 条评论
为什么被折叠?



