资源管理
介绍
所有的k8s内容都抽象为资源的方式,用户通过操作资源来管理k8s
k8s的核心就是对集群上的pod,pod控制器,service,存储等何种资源进行操作
资源管理方式
命令式对象管理
直接用命令去操作k8s资源
kubectl run nginxpod --image=nginx:1.17.1 --port=80
语法格式:kubectl [command] [type] [name] [flags]
- command: 指定要对资源执行的操作,例如create,get,delete
- type:指定资源类型,比如deployment,pod,service,通过
kubectl api-resources
查看资源类型 - name:指定资源名称,大小写敏感
- flags:指定额外的可选参数
# 查看所有pod
kubectl get pod
# 查看单个pod
kubectl get pod pod_name
# 查看某个pod,并以yaml,json,wide形式显示
kubectl get pod pod_name -o yaml/json/wide
经常使用的操作有下面这些:
命令分类 | 命令 | 翻译 | 命令作用 |
---|---|---|---|
基本命令 | create | 创建 | 创建一个资源 |
edit | 编辑 | 编辑一个资源 | |
get | 获取 | 获取一个资源 | |
patch | 更新 | 更新一个资源 | |
delete | 删除 | 删除一个资源 | |
explain | 解释 | 展示资源文档 | |
运行和调试 | run | 运行 | 在集群中运行一个指定的镜像 |
expose | 暴露 | 暴露资源为Service | |
describe | 描述 | 显示资源内部信息 | |
logs | 日志输出容器在 pod 中的日志 | 输出容器在 pod 中的日志 | |
attach | 缠绕进入运行中的容器 | 进入运行中的容器 | |
exec | 执行容器中的一个命令 | 执行容器中的一个命令 | |
cp | 复制 | 在Pod内外复制文件 | |
rollout | 首次展示 | 管理资源的发布 | |
scale | 规模 | 扩(缩)容Pod的数量 | |
autoscale | 自动调整 | 自动调整Pod的数量 | |
高级命令 | apply | rc | 通过文件对资源进行配置 |
label | 标签 | 更新资源上的标签 | |
其他命令 | cluster-info | 集群信息 | 显示集群信息 |
version | 版本 | 显示当前Server和Client的版本 |
使用kubectl --help
获取指令信息
# 创建一个namespace
[root@master ~]# kubectl create namespace dev
namespace/dev created
# 获取namespace ns为namespace的简写
[root@master ~]# kubectl get ns
NAME STATUS AGE
default Active 21h
dev Active 21s
kube-node-lease Active 21h
kube-public Active 21h
kube-system Active 21h
# 在此namespace下创建并运行一个nginx的Pod -n 为指定命名空间,不指定则在default命名空间下
[root@master ~]# kubectl run pod --image=nginx:latest -n dev
kubectl run --generator=deployment/apps.v1 is DEPRECATED and will be removed in a future version. Use kubectl run --generator=run-pod/v1 or kubectl create instead.
deployment.apps/pod created
# 查看新创建的pod 需指出命名空间,不然去default空间下查询
[root@master ~]# kubectl get pod -n dev
NAME READY STATUS RESTARTS AGE
pod 1/1 Running 0 21s
# 查看创建pod时的详细过程信息
kubectl describe pod pod_name
# 删除指定的pod
[root@master ~]# kubectl delete pod pod-864f9875b9-pcw7x
pod "pod" deleted
# 删除指定的namespace
[root@master ~]# kubectl delete ns dev
namespace "dev" deleted
命令式对象配置
通过命令配置和配置文件去操作k8s资源
kubectl create/patch -f nginxpod.yaml
配置文件
-
创建一个nginxpod.yaml文件
# namespace 声明一个dev的命令空间 apiVersion: v1 kind: NameSpace metadata: name: dev # 一个yaml写多个配置时用到的分割符号 --- # 创建Pod apiVersion: v1 kind: Pod metadata: name: nginxpod namespace: dev spec: containers: - name: nginx-containers # 容器名 image: nginx:1.17.1 # 镜像
-
创建一个Pod
kubectl create -f nginxpod.yaml
-
查看
kubectl get ns dev
kubectl get pod -n dev
get pod 和 get pods 使用时没有区别
声明式对象配置
声明式对象配置只有一个【apply】配置,没有其他命令
通过apply命令**[创建和更新资源]**和配置文件去操作k8s资源
kubectl apply -f nginxpod.yaml
小结
要想在node节点中运行kubectl命名,需要复制master节点中的配置文件 $HOME/.kube
需要在master节点执行
scp -r HOME/.kube node1: HOME/