[云原生2.] Kurbernetes资源管理 ---- (陈述式资源管理方式)

news2025/1/19 23:09:48

文章目录

  • 1. K8s管理资源的方法类别
    • 1.1 陈述式资源管理方式
    • 1.2 声明式资源管理方式
    • 1.3 GUI式资源管理方法
  • 2. 陈述式资源管理方式
    • 2.1 命令行工具 ---- Kubelet
      • 2.1.1 简介
      • 2.1.2 特性
      • 2.1.3 kubelet拓展命令
      • 2.1.4 kubectl基本语法
      • 2.1.5 Kubectl工具的自动补全
    • 2.2 k8s Service 的类型
      • 2.2.1 NodePort
      • 2.2.2 ClusterIP
      • 2.2.3 LoadBalancer
      • 2.2.4 ExternalName
    • 2.3 k8s Service 的端点类型
      • 2.3.1 Port
      • 2.3.2 NodePort
      • 2.3.3 TargetPort
      • 2.3.4 ContainerPort
  • 3. 陈述式资源管理方式的基础命令
    • 3.1 创建
      • 3.1.1 创建命名空间
      • 3.1.2 create子命令
      • 3.1.3 run子命令
    • 3.2 get ---- 查看基本信息
      • 3.2.1 Kubernetes 集群组件的状态
      • 3.2.2 命名空间
      • 3.2.3 Service(服务)
      • 3.2.4 pod信息
      • 3.2.5 Node(节点)列表
    • 3.3 describe ---- 查看资源详细信息
    • 3.4 logs ---- 查看日志
    • 3.5 delete ---- 删除指定的资源
    • 3.6 exec ---- 跨主机登录容器
    • 3.7 scale ---- replicas(副本数)
  • 4. 项目的生命周期
    • 4.1 创建-----kubectl create命令
    • 4.2 发布-----kubectl expose命令
    • 4.3 更新 ----- kubectl set命令
    • 4.4 回滚 ----- kubectl rollout 命令

1. K8s管理资源的方法类别

1.1 陈述式资源管理方式

主要依赖命令行工具kubectl进行管理
可理解为使用一条命令和参数选项来实现资源的管理操作

1.2 声明式资源管理方式

主要依赖统一资源配置清单进行管理
可以理解为使用yaml配置文件的定义来实现资源的管理操作

1.3 GUI式资源管理方法

主要依赖图形化操作界面进行管理

2. 陈述式资源管理方式

k8s中文文档:http://docs.kubernetes.org.cn/683.html

2.1 命令行工具 ---- Kubelet

2.1.1 简介

kubectl 是官方的CLI命令行工具,用于与 apiserver 进行通信,将用户在命令行输入的命令,组织并转化为 apiserver 能识别的信息,进而实现管理 k8s 各种资源的一种有效途径

2.1.2 特性

  • 优点
    1.可以满足90%以上的使用场景
    2.对资源的增、删、查操作比较容易

  • 缺点
    1.命令冗长,复杂,难以记忆
    2.特定场景下,无法实现管理需求
    3.对资源的修改麻烦,需要patch来使用json串更改。

2.1.3 kubelet拓展命令

#kubectl 的命令大全
kubectl --help
        -h 
#查看k8s版本信息
kubectl version

在这里插入图片描述

#查看资源对象简写
kubectl api-resources

在这里插入图片描述

#查看集群信息
kubectl cluster-info

在这里插入图片描述

#node节点查看日志
journalctl -u kubectl -f

在这里插入图片描述

2.1.4 kubectl基本语法

kubectl [command] [Type] [NAME] [flags]
command:	子命令	用于操作kubernetes集群资源对象的命令	
TYPE:	资源对象的类型	区分大小写,能以单数,复数或者简写形式表示	
NAME:	资源对象的名称	区分大小写,如果不指定名称,系统则将返回属于TYPE的全部对象的列表	
flags:	子命令的可选参数	

2.1.5 Kubectl工具的自动补全

#二进制安装的k8s,kubectl工具没有自动补全功能(其他方式安装的未验证)
#可以使用以下方式开启命令自动补全
vim /etc/bashrc

source <(kubectl completion bash)

在这里插入图片描述在这里插入图片描述

2.2 k8s Service 的类型

2.2.1 NodePort

在这里插入图片描述
Service的端口号映射到每个Node的一个端口号上,这样集群中的任意Node都可以作为Service的访问入口地址,即NodeIP:NodePort
每个端口只能是一种服务,端口范围只能是 30000-32767

2.2.2 ClusterIP

默认值,它是Kubernetes系统自动分配的虚拟IP(Cluster IP:Port),只能在集群内部访问

2.2.3 LoadBalancer

在这里插入图片描述
LoadBalancerNodePort很相似,目的都是向外部暴露一个端口,区别在于LoadBalancer会在集群的外部再来做一个负载均衡设备,而这个设备需要外部环境支持的,外部服务发送到这个设备上的请求,会被设备负载之后转发到集群中

2.2.4 ExternalName

在这里插入图片描述
ExternalName类型的服务用于将集群外的服务定义为Kubernetes的集群的Service,并且通过externalName字段指定外部服务的地址,可以使用域名或IP格式,集群内的客户端应用通过访问这个Service就能访问外部服务了。

2.3 k8s Service 的端点类型

在这里插入图片描述
Service是通过标签选择器绑定Pod的标签来关联Pod的端点(Endpoint)。

2.3.1 Port

Service 的ClusterIP 使用的端口

2.3.2 NodePort

在NodePort类型的service定义的端口,在每个node节点上开启的端口,即 nodeIP 使用的端口,默认范围为30000~32767

2.3.3 TargetPort

使用云负载设备和service做映射,外部用户通过云负载设备即可将请求转发到node节点,再通过nodeIP:nodePort访问service并转发给其关联的Pod。

2.3.4 ContainerPort

相当于给一个外部地址做别名,集群内的Pod可以通过这个service访问相关的外部服务。8875

K8S集群内部的客户端可以通过  http://clusterIP:port  -->  podIP:containerPort

K8S集群外部的客户端可以通过  http://nodeIP:nodePort -->  podIP:containerPort

3. 陈述式资源管理方式的基础命令

3.1 创建

run为一次性的创建运行,删除后不会自动生成,没有pod控制器。

create创建的,删除后还会自动生成,有pod控制器,拥有副本集控制。

3.1.1 创建命名空间

kubectl create ns <name>
#示例
kubectl create ns scj

在这里插入图片描述

3.1.2 create子命令

kubectl create [-n <命名空间>] <资源类型> <资源名称> [选项]
                                                 --image=镜像 
                                                 --replicas=副本数 
                                                 --port=容器端口
#示例
kubectl create service <service-name> --tcp=<port>:<target-port>

kubectl create pod <pod-name> --image=<container-image>

kubectl create deployment <deployment-name> --image=<container-image>

3.1.3 run子命令

#创建并运行
kubectl run <资源名称> --image=镜像 --replicas=副本数 --port=容器端口

3.2 get ---- 查看基本信息

#基本格式
kubectl get <resource> [-o wide|json|yaml] [-n namespace]
获取资源的相关信息,-n指定命令空间,-o指定输出格式
resource可以是具体资源名称,如pod nginx- xxx;也可以是资源类型,如pod; 或者all (仅展示几种核心资源,并不完整)

--all-namespaces 或-A :表示显示所有命令空间,
--show-labels :显示所有标签
-l x:仅显示标签为x的资源
-l x=y:仅显示包含x标签,且值为y的资源

3.2.1 Kubernetes 集群组件的状态

kubectl get componentstatuses 
kubectl get cs #简写

在这里插入图片描述

get pods --show-labels
#查看有哪些标签,面试常问

3.2.2 命名空间

命名空间在 Kubernetes 中主要用于隔离和管理资源名称。

每个命名空间具有自己的资源名称空间,保证了资源名称的唯一性。

#获取当前集群中所有命名空间的列表

kubectl get namespace 
kubectl get ns #简写

在这里插入图片描述

#获取命名空间中的所有资源的列表

kubectl get all [-n namespace]
#不指定命名空间,则默认查看default命名空间

在这里插入图片描述

3.2.3 Service(服务)

kubectl get service
kubectl get svc 

在这里插入图片描述

3.2.4 pod信息

kubectl get pods [-n namespace] [-o wide|json|yaml]
kubectl get pods --all-namespaces -o wide

在这里插入图片描述

3.2.5 Node(节点)列表

kubectl get nodes

在这里插入图片描述

3.3 describe ---- 查看资源详细信息

#基本格式
kubectl describe [-n <命名空间>] <资源类型> <资源名称>
#示例
#先根据kubectl get pods -A,找到要查看的资源
kubectl describe pod etcd-master01 -n kube-system

在这里插入图片描述

3.4 logs ---- 查看日志

kubectl logs [-n <命名空间>] <Pod资源名称> [-c 容器名称] [-f] [-p]
#查看Pod容器的日志
选项对象功能
-n命名空间用于指定 Pod 所属的命名空间,如果不指定命名空间,将默认使用默认命名空间
-c容器名称,可选的容器参数用于指定要获取日志的容器名称,如果 Pod 中只有一个容器,可以省略此参数
-f可选的跟踪参数用于告诉命令持续输出日志
-p可选的先前参数用于获取已经终止的 Pod 的先前日志如果 Pod 重新创建或重新调度,该参数可以用来获取先前的日志
#举个例子
kubectl logs -n kube-system  kube-proxy-ggw6p

在这里插入图片描述

3.5 delete ---- 删除指定的资源

Pod没有重启的概念,重启的是容器 被自动删除和重新创建

#删除命名空间app
kubectl delete [-n <命名空间>] <资源类型> <资源名称>|--all [--force --grace-period=0]
#示例
kubectl delete pod nginx-764b95f4c5-7t65m 

在这里插入图片描述

#若pod无法删除, 总是处于terminate状态, 则要强行删除pod
kubectl delete pod <name> [-n namespace ] --force --grace-period=0

#grace-period表示过渡存活期,默认30s,在删除pod之前允许POD慢慢终止其上的容器进程,从而优雅退出,0表示立即终止pod。

3.6 exec ---- 跨主机登录容器

kubectl exec可以跨主机登录容器,docker exec 只能在容器所在主机上登录。

kubectl exec -it [-n <命名空间>] <Pod资源名称> [-c 容器名称] sh|bash
#示例
kubectl exec -it  nginx-764b95f4c5-hsj59 sh

在这里插入图片描述

3.7 scale ---- replicas(副本数)

用于调整 Kubernetes 集群中 Deployment 或 StatefulSet 对象的副本数量

kubectl scale [-n <命名空间>] <deployment|statefulset> <资源名称> --replicas=副本数
#增加副本数(扩容)
kubectl scale deployment nginx --replicas=6

在这里插入图片描述

#减少副本数(缩容)
kubectl scale deployment nginx --replicas=1

在这里插入图片描述

kubectl scale deployment nginx --replicas=0
#reolicas=0等于清空

4. 项目的生命周期

创建–>发布–>更新–>回滚–>删除

4.1 创建-----kubectl create命令

创建并运行一个或多个容器镜像。

创建一个deploymentjob 来管理容器。

kubectl create --help
kubectl create service <svc资源类型> <svc资源名称> --tcp=<clusterIP的端口:容器的端口>
#举个例子 
#启动 nginx 实例,暴露容器端口 80,设置副本数 3
kubectl create deployment nginx --image=nginx:1.14 --port=80 --replicas=3

kubectl get pods
kubectl get all

在这里插入图片描述

4.2 发布-----kubectl expose命令

将资源暴露为新的 Service。

kubectl expose --help
kubectl expose [-n <命名空间>] deployment <资源名称> --name <自定义svc资源名称> --type <svc资源类型> --port <clusterIP的端口> --targetPort <容器的端口>
                     ClusterIP|NodePort|LoadBalancer|ExternalName
#示例
#为deployment的nginx创建service,
#并通过Service的80端口转发至容器的80端口上
#Service的名称为nginx-service,类型为NodePort
kubectl expose deployment nginx --port=80 --target-port=80 --name=nginx-service --type=NodePort

在这里插入图片描述

#查看pod网络状态详细信息和 Service暴露的端口
kubectl get pods,svc -o wide


#查看关联后端的节点
kubectl get endpoints

#查看 service 的描述信息
kubectl describe svc nginx

在这里插入图片描述

curl 10.244.3.3:80
curl 10.244.3.4:80
curl 10.244.4.3:80

curl 192.168.67.100:30724

#在master01操作 查看访问日志
kubectl logs nginx-d9d8cf5c7-6zpc2
kubectl logs nginx-d9d8cf5c7-85rvh 
kubectl logs nginx-d9d8cf5c7-nffcz 

在这里插入图片描述

4.3 更新 ----- kubectl set命令

更改现有service的一些信息

kubectl set --help
#更新 Kubernetes 集群中某个 Deployment 的容器镜像
kubectl set image deployment <deployment资源名称> <容器名>=<镜像名>
#更改 Kubernetes 中服务对象的标签选择器
kubectl set selector service <svc资源名称> '标签key=value'
#示例

#查看当前 nginx 的版本号
curl -I http://192.168.67.100:30724

在这里插入图片描述

#将nginx 版本更新为 1.15 版本
kubectl set image deployment/nginx nginx=nginx:1.15

kubectl get pods,svc -o wide

在这里插入图片描述

#再次查看nginx版本号
curl -I 192.168.67.100:31134

在这里插入图片描述

4.4 回滚 ----- kubectl rollout 命令

#查看指定 deployment 资源的历史记录,包括版本号、更新时间和事件
kubectl rollout history deployment <deployment资源名称>

#回滚
kubectl rollout undo deployment <deployment资源名称> [--to-revision=N]
                                                      指定版本回滚

#状态
kubectl rollout status deployment <deployment资源名称>
#示例
#查看历史版本
kubectl rollout history deployment/nginx 

#执行回滚到上一个版本
kubectl rollout undo deployment/nginx

#检查回滚状态
kubectl rollout status deployment/nginx

在这里插入图片描述

#执行回滚到指定版本
kubectl rollout undo deployment/nginx --to-revision=1

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1215373.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

外汇天眼:失败的投资者经常陷入两个误区!

一、价格与价值的混淆 在金融领域&#xff0c;价格和价值往往被错误视为同义词。然而&#xff0c;审视市场时&#xff0c;我们会逐渐发现一个“安全差”的重要概念&#xff0c;这是由巴菲特的导师本杰明格雷厄姆提出的。 安全差是指股票的内在价值与市场价格之间的差异。内在…

sklearn笔记:neighbors.NearestNeighbors

1 最近邻 class sklearn.neighbors.NearestNeighbors(*, n_neighbors5, radius1.0, algorithmauto, leaf_size30, metricminkowski, p2, metric_paramsNone, n_jobsNone)邻居搜索算法的选择通过关键字 algorithm 控制&#xff0c;它必须是 [auto, ball_tree, kd_tree, brute] …

分类预测 | Matlab实现PSO-LSTM-Attention粒子群算法优化长短期记忆神经网络融合注意力机制多特征分类预测

分类预测 | Matlab实现PSO-LSTM-Attention粒子群算法优化长短期记忆神经网络融合注意力机制多特征分类预测 目录 分类预测 | Matlab实现PSO-LSTM-Attention粒子群算法优化长短期记忆神经网络融合注意力机制多特征分类预测分类效果基本描述程序设计参考资料 分类效果 基本描述 1…

块设备 I/O 请求送达到外部设备

对于 ext4 文件系统&#xff0c;最后调用的是 ext4_file_write_iter&#xff0c;它将 I/O 的调用分成两种情况&#xff1a; 第一是直接 I/O。最终我们调用的是 generic_file_direct_write&#xff0c;这里调用的是 mapping->a_ops->direct_IO&#xff0c;实际调用的是 e…

[nlp] 损失缩放(Loss Scaling)loss sacle

在深度学习中,由于浮点数的精度限制,当模型参数非常大时,会出现数值溢出的问题,这可能会导致模型训练不稳定。为了解决这个问题,损失缩放(Loss Scaling)技术被引入,它通过缩放损失值来解决这个问题。 在深度学习中,损失缩放技术通常是通过将梯度进行缩放来实现的。具…

太激动了!摄像头终于有画面了!

有了放弃的想法 摄像头APP在我这里好好的&#xff0c;到了老外那里就不能 用。反复试了几套源码&#xff0c;都没有画面。后来干脆把老外说通用的APK反编译后&#xff0c;新做了个APP&#xff0c;结果还是没画面。到了这个时候&#xff0c;我是真的有点沮丧&#xff0c;准备放弃…

局部指令和全局指令的注册和使用

全局指令 先写一个js文件 import store from /store const directivePlugin {install(Vue) {Vue.directive(checkBtn, {inserted(el, binding) {// el: 指令绑定的那个元素对象 dom// binding.value: 指令等于号后面绑定的表达式的值 v-if"xxx"// 拿到el 拿到v…

Git目录不对,即当前文件夹不对应git仓库

报错信息是&#xff1a; fatal: not a git repository (or any of the parent directories): .git 如&#xff1a; 是当前文件夹不对应git仓库&#xff0c;一般在git clone之后&#xff0c;需要进入下一级文件夹才对应仓库。 在文件夹看&#xff0c;本层中没有.git文件夹&…

AGV|RGV小车RFID传感读卡器CK-G06A开发与用户手册技术说明

AGV|RGV小车RFID传感读卡器CK-G06A是一款基于射频识别技术的低频 RFID 标签传感器&#xff0c;传感器工作频率为 125KHZ&#xff0c;同时支持对 EMID&#xff0c;FDX-B 两种格式标签的读取。传感器内部集成了射频部分通 信协议&#xff0c;用户只需通过 RS485 通信接口接收数据…

spring学习笔记-IOC,AOP,事务管理

目录 概述 什么是spring 侵入式的概念 spring的核心 spring的优势 注意 IOC控制反转 概述 核心 容器 DI&#xff0c;dependency injection依赖注入 概念 注入方式 循环依赖 spring如何解决循环依赖 spring生成Bean的方式 Bean属性注入&#xff08;Bean属性赋值…

使用requests库下载文件的技术解析

目录 一、引言 二、使用requests库下载文件的基本流程 三、请求设置和响应处理 1、请求头部设置 2、跟随重定向 3、处理HTTP认证 4、响应状态码检查 5、响应头处理 6、响应体处理 四、异常处理 1、网络连接问题 2、HTTP请求错误 3、文件写入错误 总结 一、引言 …

CDP体系化建设1-CDP综述

前言 从CRM到DMP&#xff0c;再到CDP的横空出世&#xff0c;数据产品领域推陈出新的速度也挺快的。 而了解CDP的人可能会说&#xff0c;CDP和BI一样&#xff0c;糅杂了太多东西&#xff0c;都不知道如何概括。 在我看来&#xff0c;CDP也是一个看似简单&#xff0c;但是需要借助…

2024有哪些免费的mac苹果电脑内存清理工具?

在我们日常使用苹果电脑的过程中&#xff0c;随着时间的推移&#xff0c;可能会发现设备的速度变慢了&#xff0c;甚至出现卡顿的现象。其中一个常见的原因就是程序占用内存过多&#xff0c;导致系统无法高效地运行。那么&#xff0c;苹果电脑内存怎么清理呢&#xff1f;本文将…

媒体行业的3D建模:在影视中创造特效纹理

在线工具推荐&#xff1a; 三维数字孪生场景工具 - GLTF/GLB在线编辑器 - Three.js AI自动纹理化开发 - YOLO 虚幻合成数据生成器 - 3D模型在线转换 - 3D模型预览图生成服务 在本文中&#xff0c;我们将探讨 3D 建模在媒体行业中的作用&#xff0c;特别是它在影视特效创作…

做外贸站群效果怎么样?独立站站群是什么?

外贸站群管理系统的作用&#xff1f;海洋建站和站群的区别&#xff1f; 外贸站群&#xff0c;顾名思义&#xff0c;是指针对外贸业务而建立的多个网站或平台&#xff0c;因此建立有效的外贸站群对于企业来说是一种非常重要的策略。那么&#xff0c;做外贸站群效果怎么样呢&…

当当狸带屏智能显微镜M2来了!显微镜里的顶流

还记得当年上初中生物实验课的时候&#xff0c;第一次用显微镜观察到洋葱表皮细胞时候的感觉吗&#xff1f;那是一种独属于少年的、初次探索这个世界的巨大喜悦。 微观世界&#xff0c;总有我们肉眼无法察觉的奇妙&#xff0c;基本上所有的孩子都天生对微观世界有着极强的好奇心…

YOLO 施工安全帽目标检测模型

在线工具推荐&#xff1a; 三维数字孪生场景工具 - GLTF/GLB在线编辑器 - Three.js AI自动纹理化开发 - YOLO 虚幻合成数据生成器 - 3D模型在线转换 - 3D模型预览图生成服务 头盔自动检测基本上是一个物体检测问题&#xff0c;可以使用深度学习和基于计算机视觉的方法来…

TEMU要求提交RSL Report 铅镉RSL邻苯项目化学物质检测报告

TEMU要求提交RSL Report 铅镉RSL邻苯项目化学物质检测报告 如果您在亚马逊上销售商品&#xff0c;则必须遵守所有适用的欧盟和地方法律法规&#xff0c;以及适用于这些商品和商品信息的亚马逊政策。要在亚马逊上销售某些商品&#xff0c;( xxdu2016 )您需要向我们提供 REACH 符…

1亿美元投资!加拿大量子公司Photonic告别隐身状态

​&#xff08;图片来源&#xff1a;网络&#xff09; 至今加拿大量子公司Photonic总融资额已达1.4亿美元&#xff0c;将推动可扩展、容错的量子计算和网络平台的快速开发。 官宣完成1亿美元新一轮融资 Photonic总部位于加拿大不列颠哥伦比亚省温哥华市&#xff0c;是一家基…

母婴行业数字化发展趋势:内容多元化、服务定制化、人群全覆盖

母婴行业数字化发展趋势&#xff1a;内容多元化、服务定制化、人群全覆盖 引言&#xff1a;时代的高速发展&#xff0c;在经济压力、生活节奏、婚育观念等多重因素的影响下&#xff0c;我国人口出生率自2016年&#xff08;人口出生数量统计1883万&#xff09;到2022年&#xf…