注意:资源管理的三种方式都是在master节点上运行的、如果想在node节点上运行下边的指令操作、需要将master节点上的配置文件 .kube/ 复制到node节点上:(scp -r /root/.kube/ node1:/root/.kube)
资源管理方式:三种方式
1、命令式对象管理--直接使用命令去操作kubernetes资源:如:(此操作会在node节点的主机上去拉取nginx镜像) kubectl run nginx-pod --image=nginx:1.17.1 --port=80 2、命令式对象配置--通过命令配置和配置文件去操作kubernetes资源、如: kubectl create/patch -f nginx-pod.yaml 3、声明式对象配置:通过apply命令和配置文件去操作kubernetes资源: kubectl apply -f nginx-pod.yaml #apply只能实现创建和更新操作
三种方式的优缺点:
==========================1、命令式对象管理=====================
kubectl命令
1、kubectl命令: ·kubectl是kubernetes集群的命令行工具、通过它能够对集群本身进行管理、并且能够在集群上进行容器化应用的安装部署。 语法: kubectl [command] [type] [name] [flags] ·command:指定要对资源执行的操作、例如create、get、delete ·type:指定资源类型、如deployment(部署)、pod、services ·name:指定资源的名称、名称大小写敏感 ·flags:指定额外的可选参数 如: ·查看所有的pod:kubectl get pod ·查看某个pod:kubectl get pod nginx-6867cdf567-9zv5r(pod的名字) ·查看某个pod、以yaml格式展示结果:kubectl get pod nginx-6867cdf567-9zv5r -o yaml
command:命令
kubectl --help 可查看 基本命令: ·create 创建 创建一个资源 ·edit 编辑 编辑一个资源 ·get 获取 获取一个资源 ·patch 更新 更新一个资源 ·delete 删除 删除一个资源 ·explain 解释 展示资源文档 运行和调试命令: ·run 运行 在集群中运行一个指定的镜像 ·expose 暴露端口 暴露资源为service ·describe 描述 显示资源的内部信息 ·logs 日志 输出容器在pod中的日志 ·attach 缠绕 进入运行中的容器 ·exec 执行 执行容器中的一个命令 ·cp 复制 在pod内外复制文件 ·rollout 首次展示 管理资源的发布 ·scale 规模 扩(缩)容pod的数量 ·autoscale 自动调整 自动调整pod的数量 高级命令: ·apply rc 通过文件资源进行配置 ·label 标签 更新资源上的标签 其它命令: ·cluster-info 集群信息 显示集群信息 ·version 版本 显示当前server和client的版本
type:类型
查看type类型命令:kubectl api-resources 集群级别的资源: ·nodes no 集群组成部分 ·namespace ns 隔离pod pod资源 ·pods pod 装载容器 pod资源控制器 ·replicationcontrollers rc 控制pod资源 ·replicasets rs 控制pod资源 ·deployments deploy 控制pod资源 ·daemonsets ds 控制pod资源 ·jobs 控制pod资源 ·cronjobs cj 控制pod资源 ·horizontalpodautoscalers hpa 控制pod资源 ·statefulsets sts 控制pod资源 服务发现资源: ·service svc 统一pod对外接口 ·ingress ing 统一pod对外接口 存储资源: ·volumeattachments 存储 ·persistentvolumes pv 存储 ·persistentvolumeclaims pvc 存储 配置资源: ·configmaps cm 配置 ·secrets 配置
命令式对象管理的案例:
1、创建一个namespace( 空间):kubectl create namespace dev =================================== namespace/dev created #dev 为空间名 #namespace可简写为ns =================================== 2、查看namespace:kubectl get ns 或者kubectl get namespace ================================== NAME STATUS AGE default Active 24h //默认的namespace:如果在run 一个pod不指定空间的情况下会在这个默认的空间下(可通过kubectl get pods查看) dev Active 102s kube-flannel Active 23h kube-node-lease Active 24h kube-public Active 24h kube-system Active 24h ================================= 3、在指定的namespace下创建一个pod:kubectl run pod --image=nginx -n dev =================================== #指定一个空间dev 下运行一个pod pod下运行一个nginx 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 ====================================== 4、查看某个空间下的pod:kubectl get pods -n dev ======================================= #如果不加 -n dev (指定查看空间名下的pod)、就会查看默认空间default下的pod NAME READY STATUS RESTARTS AGE pod-864f9875b9-f7n4n 0/1 Pending 0 2m21s ======================================= 5、查看某个空间里的pod的描述信息:kubectl describe pods pod-864f9875b9-f7n4n(pod名) -n dev =====================================================================================================================================
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Scheduled 2m42s default-scheduler Successfully assigned dev/pod-864f9875b9-f7n4n to k8s-node1 #1、将你的安装nginx的请求调度到k8s-node1主机上执行 Normal Pulling 2m41s kubelet, k8s-node1 Pulling image "nginx" #2、在node1集群上拉取nginx镜像 Normal Pulled 2m1s kubelet, k8s-node1 Successfully pulled image "nginx" #3、拉取镜像成功 Normal Created 2m1s kubelet, k8s-node1 Created container pod #4、创建一个pod容器 Normal Started 2m kubelet, k8s-node1 Started container pod #5、启动pod容器
#创建一个pod的过程#1、2、3、4、5 所以镜像的拉取是在node1主机上操作的 ========================================================================================================================================
6、删除pod:kubectl delete pods pod-5cddc86467-kmm8r -n dev
========================================================================================
#注意:由于上面运行pod用的是run(使用的是pod控制器)、所以删除pod后,会自动再重新启动一个不一样的pod、使用kubectl get pods -n xiaoxin查看发现pod的名字已经不一样了
pod "pod-5cddc86467-kmm8r" deleted
========================================================================================
7、删除空间namespace:kubectl delete ns dev
==============================================
#删除空间后里边的所有pod都会自动删除
namespace "dev" deleted
===========================================
8、查看namaspace:kubectl get ns
注:namespace > pods > 容器 > 应用
==================2、命令式对象配置 实际就是命令+yaml文件=============================
就是使用命令配合配置文件一起来操作kubernetes资源
1、创建一个yaml文件:vim 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 ------------------------解析------------------------------- #--- 分隔符、将不同的内容分开 #apiVersion: v1 用于指定所使用的 Kubernetes API 的版本 #kind: Namespace 表示这是一个namespace对象 #metadata 字段包含有关 Pod 的元数据,如名称和命名空间 #name: dev 指定了namespace的名字为dev #spec 字段定义了 Pod 的规格,包括容器和其他相关配置 #name: nginx-containers 指定了容器的名称为 "nginx-containers" #image: nginx:1.17.1 指定了容器所使用的镜像为 "nginx:1.17.1" ===================================== =================================
2、创建一个资源:kubectl create -f nginxpod.yaml
================================================
namespace/dev created
pod/nginxpod created
=============================================
3、查看pod和namespace:
·kubectl get pod
·kubectl get ns
4、删除pod和namespace:
·kubectl delete -f nginxpod.yaml
=================3、声明式对象配置 --仅用于更新、新增=====================
只能用apply
1、用上面的yaml文件执行:kubectl apply -f nginxpod.yaml ================================ namespace/dev created pod/nginxpod created ================================ 总结: 其实声明对象配置就是使用apply描述一个资源的最终状态(再yaml文件中定义状态) 使用apply操作资源时: ·如果资源不存在、就创建、相当于 kubectl create ·如果资源存在、就更新、相当于 kubectl patch
标签:kubectl,nginx,对象,namespace,dev,--,命令式,pod,资源 From: https://www.cnblogs.com/littlecc/p/17530630.html