首页 > 其他分享 >6、k8s-资源管理方式-命令式对象管理-命令式对象配置-声明式对象配置--一切皆是资源

6、k8s-资源管理方式-命令式对象管理-命令式对象配置-声明式对象配置--一切皆是资源

时间:2024-06-13 18:13:36浏览次数:22  
标签:kubectl nginx 对象 namespace dev -- 命令式 pod 资源

注意:资源管理的三种方式都是在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

相关文章

  • SFC命令的基本用法,以及处理基本系统文件问题的能力,为系统维护和故障排除提供基础支持;S
    SFC命令初级应用大纲1.理解SFC命令命令简介:了解SFC(SystemFileChecker)命令的作用和基本原理。掌握SFC命令的基本语法和用法。2.执行基本系统文件检查运行SFC扫描:学习如何以管理员身份在命令提示符或Powershell中运行SFC扫描。理解SFC扫描的过程和输出。解......
  • 虚拟环境配置以及xshll配置
    演示环境:win11+VMware16pro+xshell7+centos7.9虚拟机和xshell配置1.vmware的安装【16pro】,镜像导入注意【不要将软件下载到带中文和其他特殊字符的目录内】硬件配置【2核2线程2G内存就够。IP地址就动态获取就行】启动centos虚拟机,输入用户名和密码获取IP地址和网......
  • 清洁取暖监管服务应用
    随着科技的飞速发展,工业物联网(IoT)技术正在逐步渗透到我们生活的方方面面,其中包括了取暖领域。在传统行业中,取暖方式往往伴随着高能耗和高污染,而清洁取暖监管服务应用的出现,正是为了解决这一问题,推动取暖方式向更加环保、高效的方向转变。所谓“清洁取暖”,是指利用清洁能源进行取......
  • 记录两个群音视频开源框架LiveKit和mediasoup
    mediasoup: https://github.com/versatica/mediasoupliveKit: https://github.com/livekit/livekit 为开发者提供的实时视频、音频和数据传输解决方案LiveKit是一个开源项目,基于WebRTC提供可扩展的多用户会议功能。它旨在为您的应用构建实时视频、音频和数据交互能力提......
  • 活动回顾丨飞天技术沙龙 Serverless + AI 专场(上海站)回顾 & PPT 下载
    5月31日“飞天技术沙龙Serverless+AI专场”上海站圆满落幕。活动受众以关注 Serverless技术的开发者、企业决策人、云原生领域创业者为主,活动形式为演讲、动手实操,让开发者通过一个下午的时间增进对Serverless技术的理解,快速上手Serverless,拥抱云计算新范式带来的......
  • Vue Antd Admin本地部署
    官网:https://doc.vue-antd-admin.pages.dev/github地址:https://github.com/iczer/vue-antd-admin/tree/basic 1、basic分支本地部署(开发基于此分支)克隆项目basic分支到本地->>下载依赖:npminstall->>启动项目:npmrunserve 2、master分支本地部署(研究基于此分支-试......
  • Java 17 新增的语法特性
    Java17新增的语法特性目录Java17新增的语法特性JEP与ProjectAmber引言1.Records[JEP395]2.switch表达式与yield[JEP361]3.用于instanceof的模式匹配[JEP394]4.文本块[JEP378]5.密封类[JEP409]Java17的其他主要改进稳定版的ZGC垃圾回收器主流Java开发框架支持更......
  • Java 21新增的语法特性
    Java21新增的语法特性目录Java21新增的语法特性引言record模式[JEP440]用于switch的模式匹配[JEP441]序列集合[JEP431]虚拟线程[JEP444]Java21的其他改进说明1:本文大量参考了JEP文档与Oracle官方文档,部分文字直接引自这两个文档并进行了适当的修改。说明2:本文代码详......
  • 视频生成模型 Dream Machine 开放试用;微软将停止 Copilot GPTs丨 RTE 开发者日报 Vol.
       开发者朋友们大家好: 这里是「RTE开发者日报」,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享RTE(Real-TimeEngagement)领域内「有话题的新闻」、「有态度的观点」、「有意思的数据」、「有思考的文章」、「有看点的会议」,但内容仅代表编......
  • C#——类和对象详情
    类和对象类类是一种数据结构,它可以包含数据成员(常量和字段)、函数成员(方法、属性、事件、索引器、运算符、实例构造函数、静态构造函数和析构函数)以及嵌套类型。类类型支持继承,继承是一种机制,它使派生类可以对基类进行扩展和专用化在C#中,类是引用类型的,其中包括状态(成员属......