资源管理

介绍

所有的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的数量
高级命令applyrc通过文件对资源进行配置
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

配置文件
  1. 创建一个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 # 镜像
    
  2. 创建一个Pod

    kubectl create -f nginxpod.yaml

  3. 查看

    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/

请添加图片描述

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐